| Index: remoting/codec/video_encoder_vpx.cc
|
| diff --git a/remoting/codec/video_encoder_vpx.cc b/remoting/codec/video_encoder_vpx.cc
|
| index 0021b8acfdb1f98fb0742b759423677e999f1729..e281ef58efbc9c9e092c3b2efadf04b528dbebdf 100644
|
| --- a/remoting/codec/video_encoder_vpx.cc
|
| +++ b/remoting/codec/video_encoder_vpx.cc
|
| @@ -187,7 +187,7 @@ void CreateImage(bool use_i444,
|
| image->fmt = VPX_IMG_FMT_I444;
|
| image->x_chroma_shift = 0;
|
| image->y_chroma_shift = 0;
|
| - } else { // I420
|
| + } else { // I420
|
| image->fmt = VPX_IMG_FMT_YV12;
|
| image->x_chroma_shift = 1;
|
| image->y_chroma_shift = 1;
|
| @@ -229,7 +229,7 @@ void CreateImage(bool use_i444,
|
| *out_image_buffer = std::move(image_buffer);
|
| }
|
|
|
| -} // namespace
|
| +} // namespace
|
|
|
| // static
|
| std::unique_ptr<VideoEncoderVpx> VideoEncoderVpx::CreateForVP8() {
|
| @@ -261,7 +261,7 @@ void VideoEncoderVpx::SetLosslessColor(bool want_lossless) {
|
| lossless_color_ = want_lossless;
|
| // TODO(wez): Switch to ConfigureCodec() path once libvpx supports it.
|
| // See https://code.google.com/p/webm/issues/detail?id=913.
|
| - //if (codec_)
|
| + // if (codec_)
|
| // Configure(webrtc::DesktopSize(codec_->config.enc->g_w,
|
| // codec_->config.enc->g_h));
|
| codec_.reset();
|
| @@ -269,7 +269,8 @@ void VideoEncoderVpx::SetLosslessColor(bool want_lossless) {
|
| }
|
|
|
| std::unique_ptr<VideoPacket> VideoEncoderVpx::Encode(
|
| - const webrtc::DesktopFrame& frame) {
|
| + const webrtc::DesktopFrame& frame,
|
| + uint32_t flags) {
|
| DCHECK_LE(32, frame.size().width());
|
| DCHECK_LE(32, frame.size().height());
|
|
|
| @@ -300,6 +301,9 @@ std::unique_ptr<VideoPacket> VideoEncoderVpx::Encode(
|
| LOG(ERROR) << "Unable to apply active map";
|
| }
|
|
|
| + if (flags & REQUEST_KEY_FRAME)
|
| + vpx_codec_control(codec_.get(), VP8E_SET_FRAME_FLAGS, VPX_EFLAG_FORCE_KF);
|
| +
|
| // Do the actual encoding.
|
| int timestamp = (clock_->NowTicks() - timestamp_base_).InMilliseconds();
|
| vpx_codec_err_t ret = vpx_codec_encode(
|
| @@ -340,6 +344,7 @@ std::unique_ptr<VideoPacket> VideoEncoderVpx::Encode(
|
| case VPX_CODEC_CX_FRAME_PKT:
|
| got_data = true;
|
| packet->set_data(vpx_packet->data.frame.buf, vpx_packet->data.frame.sz);
|
| + packet->set_key_frame(vpx_packet->data.frame.flags & VPX_FRAME_IS_KEY);
|
| break;
|
| default:
|
| break;
|
|
|