C2SoftVpxEnc: Fix initialiation of bitrate ratios

Bug: 151273173
Test: steps in bug
Change-Id: I91a73afb33a9e9ca486bfcc9b49d5c9b292cca04
gugelfrei
Harish Mahendrakar 4 years ago committed by Pawin Vongmasa
parent 1261c29e1e
commit da61245558

@ -67,8 +67,9 @@ C2SoftVpxEnc::C2SoftVpxEnc(const char* name, c2_node_id_t id,
mLastTimestamp(0x7FFFFFFFFFFFFFFFull), mLastTimestamp(0x7FFFFFFFFFFFFFFFull),
mSignalledOutputEos(false), mSignalledOutputEos(false),
mSignalledError(false) { mSignalledError(false) {
memset(mTemporalLayerBitrateRatio, 0, sizeof(mTemporalLayerBitrateRatio)); for (int i = 0; i < MAXTEMPORALLAYERS; i++) {
mTemporalLayerBitrateRatio[0] = 100; mTemporalLayerBitrateRatio[i] = 1.0f;
}
} }
C2SoftVpxEnc::~C2SoftVpxEnc() { C2SoftVpxEnc::~C2SoftVpxEnc() {
@ -123,7 +124,8 @@ status_t C2SoftVpxEnc::initEncoder() {
mFrameRate = mIntf->getFrameRate_l(); mFrameRate = mIntf->getFrameRate_l();
mIntraRefresh = mIntf->getIntraRefresh_l(); mIntraRefresh = mIntf->getIntraRefresh_l();
mRequestSync = mIntf->getRequestSync_l(); mRequestSync = mIntf->getRequestSync_l();
mTemporalLayers = mIntf->getTemporalLayers_l()->m.layerCount; mLayering = mIntf->getTemporalLayers_l();
mTemporalLayers = mLayering->m.layerCount;
} }
switch (mBitrateMode->value) { switch (mBitrateMode->value) {
@ -225,6 +227,7 @@ status_t C2SoftVpxEnc::initEncoder() {
mTemporalPattern[5] = kTemporalUpdateGoldenRefAltRef; mTemporalPattern[5] = kTemporalUpdateGoldenRefAltRef;
mTemporalPattern[6] = kTemporalUpdateLastRefAltRef; mTemporalPattern[6] = kTemporalUpdateLastRefAltRef;
mTemporalPattern[7] = kTemporalUpdateNone; mTemporalPattern[7] = kTemporalUpdateNone;
mTemporalLayerBitrateRatio[0] = mLayering->m.bitrateRatios[0];
mTemporalPatternLength = 8; mTemporalPatternLength = 8;
break; break;
case 3: case 3:
@ -245,6 +248,8 @@ status_t C2SoftVpxEnc::initEncoder() {
mTemporalPattern[5] = kTemporalUpdateNone; mTemporalPattern[5] = kTemporalUpdateNone;
mTemporalPattern[6] = kTemporalUpdateGoldenRefAltRef; mTemporalPattern[6] = kTemporalUpdateGoldenRefAltRef;
mTemporalPattern[7] = kTemporalUpdateNone; mTemporalPattern[7] = kTemporalUpdateNone;
mTemporalLayerBitrateRatio[0] = mLayering->m.bitrateRatios[0];
mTemporalLayerBitrateRatio[1] = mLayering->m.bitrateRatios[1];
mTemporalPatternLength = 8; mTemporalPatternLength = 8;
break; break;
default: default:
@ -255,7 +260,7 @@ status_t C2SoftVpxEnc::initEncoder() {
for (size_t i = 0; i < mCodecConfiguration->ts_number_layers; i++) { for (size_t i = 0; i < mCodecConfiguration->ts_number_layers; i++) {
mCodecConfiguration->ts_target_bitrate[i] = mCodecConfiguration->ts_target_bitrate[i] =
mCodecConfiguration->rc_target_bitrate * mCodecConfiguration->rc_target_bitrate *
mTemporalLayerBitrateRatio[i] / 100; mTemporalLayerBitrateRatio[i];
} }
if (mIntf->getSyncFramePeriod() >= 0) { if (mIntf->getSyncFramePeriod() >= 0) {
mCodecConfiguration->kf_max_dist = mIntf->getSyncFramePeriod(); mCodecConfiguration->kf_max_dist = mIntf->getSyncFramePeriod();

@ -180,7 +180,7 @@ struct C2SoftVpxEnc : public SimpleC2Component {
size_t mTemporalLayers; size_t mTemporalLayers;
// Temporal layer bitrare ratio in percentage // Temporal layer bitrare ratio in percentage
uint32_t mTemporalLayerBitrateRatio[MAXTEMPORALLAYERS]; float_t mTemporalLayerBitrateRatio[MAXTEMPORALLAYERS];
// Temporal pattern type // Temporal pattern type
TemporalPatternType mTemporalPatternType; TemporalPatternType mTemporalPatternType;
@ -218,6 +218,7 @@ struct C2SoftVpxEnc : public SimpleC2Component {
std::shared_ptr<C2StreamBitrateInfo::output> mBitrate; std::shared_ptr<C2StreamBitrateInfo::output> mBitrate;
std::shared_ptr<C2StreamBitrateModeTuning::output> mBitrateMode; std::shared_ptr<C2StreamBitrateModeTuning::output> mBitrateMode;
std::shared_ptr<C2StreamRequestSyncFrameTuning::output> mRequestSync; std::shared_ptr<C2StreamRequestSyncFrameTuning::output> mRequestSync;
std::shared_ptr<C2StreamTemporalLayeringTuning::output> mLayering;
C2_DO_NOT_COPY(C2SoftVpxEnc); C2_DO_NOT_COPY(C2SoftVpxEnc);
}; };

Loading…
Cancel
Save