summaryrefslogtreecommitdiff
path: root/chromium/media/gpu/vaapi/vp9_encoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/gpu/vaapi/vp9_encoder.h')
-rw-r--r--chromium/media/gpu/vaapi/vp9_encoder.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/chromium/media/gpu/vaapi/vp9_encoder.h b/chromium/media/gpu/vaapi/vp9_encoder.h
index 2f3eda4b440..9c0ad1cb9f3 100644
--- a/chromium/media/gpu/vaapi/vp9_encoder.h
+++ b/chromium/media/gpu/vaapi/vp9_encoder.h
@@ -19,6 +19,7 @@
#include "media/gpu/vp9_reference_frame_vector.h"
namespace media {
+class VP9RateControl;
class VP9Encoder : public AcceleratedVideoEncoder {
public:
@@ -71,6 +72,12 @@ class VP9Encoder : public AcceleratedVideoEncoder {
const Vp9ReferenceFrameVector& ref_frames,
const std::array<bool, kVp9NumRefsPerFrame>& ref_frames_used) = 0;
+ void set_bitrate_control(BitrateControl bc) { bitrate_control_ = bc; }
+ BitrateControl bitrate_control() { return bitrate_control_; }
+
+ protected:
+ BitrateControl bitrate_control_ = BitrateControl::kConstantBitrate;
+
DISALLOW_COPY_AND_ASSIGN(Accelerator);
};
@@ -86,8 +93,13 @@ class VP9Encoder : public AcceleratedVideoEncoder {
size_t GetMaxNumOfRefFrames() const override;
ScalingSettings GetScalingSettings() const override;
bool PrepareEncodeJob(EncodeJob* encode_job) override;
+ void BitrateControlUpdate(uint64_t encoded_chunk_size_bytes) override;
private:
+ friend class VP9EncoderTest;
+
+ void set_rate_ctrl_for_testing(std::unique_ptr<VP9RateControl> rate_ctrl);
+
void InitializeFrameHeader();
void UpdateFrameHeader(bool keyframe);
void UpdateReferenceFrames(scoped_refptr<VP9Picture> picture);
@@ -105,6 +117,7 @@ class VP9Encoder : public AcceleratedVideoEncoder {
Vp9FrameHeader current_frame_hdr_;
Vp9ReferenceFrameVector reference_frames_;
+ std::unique_ptr<VP9RateControl> rate_ctrl_;
const std::unique_ptr<Accelerator> accelerator_;
SEQUENCE_CHECKER(sequence_checker_);