Loading media/codec2/components/opus/C2SoftOpusEnc.cpp +34 −8 Original line number Diff line number Diff line Loading @@ -77,6 +77,19 @@ public: .withSetter((Setter<decltype(*mChannelCount)>::StrictValueWithNoDeps)) .build()); addParameter( DefineParam(mBitrateMode, C2_PARAMKEY_BITRATE_MODE) .withDefault(new C2StreamBitrateModeTuning::output( 0u, C2Config::BITRATE_VARIABLE)) .withFields({ C2F(mBitrateMode, value).oneOf({ C2Config::BITRATE_CONST, C2Config::BITRATE_VARIABLE}) }) .withSetter( Setter<decltype(*mBitrateMode)>::StrictValueWithNoDeps) .build()); addParameter( DefineParam(mBitrate, C2_PARAMKEY_BITRATE) .withDefault(new C2StreamBitrateInfo::output(0u, 128000)) Loading @@ -100,12 +113,14 @@ public: uint32_t getSampleRate() const { return mSampleRate->value; } uint32_t getChannelCount() const { return mChannelCount->value; } uint32_t getBitrate() const { return mBitrate->value; } uint32_t getBitrateMode() const { return mBitrateMode->value; } uint32_t getComplexity() const { return mComplexity->value; } private: std::shared_ptr<C2StreamSampleRateInfo::input> mSampleRate; std::shared_ptr<C2StreamChannelCountInfo::input> mChannelCount; std::shared_ptr<C2StreamBitrateInfo::output> mBitrate; std::shared_ptr<C2StreamBitrateModeTuning::output> mBitrateMode; std::shared_ptr<C2StreamComplexityTuning::output> mComplexity; std::shared_ptr<C2StreamMaxBufferSizeInfo::input> mInputMaxBufSize; }; Loading Loading @@ -135,6 +150,7 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { mSampleRate = mIntf->getSampleRate(); mChannelCount = mIntf->getChannelCount(); uint32_t bitrate = mIntf->getBitrate(); uint32_t bitrateMode = mIntf->getBitrateMode(); int complexity = mIntf->getComplexity(); mNumSamplesPerFrame = mSampleRate / (1000 / mFrameDurationMs); mNumPcmBytesPerInputFrame = Loading Loading @@ -189,6 +205,7 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { return C2_BAD_VALUE; } if (bitrateMode == C2Config::BITRATE_VARIABLE) { // Constrained VBR if (opus_multistream_encoder_ctl(mEncoder, OPUS_SET_VBR(1) != OPUS_OK)) { ALOGE("failed to set vbr type"); Loading @@ -199,6 +216,15 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { ALOGE("failed to set vbr constraint"); return C2_BAD_VALUE; } } else if (bitrateMode == C2Config::BITRATE_CONST) { if (opus_multistream_encoder_ctl(mEncoder, OPUS_SET_VBR(0) != OPUS_OK)) { ALOGE("failed to set cbr type"); return C2_BAD_VALUE; } } else { ALOGE("unknown bitrate mode"); return C2_BAD_VALUE; } // Bitrate if (opus_multistream_encoder_ctl(mEncoder, OPUS_SET_BITRATE(bitrate)) != Loading media/libstagefright/data/media_codecs_sw.xml +1 −1 Original line number Diff line number Diff line Loading @@ -237,7 +237,7 @@ <Limit name="sample-rate" ranges="8000,12000,16000,24000,48000" /> <Limit name="bitrate" range="500-512000" /> <Limit name="complexity" range="0-10" default="5" /> <Feature name="bitrate-modes" value="CBR" /> <Feature name="bitrate-modes" value="CBR,VBR" /> </MediaCodec> <MediaCodec name="c2.android.h263.encoder" type="video/3gpp"> <Alias name="OMX.google.h263.encoder" /> Loading Loading
media/codec2/components/opus/C2SoftOpusEnc.cpp +34 −8 Original line number Diff line number Diff line Loading @@ -77,6 +77,19 @@ public: .withSetter((Setter<decltype(*mChannelCount)>::StrictValueWithNoDeps)) .build()); addParameter( DefineParam(mBitrateMode, C2_PARAMKEY_BITRATE_MODE) .withDefault(new C2StreamBitrateModeTuning::output( 0u, C2Config::BITRATE_VARIABLE)) .withFields({ C2F(mBitrateMode, value).oneOf({ C2Config::BITRATE_CONST, C2Config::BITRATE_VARIABLE}) }) .withSetter( Setter<decltype(*mBitrateMode)>::StrictValueWithNoDeps) .build()); addParameter( DefineParam(mBitrate, C2_PARAMKEY_BITRATE) .withDefault(new C2StreamBitrateInfo::output(0u, 128000)) Loading @@ -100,12 +113,14 @@ public: uint32_t getSampleRate() const { return mSampleRate->value; } uint32_t getChannelCount() const { return mChannelCount->value; } uint32_t getBitrate() const { return mBitrate->value; } uint32_t getBitrateMode() const { return mBitrateMode->value; } uint32_t getComplexity() const { return mComplexity->value; } private: std::shared_ptr<C2StreamSampleRateInfo::input> mSampleRate; std::shared_ptr<C2StreamChannelCountInfo::input> mChannelCount; std::shared_ptr<C2StreamBitrateInfo::output> mBitrate; std::shared_ptr<C2StreamBitrateModeTuning::output> mBitrateMode; std::shared_ptr<C2StreamComplexityTuning::output> mComplexity; std::shared_ptr<C2StreamMaxBufferSizeInfo::input> mInputMaxBufSize; }; Loading Loading @@ -135,6 +150,7 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { mSampleRate = mIntf->getSampleRate(); mChannelCount = mIntf->getChannelCount(); uint32_t bitrate = mIntf->getBitrate(); uint32_t bitrateMode = mIntf->getBitrateMode(); int complexity = mIntf->getComplexity(); mNumSamplesPerFrame = mSampleRate / (1000 / mFrameDurationMs); mNumPcmBytesPerInputFrame = Loading Loading @@ -189,6 +205,7 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { return C2_BAD_VALUE; } if (bitrateMode == C2Config::BITRATE_VARIABLE) { // Constrained VBR if (opus_multistream_encoder_ctl(mEncoder, OPUS_SET_VBR(1) != OPUS_OK)) { ALOGE("failed to set vbr type"); Loading @@ -199,6 +216,15 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { ALOGE("failed to set vbr constraint"); return C2_BAD_VALUE; } } else if (bitrateMode == C2Config::BITRATE_CONST) { if (opus_multistream_encoder_ctl(mEncoder, OPUS_SET_VBR(0) != OPUS_OK)) { ALOGE("failed to set cbr type"); return C2_BAD_VALUE; } } else { ALOGE("unknown bitrate mode"); return C2_BAD_VALUE; } // Bitrate if (opus_multistream_encoder_ctl(mEncoder, OPUS_SET_BITRATE(bitrate)) != Loading
media/libstagefright/data/media_codecs_sw.xml +1 −1 Original line number Diff line number Diff line Loading @@ -237,7 +237,7 @@ <Limit name="sample-rate" ranges="8000,12000,16000,24000,48000" /> <Limit name="bitrate" range="500-512000" /> <Limit name="complexity" range="0-10" default="5" /> <Feature name="bitrate-modes" value="CBR" /> <Feature name="bitrate-modes" value="CBR,VBR" /> </MediaCodec> <MediaCodec name="c2.android.h263.encoder" type="video/3gpp"> <Alias name="OMX.google.h263.encoder" /> Loading