diff options
author | Jason M Harper <jasonx.m.harper@intel.com> | 2011-05-06 10:35:21 -0700 |
---|---|---|
committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:03:38 -0700 |
commit | e503ec3c9728cb056beb28d4cfbe267962bdd1c9 (patch) | |
tree | de09a5517c6ced1882f9064110a0b269d1f94dbc | |
parent | a08b0640a5c18bef7ddf8493abb249dc05df2f2f (diff) | |
download | wrs_omxil_core-e503ec3c9728cb056beb28d4cfbe267962bdd1c9.tar.gz |
wrs_omxil_core: Add support for AMR codec ports.
BZ: 1772
Added helper class/functions for AMR codecs.
All IPP audio codecs being moved to OMX wrappers for consistency and
performance/power improvements.
Change-Id: Iab26290f2be699979fff3a542150cb08d0a35eba
Signed-off-by: Jason M Harper <jasonx.m.harper@intel.com>
-rw-r--r-- | base/inc/portaudio.h | 16 | ||||
-rw-r--r-- | base/src/portaudio.cpp | 50 |
2 files changed, 66 insertions, 0 deletions
diff --git a/base/inc/portaudio.h b/base/inc/portaudio.h index 1c0debf..280f6f7 100644 --- a/base/inc/portaudio.h +++ b/base/inc/portaudio.h @@ -100,4 +100,20 @@ private: /* end of PortPcm */ +class PortAmr : public PortAudio +{ +public: + PortAmr(); + + OMX_ERRORTYPE SetPortAmrParam(const OMX_AUDIO_PARAM_AMRTYPE *p, + bool overwrite_readonly); + const OMX_AUDIO_PARAM_AMRTYPE*GetPortAmrParam(void); + +private: + OMX_AUDIO_PARAM_AMRTYPE amrparam; +}; + +/* end of PortAmr */ + + #endif /* __PORTAUDIO_H */ diff --git a/base/src/portaudio.cpp b/base/src/portaudio.cpp index cab5e36..e0c315b 100644 --- a/base/src/portaudio.cpp +++ b/base/src/portaudio.cpp @@ -274,3 +274,53 @@ const OMX_AUDIO_PARAM_PCMMODETYPE *PortPcm::GetPortPcmParam(void) } /* end of PortPcm */ + +PortAmr::PortAmr() +{ + OMX_AUDIO_PARAM_PORTFORMATTYPE audioparam; + + memcpy(&audioparam, GetPortAudioParam(), sizeof(audioparam)); + audioparam.eEncoding = OMX_AUDIO_CodingAMR; + SetPortAudioParam(&audioparam, false); + + memset(&amrparam, 0, sizeof(amrparam)); + ComponentBase::SetTypeHeader(&amrparam, sizeof(amrparam)); +} + +OMX_ERRORTYPE PortAmr::SetPortAmrParam(const OMX_AUDIO_PARAM_AMRTYPE *p, + bool overwrite_readonly) +{ + if (!overwrite_readonly) { + OMX_ERRORTYPE ret; + + ret = ComponentBase::CheckTypeHeader((void *)p, sizeof(*p)); + if (ret != OMX_ErrorNone) + return ret; + if (amrparam.nPortIndex != p->nPortIndex) + return OMX_ErrorBadPortIndex; + } + else { + OMX_AUDIO_PARAM_PORTFORMATTYPE audioparam; + + memcpy(&audioparam, GetPortAudioParam(), sizeof(audioparam)); + audioparam.nPortIndex = p->nPortIndex; + SetPortAudioParam(&audioparam, true); + + amrparam.nPortIndex = p->nPortIndex; + } + + amrparam.nChannels = p->nChannels; + amrparam.nBitRate = p->nBitRate; + amrparam.eAMRBandMode = p->eAMRBandMode; + amrparam.eAMRDTXMode = p->eAMRDTXMode; + amrparam.eAMRFrameFormat = p->eAMRFrameFormat; + + return OMX_ErrorNone; +} + +const OMX_AUDIO_PARAM_AMRTYPE *PortAmr::GetPortAmrParam(void) +{ + return &amrparam; +} + +/* end of PortAmr */ |