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

Side by Side Diff: webrtc/video/video_receive_stream.cc

Issue 1428293003: Add VideoCodec::PreferDecodeLate (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Also renamed method in generic_decoder. Created 5 years 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
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 20 matching lines...) Expand all
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698