10 #ifndef RTPAUDIOSTREAM_H 11 #define RTPAUDIOSTREAM_H 15 #ifdef QT_MULTIMEDIA_LIB 19 #include <epan/address.h> 36 class RtpAudioStream :
public QObject
40 enum TimingMode { JitterBuffer, RtpTimestamp, Uninterrupted };
42 explicit RtpAudioStream(QObject *parent,
struct _rtp_stream_info *rtp_stream);
48 void reset(
double start_rel_time);
51 double startRelTime()
const {
return start_rel_time_; }
52 double stopRelTime()
const {
return stop_rel_time_; }
53 unsigned sampleRate()
const {
return audio_out_rate_; }
54 const QStringList payloadNames()
const;
60 const QVector<double> visualTimestamps(
bool relative =
true);
67 const QVector<double> visualSamples(
int y_offset = 0);
73 const QVector<double> outOfSequenceTimestamps(
bool relative =
true);
74 int outOfSequence() {
return out_of_seq_timestamps_.size(); }
80 const QVector<double> outOfSequenceSamples(
int y_offset = 0);
86 const QVector<double> jitterDroppedTimestamps(
bool relative =
true);
87 int jitterDropped() {
return jitter_drop_timestamps_.size(); }
93 const QVector<double> jitterDroppedSamples(
int y_offset = 0);
99 const QVector<double> wrongTimestampTimestamps(
bool relative =
true);
100 int wrongTimestamps() {
return wrong_timestamp_timestamps_.size(); }
106 const QVector<double> wrongTimestampSamples(
int y_offset = 0);
112 const QVector<double> insertedSilenceTimestamps(
bool relative =
true);
113 int insertedSilences() {
return silence_timestamps_.size(); }
119 const QVector<double> insertedSilenceSamples(
int y_offset = 0);
121 quint32 nearestPacket(
double timestamp,
bool is_relative =
true);
123 QRgb color() {
return color_; }
124 void setColor(QRgb color) { color_ = color; }
126 QAudio::State outputState()
const;
128 void setJitterBufferSize(
int jitter_buffer_size) { jitter_buffer_size_ = jitter_buffer_size; }
129 void setTimingMode(TimingMode timing_mode) { timing_mode_ = timing_mode; }
132 void startedPlaying();
133 void processedSecs(
double secs);
134 void playbackError(
const QString error_msg);
135 void finishedPlaying();
150 QVector<struct _rtp_packet *>rtp_packets_;
151 QTemporaryFile *tempfile_;
152 struct _GHashTable *decoders_hash_;
153 QList<const struct _rtp_stream_info *>rtp_streams_;
154 double global_start_rel_time_;
155 double start_abs_offset_;
156 double start_rel_time_;
157 double stop_rel_time_;
158 quint32 audio_out_rate_;
159 QSet<QString> payload_names_;
162 QAudioOutput *audio_output_;
163 QMap<double, quint32> packet_timestamps_;
164 QVector<qint16> visual_samples_;
165 QVector<double> out_of_seq_timestamps_;
166 QVector<double> jitter_drop_timestamps_;
167 QVector<double> wrong_timestamp_timestamps_;
168 QVector<double> silence_timestamps_;
169 qint16 max_sample_val_;
172 int jitter_buffer_size_;
173 TimingMode timing_mode_;
175 void writeSilence(
int samples);
176 const QString formatDescription(
const QAudioFormat & format);
177 QString currentOutputDevice();
180 void outputStateChanged(QAudio::State new_state);
184 #endif // QT_MULTIMEDIA_LIB 186 #endif // RTPAUDIOSTREAM_H Definition: packet_info.h:44
Definition: resample.c:113
Definition: packet-rtp.h:26
Definition: rtp_stream.h:36