mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1033335: Don't send IDRs to change bitrates or periodic ones to fix encoder errors r=pkerr
This commit is contained in:
parent
a3e56631f0
commit
d3c25b549e
@ -788,7 +788,9 @@ WebrtcOMXH264VideoEncoder::WebrtcOMXH264VideoEncoder()
|
||||
, mHeight(0)
|
||||
, mFrameRate(0)
|
||||
, mBitRateKbps(0)
|
||||
#ifdef OMX_IDR_NEEDED_FOR_BITRATE
|
||||
, mBitRateAtLastIDR(0)
|
||||
#endif
|
||||
, mOMXConfigured(false)
|
||||
, mOMXReconfigure(false)
|
||||
{
|
||||
@ -903,13 +905,16 @@ WebrtcOMXH264VideoEncoder::Encode(const webrtc::I420VideoFrame& aInputImage,
|
||||
return WEBRTC_VIDEO_CODEC_ERROR;
|
||||
}
|
||||
mOMXConfigured = true;
|
||||
#ifdef OMX_IDR_NEEDED_FOR_BITRATE
|
||||
mLastIDRTime = TimeStamp::Now();
|
||||
mBitRateAtLastIDR = mBitRateKbps;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (aFrameTypes && aFrameTypes->size() &&
|
||||
((*aFrameTypes)[0] == webrtc::kKeyFrame)) {
|
||||
mOMX->RequestIDRFrame();
|
||||
#ifdef OMX_IDR_NEEDED_FOR_BITRATE
|
||||
mLastIDRTime = TimeStamp::Now();
|
||||
mBitRateAtLastIDR = mBitRateKbps;
|
||||
} else if (mBitRateKbps != mBitRateAtLastIDR) {
|
||||
@ -942,6 +947,7 @@ WebrtcOMXH264VideoEncoder::Encode(const webrtc::I420VideoFrame& aInputImage,
|
||||
mLastIDRTime = now;
|
||||
mBitRateAtLastIDR = mBitRateKbps;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Wrap I420VideoFrame input with PlanarYCbCrImage for OMXVideoEncoder.
|
||||
|
@ -26,6 +26,7 @@ class OMXOutputDrain;
|
||||
|
||||
// XXX see if we can reduce this
|
||||
#define WEBRTC_OMX_H264_MIN_DECODE_BUFFERS 10
|
||||
#define OMX_IDR_NEEDED_FOR_BITRATE 0
|
||||
|
||||
class WebrtcOMXH264VideoEncoder : public WebrtcVideoEncoder
|
||||
{
|
||||
@ -64,8 +65,10 @@ private:
|
||||
uint32_t mHeight;
|
||||
uint32_t mFrameRate;
|
||||
uint32_t mBitRateKbps;
|
||||
#ifdef OMX_IDR_NEEDED_FOR_BITRATE
|
||||
uint32_t mBitRateAtLastIDR;
|
||||
TimeStamp mLastIDRTime;
|
||||
#endif
|
||||
bool mOMXConfigured;
|
||||
bool mOMXReconfigure;
|
||||
webrtc::EncodedImage mEncodedImage;
|
||||
|
Loading…
Reference in New Issue
Block a user