diff options
Diffstat (limited to 'chromium/media/gpu/vaapi/vp9_encoder.h')
-rw-r--r-- | chromium/media/gpu/vaapi/vp9_encoder.h | 13 |
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_); |