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