status_t ExtendedCodec::setAudioFormat( const sp<AMessage> &msg, const char* mime, sp<IOMX> OMXhandle, IOMX::node_id nodeID, bool isEncoder ) { ALOGV("setAudioFormat called"); status_t err = OK; if ((!strcasecmp(MEDIA_MIMETYPE_AUDIO_AC3, mime)) || (!strcasecmp(MEDIA_MIMETYPE_AUDIO_EAC3, mime))){ int32_t numChannels, sampleRate; /* Commenting follwoing call as AC3 soft decoder does not need it and it causes issue with playback*/ //setAC3Format(numChannels, sampleRate, OMXhandle, nodeID); CHECK(msg->findInt32("channel-count", &numChannels)); CHECK(msg->findInt32("sample-rate", &sampleRate)); setAC3Format(numChannels, sampleRate, OMXhandle, nodeID); } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_EVRC, mime)) { int32_t numChannels, sampleRate; CHECK(msg->findInt32("channel-count", &numChannels)); CHECK(msg->findInt32("sample-rate", &sampleRate)); setEVRCFormat(numChannels, sampleRate, OMXhandle, nodeID, isEncoder ); } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_QCELP, mime)) { int32_t numChannels, sampleRate; CHECK(msg->findInt32("channel-count", &numChannels)); CHECK(msg->findInt32("sample-rate", &sampleRate)); setQCELPFormat(numChannels, sampleRate, OMXhandle, nodeID, isEncoder); } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_WMA, mime)) { err = setWMAFormat(msg, OMXhandle, nodeID, isEncoder); } return err; }
status_t ExtendedCodec::setWMAFormat( const sp<MetaData> &meta, sp<IOMX> OMXhandle, IOMX::node_id nodeID, bool isEncoder ) { sp<AMessage> msg = new AMessage(); msg->clear(); convertMetaDataToMessage(meta, &msg); return setWMAFormat(msg, OMXhandle, nodeID, isEncoder); }
status_t FFMPEGSoftCodec::setAudioFormat( const sp<AMessage> &msg, const char* mime, sp<IOMX> OMXhandle, IOMX::node_id nodeID, bool isEncoder ) { ALOGV("setAudioFormat called"); status_t err = OK; if (isEncoder) { ALOGE("Encoding not supported"); err = BAD_VALUE; } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_WMA, mime)) { err = setWMAFormat(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setWMAFormat() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_VORBIS, mime)) { err = setVORBISFormat(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setVORBISFormat() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_RA, mime)) { err = setRAFormat(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setRAFormat() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_FLAC, mime)) { err = setFLACFormat(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setFLACFormat() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II, mime)) { err = setMP2Format(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setMP2Format() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_AC3, mime)) { err = setAC3Format(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setAC3Format() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_APE, mime)) { err = setAPEFormat(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setAPEFormat() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_DTS, mime)) { err = setDTSFormat(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setDTSFormat() failed (err = %d)", err); } } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_FFMPEG, mime)) { err = setFFmpegAudioFormat(msg, OMXhandle, nodeID); if (err != OK) { ALOGE("setFFmpegAudioFormat() failed (err = %d)", err); } } ALOGV("setAudioFormat: %s", msg->debugString(0).c_str()); return err; }