diff options
author | Peter Boström <pbos@webrtc.org> | 2015-10-29 16:30:23 +0100 |
---|---|---|
committer | Peter Boström <pbos@webrtc.org> | 2015-10-29 15:30:29 +0000 |
commit | 69ccb331310fff13a8b061c294d82b20f2b82bc7 (patch) | |
tree | ffe0843e9e8fcbeb910cc87af2c34723c3238cfc /webrtc/modules/video_coding/main/source/generic_encoder.h | |
parent | 4f4f756f6ff50d4142990c15fc656713d452c22b (diff) | |
download | webrtc-69ccb331310fff13a8b061c294d82b20f2b82bc7.tar.gz |
Remove redudant encoder rate calls.
Moves EncoderParameters update checks into GenericEncoder before calling
SetRates/SetChannelParameters as applicable.
Also removes CodecConfigParameters as a bonus.
BUG=
R=stefan@webrtc.org
TBR=mflodman@webrtc.org
Review URL: https://codereview.webrtc.org/1426953003 .
Cr-Commit-Position: refs/heads/master@{#10452}
Diffstat (limited to 'webrtc/modules/video_coding/main/source/generic_encoder.h')
-rw-r--r-- | webrtc/modules/video_coding/main/source/generic_encoder.h | 37 |
1 files changed, 13 insertions, 24 deletions
diff --git a/webrtc/modules/video_coding/main/source/generic_encoder.h b/webrtc/modules/video_coding/main/source/generic_encoder.h index 25235b6b46..5482e507d7 100644 --- a/webrtc/modules/video_coding/main/source/generic_encoder.h +++ b/webrtc/modules/video_coding/main/source/generic_encoder.h @@ -26,6 +26,13 @@ namespace media_optimization { class MediaOptimization; } // namespace media_optimization +struct EncoderParameters { + uint32_t target_bitrate; + uint8_t loss_rate; + int64_t rtt; + uint32_t input_frame_rate; +}; + /*************************************/ /* VCMEncodeFrameCallback class */ /***********************************/ @@ -102,33 +109,16 @@ public: int32_t Encode(const VideoFrame& inputFrame, const CodecSpecificInfo* codecSpecificInfo, const std::vector<FrameType>& frameTypes); - /** - * Set new target bitrate (bits/s) and framerate. - * Return Value: new bit rate if OK, otherwise <0s. - */ - // TODO(tommi): We could replace BitRate and FrameRate below with a GetRates - // method that matches SetRates. For fetching current rates, we'd then only - // grab the lock once instead of twice. - int32_t SetRates(uint32_t target_bitrate, uint32_t frameRate); - /** - * Set a new packet loss rate and a new round-trip time in milliseconds. - */ - int32_t SetChannelParameters(int32_t packetLoss, int64_t rtt); - int32_t CodecConfigParameters(uint8_t* buffer, int32_t size); + + void SetEncoderParameters(const EncoderParameters& params); /** * Register a transport callback which will be called to deliver the encoded * buffers */ int32_t RegisterEncodeCallback( VCMEncodedFrameCallback* VCMencodedFrameCallback); - /** - * Get encoder bit rate - */ - uint32_t BitRate() const; - /** - * Get encoder frame rate - */ - uint32_t FrameRate() const; + + EncoderParameters GetEncoderParameters() const; int32_t SetPeriodicKeyFrames(bool enable); @@ -146,10 +136,9 @@ private: VideoEncoder* const encoder_; VideoEncoderRateObserver* const rate_observer_; VCMEncodedFrameCallback* vcm_encoded_frame_callback_; - uint32_t bit_rate_; - uint32_t frame_rate_; + EncoderParameters encoder_params_ GUARDED_BY(params_lock_); const bool internal_source_; - mutable rtc::CriticalSection rates_lock_; + mutable rtc::CriticalSection params_lock_; VideoRotation rotation_; bool is_screenshare_; }; // end of VCMGenericEncoder class |