|
|
@ -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();
|
|
|
|