Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(742)

Side by Side Diff: webrtc/video_receive_stream.h

Issue 1166263004: C++11 in-class member initialization in Call configs. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: merge master Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/call.h ('k') | webrtc/video_send_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 18 matching lines...) Expand all
29 enum RtcpMode { kRtcpCompound, kRtcpReducedSize }; 29 enum RtcpMode { kRtcpCompound, kRtcpReducedSize };
30 } // namespace newapi 30 } // namespace newapi
31 31
32 class VideoDecoder; 32 class VideoDecoder;
33 33
34 class VideoReceiveStream { 34 class VideoReceiveStream {
35 public: 35 public:
36 // TODO(mflodman) Move all these settings to VideoDecoder and move the 36 // TODO(mflodman) Move all these settings to VideoDecoder and move the
37 // declaration to common_types.h. 37 // declaration to common_types.h.
38 struct Decoder { 38 struct Decoder {
39 Decoder()
40 : decoder(NULL),
41 payload_type(0),
42 is_renderer(false),
43 expected_delay_ms(0) {}
44 std::string ToString() const; 39 std::string ToString() const;
45 40
46 // The actual decoder instance. 41 // The actual decoder instance.
47 VideoDecoder* decoder; 42 VideoDecoder* decoder = nullptr;
48 43
49 // Received RTP packets with this payload type will be sent to this decoder 44 // Received RTP packets with this payload type will be sent to this decoder
50 // instance. 45 // instance.
51 int payload_type; 46 int payload_type = 0;
52 47
53 // Name of the decoded payload (such as VP8). Maps back to the depacketizer 48 // Name of the decoded payload (such as VP8). Maps back to the depacketizer
54 // used to unpack incoming packets. 49 // used to unpack incoming packets.
55 std::string payload_name; 50 std::string payload_name;
56 51
57 // 'true' if the decoder handles rendering as well. 52 // 'true' if the decoder handles rendering as well.
58 bool is_renderer; 53 bool is_renderer = false;
59 54
60 // The expected delay for decoding and rendering, i.e. the frame will be 55 // The expected delay for decoding and rendering, i.e. the frame will be
61 // delivered this many milliseconds, if possible, earlier than the ideal 56 // delivered this many milliseconds, if possible, earlier than the ideal
62 // render time. 57 // render time.
63 // Note: Ignored if 'renderer' is false. 58 // Note: Ignored if 'renderer' is false.
64 int expected_delay_ms; 59 int expected_delay_ms = 0;
65 }; 60 };
66 61
67 struct Stats { 62 struct Stats {
68 int network_frame_rate = 0; 63 int network_frame_rate = 0;
69 int decode_frame_rate = 0; 64 int decode_frame_rate = 0;
70 int render_frame_rate = 0; 65 int render_frame_rate = 0;
71 66
72 // Decoder stats. 67 // Decoder stats.
73 FrameCounts frame_counts; 68 FrameCounts frame_counts;
74 int decode_ms = 0; 69 int decode_ms = 0;
75 int max_decode_ms = 0; 70 int max_decode_ms = 0;
76 int current_delay_ms = 0; 71 int current_delay_ms = 0;
77 int target_delay_ms = 0; 72 int target_delay_ms = 0;
78 int jitter_buffer_ms = 0; 73 int jitter_buffer_ms = 0;
79 int min_playout_delay_ms = 0; 74 int min_playout_delay_ms = 0;
80 int render_delay_ms = 10; 75 int render_delay_ms = 10;
81 76
82 int total_bitrate_bps = 0; 77 int total_bitrate_bps = 0;
83 int discarded_packets = 0; 78 int discarded_packets = 0;
84 79
85 uint32_t ssrc = 0; 80 uint32_t ssrc = 0;
86 std::string c_name; 81 std::string c_name;
87 StreamDataCounters rtp_stats; 82 StreamDataCounters rtp_stats;
88 RtcpPacketTypeCounter rtcp_packet_type_counts; 83 RtcpPacketTypeCounter rtcp_packet_type_counts;
89 RtcpStatistics rtcp_stats; 84 RtcpStatistics rtcp_stats;
90 }; 85 };
91 86
92 struct Config { 87 struct Config {
93 Config()
94 : renderer(NULL),
95 render_delay_ms(10),
96 audio_channel_id(-1),
97 pre_decode_callback(NULL),
98 pre_render_callback(NULL),
99 target_delay_ms(0) {}
100 std::string ToString() const; 88 std::string ToString() const;
101 89
102 // Decoders for every payload that we can receive. 90 // Decoders for every payload that we can receive.
103 std::vector<Decoder> decoders; 91 std::vector<Decoder> decoders;
104 92
105 // Receive-stream specific RTP settings. 93 // Receive-stream specific RTP settings.
106 struct Rtp { 94 struct Rtp {
107 Rtp()
108 : remote_ssrc(0),
109 local_ssrc(0),
110 rtcp_mode(newapi::kRtcpCompound),
111 remb(false) {}
112 std::string ToString() const; 95 std::string ToString() const;
113 96
114 // Synchronization source (stream identifier) to be received. 97 // Synchronization source (stream identifier) to be received.
115 uint32_t remote_ssrc; 98 uint32_t remote_ssrc = 0;
116 // Sender SSRC used for sending RTCP (such as receiver reports). 99 // Sender SSRC used for sending RTCP (such as receiver reports).
117 uint32_t local_ssrc; 100 uint32_t local_ssrc = 0;
118 101
119 // See RtcpMode for description. 102 // See RtcpMode for description.
120 newapi::RtcpMode rtcp_mode; 103 newapi::RtcpMode rtcp_mode = newapi::kRtcpCompound;
121 104
122 // Extended RTCP settings. 105 // Extended RTCP settings.
123 struct RtcpXr { 106 struct RtcpXr {
124 RtcpXr() : receiver_reference_time_report(false) {}
125
126 // True if RTCP Receiver Reference Time Report Block extension 107 // True if RTCP Receiver Reference Time Report Block extension
127 // (RFC 3611) should be enabled. 108 // (RFC 3611) should be enabled.
128 bool receiver_reference_time_report; 109 bool receiver_reference_time_report = false;
129 } rtcp_xr; 110 } rtcp_xr;
130 111
131 // See draft-alvestrand-rmcat-remb for information. 112 // See draft-alvestrand-rmcat-remb for information.
132 bool remb; 113 bool remb = false;
133 114
134 // See NackConfig for description. 115 // See NackConfig for description.
135 NackConfig nack; 116 NackConfig nack;
136 117
137 // See FecConfig for description. 118 // See FecConfig for description.
138 FecConfig fec; 119 FecConfig fec;
139 120
140 // RTX settings for incoming video payloads that may be received. RTX is 121 // RTX settings for incoming video payloads that may be received. RTX is
141 // disabled if there's no config present. 122 // disabled if there's no config present.
142 struct Rtx { 123 struct Rtx {
143 Rtx() : ssrc(0), payload_type(0) {}
144
145 // SSRCs to use for the RTX streams. 124 // SSRCs to use for the RTX streams.
146 uint32_t ssrc; 125 uint32_t ssrc = 0;
147 126
148 // Payload type to use for the RTX stream. 127 // Payload type to use for the RTX stream.
149 int payload_type; 128 int payload_type = 0;
150 }; 129 };
151 130
152 // Map from video RTP payload type -> RTX config. 131 // Map from video RTP payload type -> RTX config.
153 typedef std::map<int, Rtx> RtxMap; 132 typedef std::map<int, Rtx> RtxMap;
154 RtxMap rtx; 133 RtxMap rtx;
155 134
156 // RTP header extensions used for the received stream. 135 // RTP header extensions used for the received stream.
157 std::vector<RtpExtension> extensions; 136 std::vector<RtpExtension> extensions;
158 } rtp; 137 } rtp;
159 138
160 // VideoRenderer will be called for each decoded frame. 'NULL' disables 139 // VideoRenderer will be called for each decoded frame. 'nullptr' disables
161 // rendering of this stream. 140 // rendering of this stream.
162 VideoRenderer* renderer; 141 VideoRenderer* renderer = nullptr;
163 142
164 // Expected delay needed by the renderer, i.e. the frame will be delivered 143 // Expected delay needed by the renderer, i.e. the frame will be delivered
165 // this many milliseconds, if possible, earlier than the ideal render time. 144 // this many milliseconds, if possible, earlier than the ideal render time.
166 // Only valid if 'renderer' is set. 145 // Only valid if 'renderer' is set.
167 int render_delay_ms; 146 int render_delay_ms = 10;
168 147
169 // Audio channel corresponding to this video stream, used for audio/video 148 // Audio channel corresponding to this video stream, used for audio/video
170 // synchronization. 'audio_channel_id' is ignored if no VoiceEngine is set 149 // synchronization. 'audio_channel_id' is ignored if no VoiceEngine is set
171 // when creating the VideoEngine instance. '-1' disables a/v sync. 150 // when creating the VideoEngine instance. '-1' disables a/v sync.
172 int audio_channel_id; 151 int audio_channel_id = -1;
173 152
174 // Called for each incoming video frame, i.e. in encoded state. E.g. used 153 // Called for each incoming video frame, i.e. in encoded state. E.g. used
175 // when 154 // when
176 // saving the stream to a file. 'NULL' disables the callback. 155 // saving the stream to a file. 'nullptr' disables the callback.
177 EncodedFrameObserver* pre_decode_callback; 156 EncodedFrameObserver* pre_decode_callback = nullptr;
178 157
179 // Called for each decoded frame. E.g. used when adding effects to the 158 // Called for each decoded frame. E.g. used when adding effects to the
180 // decoded 159 // decoded
181 // stream. 'NULL' disables the callback. 160 // stream. 'nullptr' disables the callback.
182 I420FrameCallback* pre_render_callback; 161 I420FrameCallback* pre_render_callback = nullptr;
183 162
184 // Target delay in milliseconds. A positive value indicates this stream is 163 // Target delay in milliseconds. A positive value indicates this stream is
185 // used for streaming instead of a real-time call. 164 // used for streaming instead of a real-time call.
186 int target_delay_ms; 165 int target_delay_ms = 0;
187 }; 166 };
188 167
189 virtual void Start() = 0; 168 virtual void Start() = 0;
190 virtual void Stop() = 0; 169 virtual void Stop() = 0;
191 170
192 // TODO(pbos): Add info on currently-received codec to Stats. 171 // TODO(pbos): Add info on currently-received codec to Stats.
193 virtual Stats GetStats() const = 0; 172 virtual Stats GetStats() const = 0;
194 173
195 protected: 174 protected:
196 virtual ~VideoReceiveStream() {} 175 virtual ~VideoReceiveStream() {}
197 }; 176 };
198 177
199 } // namespace webrtc 178 } // namespace webrtc
200 179
201 #endif // WEBRTC_VIDEO_RECEIVE_STREAM_H_ 180 #endif // WEBRTC_VIDEO_RECEIVE_STREAM_H_
OLDNEW
« no previous file with comments | « webrtc/call.h ('k') | webrtc/video_send_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698