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

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: Rebased 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
« no previous file with comments | « webrtc/video/video_decoder.cc ('k') | webrtc/video/vie_channel.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 21 matching lines...) Expand all
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
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
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
OLDNEW
« no previous file with comments | « webrtc/video/video_decoder.cc ('k') | webrtc/video/vie_channel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698