Inline default constructors for MediaChannel structs
Bug: None
Change-Id: I72b534c49d3f26e988d1c92aae09435a9483a930
Reviewed-on: https://webrtc-review.googlesource.com/37143
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21540}
diff --git a/media/base/mediachannel.h b/media/base/mediachannel.h
index 5b75329..f4753ec 100644
--- a/media/base/mediachannel.h
+++ b/media/base/mediachannel.h
@@ -506,31 +506,16 @@
// Information about an SSRC.
// This data may be locally recorded, or received in an RTCP SR or RR.
struct SsrcSenderInfo {
- SsrcSenderInfo()
- : ssrc(0),
- timestamp(0) {
- }
- uint32_t ssrc;
- double timestamp; // NTP timestamp, represented as seconds since epoch.
+ uint32_t ssrc = 0;
+ double timestamp = 0.0; // NTP timestamp, represented as seconds since epoch.
};
struct SsrcReceiverInfo {
- SsrcReceiverInfo()
- : ssrc(0),
- timestamp(0) {
- }
- uint32_t ssrc;
- double timestamp;
+ uint32_t ssrc = 0;
+ double timestamp = 0.0;
};
struct MediaSenderInfo {
- MediaSenderInfo()
- : bytes_sent(0),
- packets_sent(0),
- packets_lost(0),
- fraction_lost(0.0),
- rtt_ms(0) {
- }
void add_ssrc(const SsrcSenderInfo& stat) {
local_stats.push_back(stat);
}
@@ -560,11 +545,11 @@
return 0;
}
}
- int64_t bytes_sent;
- int packets_sent;
- int packets_lost;
- float fraction_lost;
- int64_t rtt_ms;
+ int64_t bytes_sent = 0;
+ int packets_sent = 0;
+ int packets_lost = 0;
+ float fraction_lost = 0.0f;
+ int64_t rtt_ms = 0;
std::string codec_name;
rtc::Optional<int> codec_payload_type;
std::vector<SsrcSenderInfo> local_stats;
@@ -572,12 +557,6 @@
};
struct MediaReceiverInfo {
- MediaReceiverInfo()
- : bytes_rcvd(0),
- packets_rcvd(0),
- packets_lost(0),
- fraction_lost(0.0) {
- }
void add_ssrc(const SsrcReceiverInfo& stat) {
local_stats.push_back(stat);
}
@@ -607,10 +586,10 @@
}
}
- int64_t bytes_rcvd;
- int packets_rcvd;
- int packets_lost;
- float fraction_lost;
+ int64_t bytes_rcvd = 0;
+ int packets_rcvd = 0;
+ int packets_lost = 0;
+ float fraction_lost = 0.0f;
std::string codec_name;
rtc::Optional<int> codec_payload_type;
std::vector<SsrcReceiverInfo> local_stats;
@@ -618,227 +597,140 @@
};
struct VoiceSenderInfo : public MediaSenderInfo {
- VoiceSenderInfo()
- : ext_seqnum(0),
- jitter_ms(0),
- audio_level(0),
- total_input_energy(0.0),
- total_input_duration(0.0),
- echo_delay_median_ms(0),
- echo_delay_std_ms(0),
- echo_return_loss(0),
- echo_return_loss_enhancement(0),
- residual_echo_likelihood(0.0f),
- residual_echo_likelihood_recent_max(0.0f),
- typing_noise_detected(false) {}
-
- int ext_seqnum;
- int jitter_ms;
- int audio_level;
+ int ext_seqnum = 0;
+ int jitter_ms = 0;
+ int audio_level = 0;
// See description of "totalAudioEnergy" in the WebRTC stats spec:
// https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamtrackstats-totalaudioenergy
- double total_input_energy;
- double total_input_duration;
+ double total_input_energy = 0.0;
+ double total_input_duration = 0.0;
// TODO(bugs.webrtc.org/8572): Remove APM stats from this struct, since they
// are no longer needed now that we have apm_statistics.
- int echo_delay_median_ms;
- int echo_delay_std_ms;
- int echo_return_loss;
- int echo_return_loss_enhancement;
- float residual_echo_likelihood;
- float residual_echo_likelihood_recent_max;
- bool typing_noise_detected;
+ int echo_delay_median_ms = 0;
+ int echo_delay_std_ms = 0;
+ int echo_return_loss = 0;
+ int echo_return_loss_enhancement = 0;
+ float residual_echo_likelihood = 0.0f;
+ float residual_echo_likelihood_recent_max = 0.0f;
+ bool typing_noise_detected = false;
webrtc::ANAStats ana_statistics;
webrtc::AudioProcessingStats apm_statistics;
};
struct VoiceReceiverInfo : public MediaReceiverInfo {
- VoiceReceiverInfo()
- : ext_seqnum(0),
- jitter_ms(0),
- jitter_buffer_ms(0),
- jitter_buffer_preferred_ms(0),
- delay_estimate_ms(0),
- audio_level(0),
- total_output_energy(0.0),
- total_samples_received(0),
- total_output_duration(0.0),
- concealed_samples(0),
- concealment_events(0),
- jitter_buffer_delay_seconds(0),
- expand_rate(0),
- speech_expand_rate(0),
- secondary_decoded_rate(0),
- secondary_discarded_rate(0),
- accelerate_rate(0),
- preemptive_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),
- decoding_muted_output(0),
- capture_start_ntp_time_ms(-1) {}
-
- int ext_seqnum;
- int jitter_ms;
- int jitter_buffer_ms;
- int jitter_buffer_preferred_ms;
- int delay_estimate_ms;
- int audio_level;
+ int ext_seqnum = 0;
+ int jitter_ms = 0;
+ int jitter_buffer_ms = 0;
+ int jitter_buffer_preferred_ms = 0;
+ int delay_estimate_ms = 0;
+ int audio_level = 0;
// Stats below correspond to similarly-named fields in the WebRTC stats spec.
// https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamtrackstats
- double total_output_energy;
- uint64_t total_samples_received;
- double total_output_duration;
- uint64_t concealed_samples;
- uint64_t concealment_events;
- double jitter_buffer_delay_seconds;
+ double total_output_energy = 0.0;
+ uint64_t total_samples_received = 0;
+ double total_output_duration = 0.0;
+ uint64_t concealed_samples = 0;
+ uint64_t concealment_events = 0;
+ double jitter_buffer_delay_seconds = 0;
// Stats below DO NOT correspond directly to anything in the WebRTC stats
// fraction of synthesized audio inserted through expansion.
- float expand_rate;
+ float expand_rate = 0.0f;
// fraction of synthesized speech inserted through expansion.
- float speech_expand_rate;
+ float speech_expand_rate = 0.0f;
// fraction of data out of secondary decoding, including FEC and RED.
- float secondary_decoded_rate;
+ float secondary_decoded_rate = 0.0f;
// Fraction of secondary data, including FEC and RED, that is discarded.
// Discarding of secondary data can be caused by the reception of the primary
// data, obsoleting the secondary data. It can also be caused by early
// or late arrival of secondary data. This metric is the percentage of
// discarded secondary data since last query of receiver info.
- float secondary_discarded_rate;
+ float secondary_discarded_rate = 0.0f;
// Fraction of data removed through time compression.
- float accelerate_rate;
+ float accelerate_rate = 0.0f;
// Fraction of data inserted through time stretching.
- float preemptive_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;
- int decoding_muted_output;
+ float preemptive_expand_rate = 0.0f;
+ int decoding_calls_to_silence_generator = 0;
+ int decoding_calls_to_neteq = 0;
+ int decoding_normal = 0;
+ int decoding_plc = 0;
+ int decoding_cng = 0;
+ int decoding_plc_cng = 0;
+ int decoding_muted_output = 0;
// Estimated capture start time in NTP time in ms.
- int64_t capture_start_ntp_time_ms;
+ int64_t capture_start_ntp_time_ms = -1;
};
struct VideoSenderInfo : public MediaSenderInfo {
- VideoSenderInfo()
- : packets_cached(0),
- firs_rcvd(0),
- plis_rcvd(0),
- nacks_rcvd(0),
- send_frame_width(0),
- send_frame_height(0),
- framerate_input(0),
- framerate_sent(0),
- nominal_bitrate(0),
- preferred_bitrate(0),
- adapt_reason(0),
- adapt_changes(0),
- avg_encode_ms(0),
- encode_usage_percent(0),
- frames_encoded(0),
- has_entered_low_resolution(false),
- content_type(webrtc::VideoContentType::UNSPECIFIED) {}
-
std::vector<SsrcGroup> ssrc_groups;
// TODO(hbos): Move this to |VideoMediaInfo::send_codecs|?
std::string encoder_implementation_name;
- int packets_cached;
- int firs_rcvd;
- int plis_rcvd;
- int nacks_rcvd;
- int send_frame_width;
- int send_frame_height;
- int framerate_input;
- int framerate_sent;
- int nominal_bitrate;
- int preferred_bitrate;
- int adapt_reason;
- int adapt_changes;
- int avg_encode_ms;
- int encode_usage_percent;
- uint32_t frames_encoded;
- bool has_entered_low_resolution;
+ int packets_cached = 0;
+ int firs_rcvd = 0;
+ int plis_rcvd = 0;
+ int nacks_rcvd = 0;
+ int send_frame_width = 0;
+ int send_frame_height = 0;
+ int framerate_input = 0;
+ int framerate_sent = 0;
+ int nominal_bitrate = 0;
+ int preferred_bitrate = 0;
+ int adapt_reason = 0;
+ int adapt_changes = 0;
+ int avg_encode_ms = 0;
+ int encode_usage_percent = 0;
+ uint32_t frames_encoded = 0;
+ bool has_entered_low_resolution = false;
rtc::Optional<uint64_t> qp_sum;
- webrtc::VideoContentType content_type;
+ webrtc::VideoContentType content_type = webrtc::VideoContentType::UNSPECIFIED;
};
struct VideoReceiverInfo : public MediaReceiverInfo {
- VideoReceiverInfo()
- : packets_concealed(0),
- firs_sent(0),
- plis_sent(0),
- nacks_sent(0),
- frame_width(0),
- frame_height(0),
- framerate_rcvd(0),
- framerate_decoded(0),
- framerate_output(0),
- framerate_render_input(0),
- framerate_render_output(0),
- frames_received(0),
- frames_decoded(0),
- frames_rendered(0),
- interframe_delay_max_ms(-1),
- content_type(webrtc::VideoContentType::UNSPECIFIED),
- decode_ms(0),
- max_decode_ms(0),
- jitter_buffer_ms(0),
- min_playout_delay_ms(0),
- render_delay_ms(0),
- target_delay_ms(0),
- current_delay_ms(0),
- capture_start_ntp_time_ms(-1) {}
-
std::vector<SsrcGroup> ssrc_groups;
// TODO(hbos): Move this to |VideoMediaInfo::receive_codecs|?
std::string decoder_implementation_name;
- int packets_concealed;
- int firs_sent;
- int plis_sent;
- int nacks_sent;
- int frame_width;
- int frame_height;
- int framerate_rcvd;
- int framerate_decoded;
- int framerate_output;
+ int packets_concealed = 0;
+ int firs_sent = 0;
+ int plis_sent = 0;
+ int nacks_sent = 0;
+ int frame_width = 0;
+ int frame_height = 0;
+ int framerate_rcvd = 0;
+ int framerate_decoded = 0;
+ int framerate_output = 0;
// Framerate as sent to the renderer.
- int framerate_render_input;
+ int framerate_render_input = 0;
// Framerate that the renderer reports.
- int framerate_render_output;
- uint32_t frames_received;
- uint32_t frames_decoded;
- uint32_t frames_rendered;
+ int framerate_render_output = 0;
+ uint32_t frames_received = 0;
+ uint32_t frames_decoded = 0;
+ uint32_t frames_rendered = 0;
rtc::Optional<uint64_t> qp_sum;
- int64_t interframe_delay_max_ms;
+ int64_t interframe_delay_max_ms = -1;
- webrtc::VideoContentType content_type;
+ webrtc::VideoContentType content_type = webrtc::VideoContentType::UNSPECIFIED;
// All stats below are gathered per-VideoReceiver, but some will be correlated
// across MediaStreamTracks. NOTE(hta): when sinking stats into per-SSRC
// structures, reflect this in the new layout.
// Current frame decode latency.
- int decode_ms;
+ int decode_ms = 0;
// Maximum observed frame decode latency.
- int max_decode_ms;
+ int max_decode_ms = 0;
// Jitter (network-related) latency.
- int jitter_buffer_ms;
+ int jitter_buffer_ms = 0;
// Requested minimum playout latency.
- int min_playout_delay_ms;
+ int min_playout_delay_ms = 0;
// Requested latency to account for rendering delay.
- int render_delay_ms;
+ int render_delay_ms = 0;
// Target overall delay: network+decode+render, accounting for
// min_playout_delay_ms.
- int target_delay_ms;
+ int target_delay_ms = 0;
// Current overall delay, possibly ramping towards target_delay_ms.
- int current_delay_ms;
+ int current_delay_ms = 0;
// Estimated capture start time in NTP time in ms.
- int64_t capture_start_ntp_time_ms;
+ int64_t capture_start_ntp_time_ms = -1;
// Timing frame info: all important timestamps for a full lifetime of a
// single 'timing frame'.
@@ -846,39 +738,21 @@
};
struct DataSenderInfo : public MediaSenderInfo {
- DataSenderInfo()
- : ssrc(0) {
- }
-
- uint32_t ssrc;
+ uint32_t ssrc = 0;
};
struct DataReceiverInfo : public MediaReceiverInfo {
- DataReceiverInfo()
- : ssrc(0) {
- }
-
- uint32_t ssrc;
+ uint32_t ssrc = 0;
};
struct BandwidthEstimationInfo {
- BandwidthEstimationInfo()
- : available_send_bandwidth(0),
- available_recv_bandwidth(0),
- target_enc_bitrate(0),
- actual_enc_bitrate(0),
- retransmit_bitrate(0),
- transmit_bitrate(0),
- bucket_delay(0) {
- }
-
- int available_send_bandwidth;
- int available_recv_bandwidth;
- int target_enc_bitrate;
- int actual_enc_bitrate;
- int retransmit_bitrate;
- int transmit_bitrate;
- int64_t bucket_delay;
+ int available_send_bandwidth = 0;
+ int available_recv_bandwidth = 0;
+ int target_enc_bitrate = 0;
+ int actual_enc_bitrate = 0;
+ int retransmit_bitrate = 0;
+ int transmit_bitrate = 0;
+ int64_t bucket_delay = 0;
};
// Maps from payload type to |RtpCodecParameters|.
@@ -1120,16 +994,14 @@
// RTP data channels use SSRCs, SCTP data channels use SIDs.
union {
uint32_t ssrc;
- int sid;
+ int sid = 0;
};
// The type of message (binary, text, or control).
- DataMessageType type;
+ DataMessageType type = DMT_TEXT;
// A per-stream value incremented per packet in the stream.
- int seq_num;
+ int seq_num = 0;
// A per-stream value monotonically increasing with time.
- int timestamp;
-
- ReceiveDataParams() : sid(0), type(DMT_TEXT), seq_num(0), timestamp(0) {}
+ int timestamp = 0;
};
struct SendDataParams {
@@ -1137,34 +1009,26 @@
// RTP data channels use SSRCs, SCTP data channels use SIDs.
union {
uint32_t ssrc;
- int sid;
+ int sid = 0;
};
// The type of message (binary, text, or control).
- DataMessageType type;
+ DataMessageType type = DMT_TEXT;
+ // TODO(pthatcher): Make |ordered| and |reliable| true by default?
// For SCTP, whether to send messages flagged as ordered or not.
// If false, messages can be received out of order.
- bool ordered;
+ bool ordered = false;
// For SCTP, whether the messages are sent reliably or not.
// If false, messages may be lost.
- bool reliable;
+ bool reliable = false;
// For SCTP, if reliable == false, provide partial reliability by
// resending up to this many times. Either count or millis
// is supported, not both at the same time.
- int max_rtx_count;
+ int max_rtx_count = 0;
// For SCTP, if reliable == false, provide partial reliability by
// resending for up to this many milliseconds. Either count or millis
// is supported, not both at the same time.
- int max_rtx_ms;
-
- SendDataParams()
- : sid(0),
- type(DMT_TEXT),
- // TODO(pthatcher): Make these true by default?
- ordered(false),
- reliable(false),
- max_rtx_count(0),
- max_rtx_ms(0) {}
+ int max_rtx_ms = 0;
};
enum SendDataResult { SDR_SUCCESS, SDR_ERROR, SDR_BLOCK };