adjust_agc_delta.SetFrom(change.adjust_agc_delta);
experimental_agc.SetFrom(change.experimental_agc);
experimental_aec.SetFrom(change.experimental_aec);
+ experimental_ns.SetFrom(change.experimental_ns);
aec_dump.SetFrom(change.aec_dump);
experimental_acm.SetFrom(change.experimental_acm);
tx_agc_target_dbov.SetFrom(change.tx_agc_target_dbov);
conference_mode == o.conference_mode &&
experimental_agc == o.experimental_agc &&
experimental_aec == o.experimental_aec &&
+ experimental_ns == o.experimental_ns &&
adjust_agc_delta == o.adjust_agc_delta &&
aec_dump == o.aec_dump &&
experimental_acm == o.experimental_acm &&
ost << ToStringIfSet("agc_delta", adjust_agc_delta);
ost << ToStringIfSet("experimental_agc", experimental_agc);
ost << ToStringIfSet("experimental_aec", experimental_aec);
+ ost << ToStringIfSet("experimental_ns", experimental_ns);
ost << ToStringIfSet("aec_dump", aec_dump);
ost << ToStringIfSet("experimental_acm", experimental_acm);
ost << ToStringIfSet("tx_agc_target_dbov", tx_agc_target_dbov);
Settable<int> adjust_agc_delta;
Settable<bool> experimental_agc;
Settable<bool> experimental_aec;
+ Settable<bool> experimental_ns;
Settable<bool> aec_dump;
Settable<bool> experimental_acm;
// Note that tx_agc_* only applies to non-experimental AGC.
const std::vector<RtpHeaderExtension>& extensions) = 0;
virtual bool SetSendRtpHeaderExtensions(
const std::vector<RtpHeaderExtension>& extensions) = 0;
+ // Returns the absoulte sendtime extension id value from media channel.
+ virtual int GetRtpSendTimeExtnId() const {
+ return -1;
+ }
// Sets the initial bandwidth to use when sending starts.
virtual bool SetStartSendBandwidth(int bps) = 0;
// Sets the maximum allowed bandwidth to use when sending data.
jitter_buffer_preferred_ms(0),
delay_estimate_ms(0),
audio_level(0),
- expand_rate(0) {
+ expand_rate(0),
+ decoding_calls_to_silence_generator(0),
+ decoding_calls_to_neteq(0),
+ decoding_normal(0),
+ decoding_plc(0),
+ decoding_cng(0),
+ decoding_plc_cng(0) {
}
int ext_seqnum;
int audio_level;
// fraction of synthesized speech inserted through pre-emptive expansion
float expand_rate;
+ int decoding_calls_to_silence_generator;
+ int decoding_calls_to_neteq;
+ int decoding_normal;
+ int decoding_plc;
+ int decoding_cng;
+ int decoding_plc_cng;
};
struct VideoSenderInfo : public MediaSenderInfo {
: packets_cached(0),
firs_rcvd(0),
nacks_rcvd(0),
- frame_width(0),
- frame_height(0),
+ input_frame_width(0),
+ input_frame_height(0),
+ send_frame_width(0),
+ send_frame_height(0),
framerate_input(0),
framerate_sent(0),
nominal_bitrate(0),
int packets_cached;
int firs_rcvd;
int nacks_rcvd;
- int frame_width;
- int frame_height;
+ int input_frame_width;
+ int input_frame_height;
+ int send_frame_width;
+ int send_frame_height;
int framerate_input;
int framerate_sent;
int nominal_bitrate;
actual_enc_bitrate(0),
retransmit_bitrate(0),
transmit_bitrate(0),
- bucket_delay(0) {
+ bucket_delay(0),
+ total_received_propagation_delta_ms(0) {
}
int available_send_bandwidth;
int retransmit_bitrate;
int transmit_bitrate;
int bucket_delay;
+ // The following stats are only valid when
+ // StatsOptions::include_received_propagation_stats is true.
+ int total_received_propagation_delta_ms;
+ std::vector<int> recent_received_propagation_delta_ms;
+ std::vector<int64> recent_received_packet_group_arrival_time_ms;
};
struct VoiceMediaInfo {
std::vector<DataReceiverInfo> receivers;
};
+struct StatsOptions {
+ StatsOptions() : include_received_propagation_stats(false) {}
+
+ bool include_received_propagation_stats;
+};
+
class VoiceMediaChannel : public MediaChannel {
public:
enum Error {
// |capturer|. If |ssrc| is non zero create a new stream with |ssrc| as SSRC.
virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) = 0;
// Gets quality stats for the channel.
- virtual bool GetStats(VideoMediaInfo* info) = 0;
+ virtual bool GetStats(const StatsOptions& options, VideoMediaInfo* info) = 0;
+ // This is needed for MediaMonitor to use the same template for voice, video
+ // and data MediaChannels.
+ bool GetStats(VideoMediaInfo* info) {
+ return GetStats(StatsOptions(), info);
+ }
// Send an intra frame to the receivers.
virtual bool SendIntraFrame() = 0;