Loading media/codec2/components/opus/C2SoftOpusEnc.cpp +14 −10 Original line number Diff line number Diff line Loading @@ -205,15 +205,6 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { return C2_BAD_VALUE; } // Get codecDelay int32_t lookahead; if (opus_multistream_encoder_ctl(mEncoder, OPUS_GET_LOOKAHEAD(&lookahead)) != OPUS_OK) { ALOGE("failed to get lookahead"); return C2_BAD_VALUE; } mCodecDelay = lookahead * 1000000000ll / mSampleRate; // Set seek preroll to 80 ms mSeekPreRoll = 80000000; return C2_OK; Loading Loading @@ -406,13 +397,26 @@ void C2SoftOpusEnc::process(const std::unique_ptr<C2Work>& work, if (!mHeaderGenerated) { uint8_t header[AOPUS_UNIFIED_CSD_MAXSIZE]; memset(header, 0, sizeof(header)); // Get codecDelay int32_t lookahead; if (opus_multistream_encoder_ctl(mEncoder, OPUS_GET_LOOKAHEAD(&lookahead)) != OPUS_OK) { ALOGE("failed to get lookahead"); mSignalledError = true; work->result = C2_CORRUPTED; return; } mCodecDelay = lookahead * 1000000000ll / mSampleRate; OpusHeader opusHeader; memset(&opusHeader, 0, sizeof(opusHeader)); opusHeader.channels = mChannelCount; opusHeader.num_streams = mChannelCount; opusHeader.num_coupled = 0; opusHeader.channel_mapping = ((mChannelCount > 8) ? 255 : (mChannelCount > 2)); opusHeader.gain_db = 0; opusHeader.skip_samples = 0; opusHeader.skip_samples = lookahead; int headerLen = WriteOpusHeaders(opusHeader, mSampleRate, header, sizeof(header), mCodecDelay, mSeekPreRoll); Loading media/codec2/sfplugin/CCodec.cpp +2 −5 Original line number Diff line number Diff line Loading @@ -754,11 +754,8 @@ void CCodec::configure(const sp<AMessage> &msg) { return BAD_VALUE; } if ((config->mDomain & Config::IS_ENCODER) && (config->mDomain & Config::IS_VIDEO)) { C2Config::bitrate_mode_t mode = C2Config::BITRATE_VARIABLE; if (msg->findInt32(KEY_BITRATE_MODE, &i32)) { mode = (C2Config::bitrate_mode_t) i32; } if (mode == BITRATE_MODE_CQ) { int32_t mode = BITRATE_MODE_VBR; if (msg->findInt32(KEY_BITRATE_MODE, &mode) && mode == BITRATE_MODE_CQ) { if (!msg->findInt32(KEY_QUALITY, &i32)) { ALOGD("quality is missing, which is required for video encoders in CQ."); return BAD_VALUE; Loading media/codec2/sfplugin/CCodecConfig.cpp +1 −8 Original line number Diff line number Diff line Loading @@ -358,14 +358,7 @@ void CCodecConfig::initializeStandardParams() { .limitTo(D::ENCODER & D::VIDEO & D::PARAM)); add(ConfigMapper(KEY_BITRATE_MODE, C2_PARAMKEY_BITRATE_MODE, "value") .limitTo(D::ENCODER & D::CODED) .withMapper([](C2Value v) -> C2Value { int32_t value; C2Config::bitrate_mode_t mode; if (v.get(&value) && C2Mapper::map(value, &mode)) { return mode; } return C2Value(); })); .withC2Mappers<C2Config::bitrate_mode_t>()); // remove when codecs switch to PARAMKEY and new modes deprecated(ConfigMapper(KEY_BITRATE_MODE, "coded.bitrate-mode", "value") .limitTo(D::ENCODER)); Loading media/extractors/mp4/MPEG4Extractor.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -1754,6 +1754,15 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { // http://wiki.xiph.org/OggOpus#ID_Header strncpy((char *)opusInfo, "OpusHead", 8); // Version shall be 0 as per mp4 Opus Specific Box // (https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2) if (opusInfo[8]) { return ERROR_MALFORMED; } // Force version to 1 as per OpusHead definition // (http://wiki.xiph.org/OggOpus#ID_Header) opusInfo[8] = 1; // Read Opus Specific Box values size_t opusOffset = 10; uint16_t pre_skip = U16_AT(&opusInfo[opusOffset]); Loading Loading
media/codec2/components/opus/C2SoftOpusEnc.cpp +14 −10 Original line number Diff line number Diff line Loading @@ -205,15 +205,6 @@ c2_status_t C2SoftOpusEnc::configureEncoder() { return C2_BAD_VALUE; } // Get codecDelay int32_t lookahead; if (opus_multistream_encoder_ctl(mEncoder, OPUS_GET_LOOKAHEAD(&lookahead)) != OPUS_OK) { ALOGE("failed to get lookahead"); return C2_BAD_VALUE; } mCodecDelay = lookahead * 1000000000ll / mSampleRate; // Set seek preroll to 80 ms mSeekPreRoll = 80000000; return C2_OK; Loading Loading @@ -406,13 +397,26 @@ void C2SoftOpusEnc::process(const std::unique_ptr<C2Work>& work, if (!mHeaderGenerated) { uint8_t header[AOPUS_UNIFIED_CSD_MAXSIZE]; memset(header, 0, sizeof(header)); // Get codecDelay int32_t lookahead; if (opus_multistream_encoder_ctl(mEncoder, OPUS_GET_LOOKAHEAD(&lookahead)) != OPUS_OK) { ALOGE("failed to get lookahead"); mSignalledError = true; work->result = C2_CORRUPTED; return; } mCodecDelay = lookahead * 1000000000ll / mSampleRate; OpusHeader opusHeader; memset(&opusHeader, 0, sizeof(opusHeader)); opusHeader.channels = mChannelCount; opusHeader.num_streams = mChannelCount; opusHeader.num_coupled = 0; opusHeader.channel_mapping = ((mChannelCount > 8) ? 255 : (mChannelCount > 2)); opusHeader.gain_db = 0; opusHeader.skip_samples = 0; opusHeader.skip_samples = lookahead; int headerLen = WriteOpusHeaders(opusHeader, mSampleRate, header, sizeof(header), mCodecDelay, mSeekPreRoll); Loading
media/codec2/sfplugin/CCodec.cpp +2 −5 Original line number Diff line number Diff line Loading @@ -754,11 +754,8 @@ void CCodec::configure(const sp<AMessage> &msg) { return BAD_VALUE; } if ((config->mDomain & Config::IS_ENCODER) && (config->mDomain & Config::IS_VIDEO)) { C2Config::bitrate_mode_t mode = C2Config::BITRATE_VARIABLE; if (msg->findInt32(KEY_BITRATE_MODE, &i32)) { mode = (C2Config::bitrate_mode_t) i32; } if (mode == BITRATE_MODE_CQ) { int32_t mode = BITRATE_MODE_VBR; if (msg->findInt32(KEY_BITRATE_MODE, &mode) && mode == BITRATE_MODE_CQ) { if (!msg->findInt32(KEY_QUALITY, &i32)) { ALOGD("quality is missing, which is required for video encoders in CQ."); return BAD_VALUE; Loading
media/codec2/sfplugin/CCodecConfig.cpp +1 −8 Original line number Diff line number Diff line Loading @@ -358,14 +358,7 @@ void CCodecConfig::initializeStandardParams() { .limitTo(D::ENCODER & D::VIDEO & D::PARAM)); add(ConfigMapper(KEY_BITRATE_MODE, C2_PARAMKEY_BITRATE_MODE, "value") .limitTo(D::ENCODER & D::CODED) .withMapper([](C2Value v) -> C2Value { int32_t value; C2Config::bitrate_mode_t mode; if (v.get(&value) && C2Mapper::map(value, &mode)) { return mode; } return C2Value(); })); .withC2Mappers<C2Config::bitrate_mode_t>()); // remove when codecs switch to PARAMKEY and new modes deprecated(ConfigMapper(KEY_BITRATE_MODE, "coded.bitrate-mode", "value") .limitTo(D::ENCODER)); Loading
media/extractors/mp4/MPEG4Extractor.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -1754,6 +1754,15 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { // http://wiki.xiph.org/OggOpus#ID_Header strncpy((char *)opusInfo, "OpusHead", 8); // Version shall be 0 as per mp4 Opus Specific Box // (https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2) if (opusInfo[8]) { return ERROR_MALFORMED; } // Force version to 1 as per OpusHead definition // (http://wiki.xiph.org/OggOpus#ID_Header) opusInfo[8] = 1; // Read Opus Specific Box values size_t opusOffset = 10; uint16_t pre_skip = U16_AT(&opusInfo[opusOffset]); Loading