Loading media/libstagefright/ACodec.cpp +60 −0 Original line number Diff line number Diff line Loading @@ -2237,6 +2237,15 @@ status_t ACodec::configureCodec( } else { err = setupEAC3Codec(encoder, numChannels, sampleRate); } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AC4)) { int32_t numChannels; int32_t sampleRate; if (!msg->findInt32("channel-count", &numChannels) || !msg->findInt32("sample-rate", &sampleRate)) { err = INVALID_OPERATION; } else { err = setupAC4Codec(encoder, numChannels, sampleRate); } } if (err != OK) { Loading Loading @@ -2893,6 +2902,38 @@ status_t ACodec::setupEAC3Codec( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidEac3, &def, sizeof(def)); } status_t ACodec::setupAC4Codec( bool encoder, int32_t numChannels, int32_t sampleRate) { status_t err = setupRawAudioFormat( encoder ? kPortIndexInput : kPortIndexOutput, sampleRate, numChannels); if (err != OK) { return err; } if (encoder) { ALOGW("AC4 encoding is not supported."); return INVALID_OPERATION; } OMX_AUDIO_PARAM_ANDROID_AC4TYPE def; InitOMXParams(&def); def.nPortIndex = kPortIndexInput; err = mOMXNode->getParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc4, &def, sizeof(def)); if (err != OK) { return err; } def.nChannels = numChannels; def.nSampleRate = sampleRate; return mOMXNode->setParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc4, &def, sizeof(def)); } static OMX_AUDIO_AMRBANDMODETYPE pickModeFromBitRate( bool isAMRWB, int32_t bps) { if (isAMRWB) { Loading Loading @@ -5246,6 +5287,25 @@ status_t ACodec::getPortFormat(OMX_U32 portIndex, sp<AMessage> ¬ify) { break; } case OMX_AUDIO_CodingAndroidAC4: { OMX_AUDIO_PARAM_ANDROID_AC4TYPE params; InitOMXParams(¶ms); params.nPortIndex = portIndex; err = mOMXNode->getParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc4, ¶ms, sizeof(params)); if (err != OK) { return err; } notify->setString("mime", MEDIA_MIMETYPE_AUDIO_AC4); notify->setInt32("channel-count", params.nChannels); notify->setInt32("sample-rate", params.nSampleRate); break; } case OMX_AUDIO_CodingAndroidOPUS: { OMX_AUDIO_PARAM_ANDROID_OPUSTYPE params; Loading media/libstagefright/include/media/stagefright/ACodec.h +2 −0 Original line number Diff line number Diff line Loading @@ -461,6 +461,8 @@ private: status_t setupEAC3Codec(bool encoder, int32_t numChannels, int32_t sampleRate); status_t setupAC4Codec(bool encoder, int32_t numChannels, int32_t sampleRate); status_t selectAudioPortFormat( OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE desiredFormat); Loading Loading
media/libstagefright/ACodec.cpp +60 −0 Original line number Diff line number Diff line Loading @@ -2237,6 +2237,15 @@ status_t ACodec::configureCodec( } else { err = setupEAC3Codec(encoder, numChannels, sampleRate); } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AC4)) { int32_t numChannels; int32_t sampleRate; if (!msg->findInt32("channel-count", &numChannels) || !msg->findInt32("sample-rate", &sampleRate)) { err = INVALID_OPERATION; } else { err = setupAC4Codec(encoder, numChannels, sampleRate); } } if (err != OK) { Loading Loading @@ -2893,6 +2902,38 @@ status_t ACodec::setupEAC3Codec( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidEac3, &def, sizeof(def)); } status_t ACodec::setupAC4Codec( bool encoder, int32_t numChannels, int32_t sampleRate) { status_t err = setupRawAudioFormat( encoder ? kPortIndexInput : kPortIndexOutput, sampleRate, numChannels); if (err != OK) { return err; } if (encoder) { ALOGW("AC4 encoding is not supported."); return INVALID_OPERATION; } OMX_AUDIO_PARAM_ANDROID_AC4TYPE def; InitOMXParams(&def); def.nPortIndex = kPortIndexInput; err = mOMXNode->getParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc4, &def, sizeof(def)); if (err != OK) { return err; } def.nChannels = numChannels; def.nSampleRate = sampleRate; return mOMXNode->setParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc4, &def, sizeof(def)); } static OMX_AUDIO_AMRBANDMODETYPE pickModeFromBitRate( bool isAMRWB, int32_t bps) { if (isAMRWB) { Loading Loading @@ -5246,6 +5287,25 @@ status_t ACodec::getPortFormat(OMX_U32 portIndex, sp<AMessage> ¬ify) { break; } case OMX_AUDIO_CodingAndroidAC4: { OMX_AUDIO_PARAM_ANDROID_AC4TYPE params; InitOMXParams(¶ms); params.nPortIndex = portIndex; err = mOMXNode->getParameter( (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc4, ¶ms, sizeof(params)); if (err != OK) { return err; } notify->setString("mime", MEDIA_MIMETYPE_AUDIO_AC4); notify->setInt32("channel-count", params.nChannels); notify->setInt32("sample-rate", params.nSampleRate); break; } case OMX_AUDIO_CodingAndroidOPUS: { OMX_AUDIO_PARAM_ANDROID_OPUSTYPE params; Loading
media/libstagefright/include/media/stagefright/ACodec.h +2 −0 Original line number Diff line number Diff line Loading @@ -461,6 +461,8 @@ private: status_t setupEAC3Codec(bool encoder, int32_t numChannels, int32_t sampleRate); status_t setupAC4Codec(bool encoder, int32_t numChannels, int32_t sampleRate); status_t selectAudioPortFormat( OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE desiredFormat); Loading