diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/OMXCodec.cpp | 60 |
1 files changed, 15 insertions, 45 deletions
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp index c5e935d..670f748 100644 --- a/media/libstagefright/OMXCodec.cpp +++ b/media/libstagefright/OMXCodec.cpp @@ -416,10 +416,10 @@ sp<OMXCodec> OMXCodec::Create( } if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_AMR_NB, mime)) { - codec->setAMRFormat(); + codec->setAMRFormat(false /* isWAMR */); } if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_AMR_WB, mime)) { - codec->setAMRWBFormat(); + codec->setAMRFormat(true /* isWAMR */); } if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_AAC, mime)) { int32_t numChannels, sampleRate; @@ -1900,54 +1900,24 @@ void OMXCodec::setRawAudioFormat( CHECK_EQ(err, OK); } -void OMXCodec::setAMRFormat() { - if (!mIsEncoder) { - OMX_AUDIO_PARAM_AMRTYPE def; - InitOMXParams(&def); - def.nPortIndex = kPortIndexInput; +void OMXCodec::setAMRFormat(bool isWAMR) { + OMX_U32 portIndex = mIsEncoder ? kPortIndexOutput : kPortIndexInput; - status_t err = - mOMX->getParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def)); - - CHECK_EQ(err, OK); - - def.eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF; - def.eAMRBandMode = OMX_AUDIO_AMRBandModeNB0; - - err = mOMX->setParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def)); - CHECK_EQ(err, OK); - } - - //////////////////////// - - if (mIsEncoder) { - sp<MetaData> format = mSource->getFormat(); - int32_t sampleRate; - int32_t numChannels; - CHECK(format->findInt32(kKeySampleRate, &sampleRate)); - CHECK(format->findInt32(kKeyChannelCount, &numChannels)); - - setRawAudioFormat(kPortIndexInput, sampleRate, numChannels); - } -} - -void OMXCodec::setAMRWBFormat() { - if (!mIsEncoder) { - OMX_AUDIO_PARAM_AMRTYPE def; - InitOMXParams(&def); - def.nPortIndex = kPortIndexInput; + OMX_AUDIO_PARAM_AMRTYPE def; + InitOMXParams(&def); + def.nPortIndex = portIndex; - status_t err = - mOMX->getParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def)); + status_t err = + mOMX->getParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def)); - CHECK_EQ(err, OK); + CHECK_EQ(err, OK); - def.eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF; - def.eAMRBandMode = OMX_AUDIO_AMRBandModeWB0; + def.eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF; + def.eAMRBandMode = + isWAMR ? OMX_AUDIO_AMRBandModeWB0 : OMX_AUDIO_AMRBandModeNB0; - err = mOMX->setParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def)); - CHECK_EQ(err, OK); - } + err = mOMX->setParameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def)); + CHECK_EQ(err, OK); //////////////////////// |