Chromium Code Reviews| Index: media/cast/sender/video_encoder_impl.cc |
| diff --git a/media/cast/sender/video_encoder_impl.cc b/media/cast/sender/video_encoder_impl.cc |
| index 52ece8ca22e4d05a922516de704e161f91b6bb29..4efe32044a80c2d299691bbe6cb570e379935500 100644 |
| --- a/media/cast/sender/video_encoder_impl.cc |
| +++ b/media/cast/sender/video_encoder_impl.cc |
| @@ -54,7 +54,8 @@ void EncodeVideoFrameOnEncoderThread( |
| VideoEncoderImpl::VideoEncoderImpl( |
| scoped_refptr<CastEnvironment> cast_environment, |
| - const VideoSenderConfig& video_config) |
| + const VideoSenderConfig& video_config, |
| + const CastInitializationCallback& initialization_cb) |
| : cast_environment_(cast_environment) { |
| CHECK(cast_environment_->HasVideoThread()); |
| if (video_config.codec == CODEC_VIDEO_VP8) { |
| @@ -75,6 +76,15 @@ VideoEncoderImpl::VideoEncoderImpl( |
| dynamic_config_.key_frame_requested = false; |
| dynamic_config_.latest_frame_id_to_reference = kStartFrameId; |
| dynamic_config_.bit_rate = video_config.start_bitrate; |
| + |
| + if (!initialization_cb.is_null()) { |
|
hubbe
2015/01/31 00:55:51
Why do we want to allow the initialization_cb to b
miu
2015/01/31 04:53:04
For now, just to placate unit test code that doesn
|
| + cast_environment_->PostTask( |
| + CastEnvironment::MAIN, |
| + FROM_HERE, |
| + base::Bind(initialization_cb, |
| + encoder_.get() ? STATUS_VIDEO_INITIALIZED : |
| + STATUS_UNSUPPORTED_VIDEO_CODEC)); |
| + } |
| } |
| VideoEncoderImpl::~VideoEncoderImpl() { |
| @@ -88,11 +98,20 @@ VideoEncoderImpl::~VideoEncoderImpl() { |
| } |
| } |
| +bool VideoEncoderImpl::CanEncodeVariedFrameSizes() const { |
| + // Both the VP8Encoder and FakeSoftwareVideoEncoder support calls to |
| + // EncodeVideoFrame() with different frame sizes. |
| + return true; |
| +} |
| + |
| bool VideoEncoderImpl::EncodeVideoFrame( |
| const scoped_refptr<media::VideoFrame>& video_frame, |
| const base::TimeTicks& reference_time, |
| const FrameEncodedCallback& frame_encoded_callback) { |
| DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
| + DCHECK(!video_frame->visible_rect().IsEmpty()); |
| + DCHECK(!frame_encoded_callback.is_null()); |
| + |
| cast_environment_->PostTask(CastEnvironment::VIDEO, |
| FROM_HERE, |
| base::Bind(&EncodeVideoFrameOnEncoderThread, |