Index: remoting/codec/webrtc_video_encoder_vpx.h |
diff --git a/remoting/codec/video_encoder_vpx.h b/remoting/codec/webrtc_video_encoder_vpx.h |
similarity index 75% |
copy from remoting/codec/video_encoder_vpx.h |
copy to remoting/codec/webrtc_video_encoder_vpx.h |
index a6701093b2cba402396c217b20cb9317614e9c16..f551c45045d17821cd74c960083818b8b9680a0c 100644 |
--- a/remoting/codec/video_encoder_vpx.h |
+++ b/remoting/codec/webrtc_video_encoder_vpx.h |
@@ -1,9 +1,9 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef REMOTING_CODEC_VIDEO_ENCODER_VPX_H_ |
-#define REMOTING_CODEC_VIDEO_ENCODER_VPX_H_ |
+#ifndef REMOTING_CODEC_WEBRTC_VIDEO_ENCODER_VPX_H_ |
+#define REMOTING_CODEC_WEBRTC_VIDEO_ENCODER_VPX_H_ |
#include <stdint.h> |
@@ -14,6 +14,7 @@ |
#include "remoting/codec/scoped_vpx_codec.h" |
#include "remoting/codec/video_encoder.h" |
#include "remoting/codec/video_encoder_helper.h" |
+#include "third_party/libvpx/source/libvpx/vpx/vpx_encoder.h" |
typedef struct vpx_image vpx_image_t; |
@@ -24,13 +25,16 @@ class DesktopSize; |
namespace remoting { |
-class VideoEncoderVpx : public VideoEncoder { |
+// This is a copy of VideoEncoderVpx with enhancements to encoder for use |
+// over WebRTC as transport. The original VideoEncoderVpx should be deleted |
+// once the old implementation is no longer in use. |
+class WebRtcVideoEncoderVpx : public VideoEncoder { |
public: |
// Create encoder for the specified protocol. |
- static std::unique_ptr<VideoEncoderVpx> CreateForVP8(); |
- static std::unique_ptr<VideoEncoderVpx> CreateForVP9(); |
+ static std::unique_ptr<WebRtcVideoEncoderVpx> CreateForVP8(); |
+ static std::unique_ptr<WebRtcVideoEncoderVpx> CreateForVP9(); |
- ~VideoEncoderVpx() override; |
+ ~WebRtcVideoEncoderVpx() override; |
void SetTickClockForTests(base::TickClock* tick_clock); |
@@ -39,9 +43,10 @@ class VideoEncoderVpx : public VideoEncoder { |
void SetLosslessColor(bool want_lossless) override; |
std::unique_ptr<VideoPacket> Encode(const webrtc::DesktopFrame& frame, |
uint32_t flags) override; |
+ void UpdateTargetBitrate(uint32_t bitrate) override; |
private: |
- explicit VideoEncoderVpx(bool use_vp9); |
+ explicit WebRtcVideoEncoderVpx(bool use_vp9); |
// (Re)Configures this instance to encode frames of the specified |size|, |
// with the configured lossless color & encoding modes. |
@@ -71,6 +76,9 @@ class VideoEncoderVpx : public VideoEncoder { |
// Holds the initialized & configured codec. |
ScopedVpxCodec codec_; |
+ vpx_codec_enc_cfg_t config_; |
+ uint32_t target_bitrate_kbps_; |
+ |
// Used to generate zero-based frame timestamps. |
base::TimeTicks timestamp_base_; |
@@ -91,9 +99,9 @@ class VideoEncoderVpx : public VideoEncoder { |
base::DefaultTickClock default_tick_clock_; |
base::TickClock* clock_; |
- DISALLOW_COPY_AND_ASSIGN(VideoEncoderVpx); |
+ DISALLOW_COPY_AND_ASSIGN(WebRtcVideoEncoderVpx); |
}; |
} // namespace remoting |
-#endif // REMOTING_CODEC_VIDEO_ENCODER_VPX_H_ |
+#endif // REMOTING_CODEC_WEBRTC_VIDEO_ENCODER_VPX_H_ |