OLD | NEW |
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 21 matching lines...) Expand all Loading... |
32 return true; | 32 return true; |
33 } | 33 } |
34 return false; | 34 return false; |
35 } | 35 } |
36 | 36 |
37 std::string VideoReceiveStream::Decoder::ToString() const { | 37 std::string VideoReceiveStream::Decoder::ToString() const { |
38 std::stringstream ss; | 38 std::stringstream ss; |
39 ss << "{decoder: " << (decoder != nullptr ? "(VideoDecoder)" : "nullptr"); | 39 ss << "{decoder: " << (decoder != nullptr ? "(VideoDecoder)" : "nullptr"); |
40 ss << ", payload_type: " << payload_type; | 40 ss << ", payload_type: " << payload_type; |
41 ss << ", payload_name: " << payload_name; | 41 ss << ", payload_name: " << payload_name; |
42 ss << ", is_renderer: " << (is_renderer ? "yes" : "no"); | |
43 ss << ", expected_delay_ms: " << expected_delay_ms; | |
44 ss << '}'; | 42 ss << '}'; |
45 | 43 |
46 return ss.str(); | 44 return ss.str(); |
47 } | 45 } |
48 | 46 |
49 std::string VideoReceiveStream::Config::ToString() const { | 47 std::string VideoReceiveStream::Config::ToString() const { |
50 std::stringstream ss; | 48 std::stringstream ss; |
51 ss << "{decoders: ["; | 49 ss << "{decoders: ["; |
52 for (size_t i = 0; i < decoders.size(); ++i) { | 50 for (size_t i = 0; i < decoders.size(); ++i) { |
53 ss << decoders[i].ToString(); | 51 ss << decoders[i].ToString(); |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 RTC_DCHECK(!config_.decoders.empty()); | 260 RTC_DCHECK(!config_.decoders.empty()); |
263 std::set<int> decoder_payload_types; | 261 std::set<int> decoder_payload_types; |
264 for (size_t i = 0; i < config_.decoders.size(); ++i) { | 262 for (size_t i = 0; i < config_.decoders.size(); ++i) { |
265 const Decoder& decoder = config_.decoders[i]; | 263 const Decoder& decoder = config_.decoders[i]; |
266 RTC_CHECK(decoder.decoder); | 264 RTC_CHECK(decoder.decoder); |
267 RTC_CHECK(decoder_payload_types.find(decoder.payload_type) == | 265 RTC_CHECK(decoder_payload_types.find(decoder.payload_type) == |
268 decoder_payload_types.end()) | 266 decoder_payload_types.end()) |
269 << "Duplicate payload type (" << decoder.payload_type | 267 << "Duplicate payload type (" << decoder.payload_type |
270 << ") for different decoders."; | 268 << ") for different decoders."; |
271 decoder_payload_types.insert(decoder.payload_type); | 269 decoder_payload_types.insert(decoder.payload_type); |
272 RTC_CHECK_EQ(0, | 270 vie_channel_->RegisterExternalDecoder(decoder.payload_type, |
273 vie_channel_->RegisterExternalDecoder( | 271 decoder.decoder); |
274 decoder.payload_type, decoder.decoder, decoder.is_renderer, | |
275 decoder.is_renderer ? decoder.expected_delay_ms | |
276 : config.render_delay_ms)); | |
277 | 272 |
278 VideoCodec codec = CreateDecoderVideoCodec(decoder); | 273 VideoCodec codec = CreateDecoderVideoCodec(decoder); |
279 | 274 |
280 RTC_CHECK_EQ(0, vie_channel_->SetReceiveCodec(codec)); | 275 RTC_CHECK_EQ(0, vie_channel_->SetReceiveCodec(codec)); |
281 } | 276 } |
282 | 277 |
283 incoming_video_stream_.reset(new IncomingVideoStream( | 278 incoming_video_stream_.reset(new IncomingVideoStream( |
284 0, config.renderer ? config.renderer->SmoothsRenderedFrames() : false)); | 279 0, config.renderer ? config.renderer->SmoothsRenderedFrames() : false)); |
285 incoming_video_stream_->SetExpectedRenderDelay(config.render_delay_ms); | 280 incoming_video_stream_->SetExpectedRenderDelay(config.render_delay_ms); |
| 281 vie_channel_->SetExpectedRenderDelay(config.render_delay_ms); |
286 incoming_video_stream_->SetExternalCallback(this); | 282 incoming_video_stream_->SetExternalCallback(this); |
287 vie_channel_->SetIncomingVideoStream(incoming_video_stream_.get()); | 283 vie_channel_->SetIncomingVideoStream(incoming_video_stream_.get()); |
288 | 284 |
289 vie_channel_->RegisterPreDecodeImageCallback(this); | 285 vie_channel_->RegisterPreDecodeImageCallback(this); |
290 vie_channel_->RegisterPreRenderCallback(this); | 286 vie_channel_->RegisterPreRenderCallback(this); |
291 } | 287 } |
292 | 288 |
293 VideoReceiveStream::~VideoReceiveStream() { | 289 VideoReceiveStream::~VideoReceiveStream() { |
294 LOG(LS_INFO) << "~VideoReceiveStream: " << config_.ToString(); | 290 LOG(LS_INFO) << "~VideoReceiveStream: " << config_.ToString(); |
295 incoming_video_stream_->Stop(); | 291 incoming_video_stream_->Stop(); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 return 0; | 380 return 0; |
385 } | 381 } |
386 | 382 |
387 void VideoReceiveStream::SignalNetworkState(NetworkState state) { | 383 void VideoReceiveStream::SignalNetworkState(NetworkState state) { |
388 vie_channel_->SetRTCPMode(state == kNetworkUp ? config_.rtp.rtcp_mode | 384 vie_channel_->SetRTCPMode(state == kNetworkUp ? config_.rtp.rtcp_mode |
389 : RtcpMode::kOff); | 385 : RtcpMode::kOff); |
390 } | 386 } |
391 | 387 |
392 } // namespace internal | 388 } // namespace internal |
393 } // namespace webrtc | 389 } // namespace webrtc |
OLD | NEW |