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}
This commit is contained in:
Steve Anton 2018-01-09 16:38:15 -08:00 committed by Commit Bot
parent dfe9ffc583
commit 002f921c5d

View File

@ -506,31 +506,16 @@ class MediaChannel : public sigslot::has_slots<> {
// 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 @@ struct MediaSenderInfo {
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 MediaSenderInfo {
};
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 @@ struct MediaReceiverInfo {
}
}
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 MediaReceiverInfo {
};
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 VideoReceiverInfo : public MediaReceiverInfo {
};
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 @@ struct ReceiveDataParams {
// 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 @@ struct SendDataParams {
// 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 };