Loading media/libstagefright/ACodec.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -2237,6 +2237,12 @@ status_t ACodec::configureCodec( } err = setupG711Codec(encoder, sampleRate, numChannels); } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_OPUS)) { int32_t numChannels = 1, sampleRate = 48000; if (msg->findInt32("channel-count", &numChannels) && msg->findInt32("sample-rate", &sampleRate)) { err = setupOpusCodec(encoder, sampleRate, numChannels); } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_FLAC)) { // numChannels needs to be set to properly communicate PCM values. int32_t numChannels = 2, sampleRate = 44100, compressionLevel = -1; Loading Loading @@ -3110,6 +3116,26 @@ status_t ACodec::setupG711Codec(bool encoder, int32_t sampleRate, int32_t numCha kPortIndexInput, sampleRate, numChannels); } status_t ACodec::setupOpusCodec(bool encoder, int32_t sampleRate, int32_t numChannels) { if (encoder) { return INVALID_OPERATION; } OMX_AUDIO_PARAM_ANDROID_OPUSTYPE def; InitOMXParams(&def); def.nPortIndex = kPortIndexInput; status_t err = mOMXNode->getParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidOpus, &def, sizeof(def)); if (err != OK) { ALOGE("setupOpusCodec(): Error %d getting OMX_IndexParamAudioAndroidOpus parameter", err); return err; } def.nSampleRate = sampleRate; def.nChannels = numChannels; err = mOMXNode->setParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidOpus, &def, sizeof(def)); return err; } status_t ACodec::setupFlacCodec( bool encoder, int32_t numChannels, int32_t sampleRate, int32_t compressionLevel, AudioEncoding encoding) { Loading media/libstagefright/codecs/opus/dec/SoftOpus.cpp +8 −3 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ SoftOpus::SoftOpus( mInputBufferCount(0), mDecoder(NULL), mHeader(NULL), mNumChannels(1), mSamplingRate(kRate), mCodecDelay(0), mSeekPreRoll(0), mAnchorTimeUs(0), Loading Loading @@ -169,11 +171,11 @@ OMX_ERRORTYPE SoftOpus::internalGetParameter( } opusParams->nAudioBandWidth = 0; opusParams->nSampleRate = kRate; opusParams->nSampleRate = mSamplingRate; opusParams->nBitRate = 0; if (!isConfigured()) { opusParams->nChannels = 1; opusParams->nChannels = mNumChannels; } else { opusParams->nChannels = mHeader->channels; } Loading Loading @@ -274,7 +276,8 @@ OMX_ERRORTYPE SoftOpus::internalSetParameter( if (opusParams->nPortIndex != 0) { return OMX_ErrorUndefined; } mNumChannels = opusParams->nChannels; mSamplingRate = opusParams->nSampleRate; return OMX_ErrorNone; } Loading Loading @@ -496,6 +499,8 @@ void SoftOpus::onQueueFilled(OMX_U32 /* portIndex */) { *(reinterpret_cast<int64_t*>(inHeader->pBuffer + inHeader->nOffset)), kRate); mSamplingRate = kRate; mNumChannels = mHeader->channels; notify(OMX_EventPortSettingsChanged, 1, 0, NULL); mOutputPortSettingsChange = AWAITING_DISABLED; } Loading media/libstagefright/codecs/opus/dec/SoftOpus.h +2 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,8 @@ private: OpusMSDecoder *mDecoder; OpusHeader *mHeader; int32_t mNumChannels; int32_t mSamplingRate; int64_t mCodecDelay; int64_t mSeekPreRoll; int64_t mSamplesToDiscard; Loading media/libstagefright/include/media/stagefright/ACodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -499,6 +499,7 @@ private: status_t setupAMRCodec(bool encoder, bool isWAMR, int32_t bitRate); status_t setupG711Codec(bool encoder, int32_t sampleRate, int32_t numChannels); status_t setupOpusCodec(bool encoder, int32_t sampleRate, int32_t numChannels); status_t setupFlacCodec( bool encoder, int32_t numChannels, int32_t sampleRate, int32_t compressionLevel, AudioEncoding encoding); Loading Loading
media/libstagefright/ACodec.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -2237,6 +2237,12 @@ status_t ACodec::configureCodec( } err = setupG711Codec(encoder, sampleRate, numChannels); } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_OPUS)) { int32_t numChannels = 1, sampleRate = 48000; if (msg->findInt32("channel-count", &numChannels) && msg->findInt32("sample-rate", &sampleRate)) { err = setupOpusCodec(encoder, sampleRate, numChannels); } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_FLAC)) { // numChannels needs to be set to properly communicate PCM values. int32_t numChannels = 2, sampleRate = 44100, compressionLevel = -1; Loading Loading @@ -3110,6 +3116,26 @@ status_t ACodec::setupG711Codec(bool encoder, int32_t sampleRate, int32_t numCha kPortIndexInput, sampleRate, numChannels); } status_t ACodec::setupOpusCodec(bool encoder, int32_t sampleRate, int32_t numChannels) { if (encoder) { return INVALID_OPERATION; } OMX_AUDIO_PARAM_ANDROID_OPUSTYPE def; InitOMXParams(&def); def.nPortIndex = kPortIndexInput; status_t err = mOMXNode->getParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidOpus, &def, sizeof(def)); if (err != OK) { ALOGE("setupOpusCodec(): Error %d getting OMX_IndexParamAudioAndroidOpus parameter", err); return err; } def.nSampleRate = sampleRate; def.nChannels = numChannels; err = mOMXNode->setParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidOpus, &def, sizeof(def)); return err; } status_t ACodec::setupFlacCodec( bool encoder, int32_t numChannels, int32_t sampleRate, int32_t compressionLevel, AudioEncoding encoding) { Loading
media/libstagefright/codecs/opus/dec/SoftOpus.cpp +8 −3 Original line number Diff line number Diff line Loading @@ -58,6 +58,8 @@ SoftOpus::SoftOpus( mInputBufferCount(0), mDecoder(NULL), mHeader(NULL), mNumChannels(1), mSamplingRate(kRate), mCodecDelay(0), mSeekPreRoll(0), mAnchorTimeUs(0), Loading Loading @@ -169,11 +171,11 @@ OMX_ERRORTYPE SoftOpus::internalGetParameter( } opusParams->nAudioBandWidth = 0; opusParams->nSampleRate = kRate; opusParams->nSampleRate = mSamplingRate; opusParams->nBitRate = 0; if (!isConfigured()) { opusParams->nChannels = 1; opusParams->nChannels = mNumChannels; } else { opusParams->nChannels = mHeader->channels; } Loading Loading @@ -274,7 +276,8 @@ OMX_ERRORTYPE SoftOpus::internalSetParameter( if (opusParams->nPortIndex != 0) { return OMX_ErrorUndefined; } mNumChannels = opusParams->nChannels; mSamplingRate = opusParams->nSampleRate; return OMX_ErrorNone; } Loading Loading @@ -496,6 +499,8 @@ void SoftOpus::onQueueFilled(OMX_U32 /* portIndex */) { *(reinterpret_cast<int64_t*>(inHeader->pBuffer + inHeader->nOffset)), kRate); mSamplingRate = kRate; mNumChannels = mHeader->channels; notify(OMX_EventPortSettingsChanged, 1, 0, NULL); mOutputPortSettingsChange = AWAITING_DISABLED; } Loading
media/libstagefright/codecs/opus/dec/SoftOpus.h +2 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,8 @@ private: OpusMSDecoder *mDecoder; OpusHeader *mHeader; int32_t mNumChannels; int32_t mSamplingRate; int64_t mCodecDelay; int64_t mSeekPreRoll; int64_t mSamplesToDiscard; Loading
media/libstagefright/include/media/stagefright/ACodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -499,6 +499,7 @@ private: status_t setupAMRCodec(bool encoder, bool isWAMR, int32_t bitRate); status_t setupG711Codec(bool encoder, int32_t sampleRate, int32_t numChannels); status_t setupOpusCodec(bool encoder, int32_t sampleRate, int32_t numChannels); status_t setupFlacCodec( bool encoder, int32_t numChannels, int32_t sampleRate, int32_t compressionLevel, AudioEncoding encoding); Loading