diff options
Diffstat (limited to 'omx.c')
| -rw-r--r-- | omx.c | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -944,8 +944,9 @@ void cOmx::SetVideoDecoderExtraBuffers(int extraBuffers) } int cOmx::SetupAudioRender(cAudioCodec::eCodec outputFormat, int channels, - cRpiAudioPort::ePort audioPort, int samplingRate) + cRpiAudioPort::ePort audioPort, int samplingRate, int frameSize) { + ELOG("%d", frameSize); OMX_AUDIO_PARAM_PORTFORMATTYPE format; OMX_INIT_STRUCT(format); format.nPortIndex = 100; @@ -959,7 +960,7 @@ int cOmx::SetupAudioRender(cAudioCodec::eCodec outputFormat, int channels, outputFormat == cAudioCodec::eAC3 ? OMX_AUDIO_CodingDDP : outputFormat == cAudioCodec::eEAC3 ? OMX_AUDIO_CodingDDP : outputFormat == cAudioCodec::eAAC ? OMX_AUDIO_CodingAAC : - outputFormat == cAudioCodec::eAAC ? OMX_AUDIO_CodingAAC : + outputFormat == cAudioCodec::eDTS ? OMX_AUDIO_CodingDTS : OMX_AUDIO_CodingAutoDetect; if (OMX_SetParameter(ILC_GET_HANDLE(m_comp[eAudioRender]), @@ -1009,6 +1010,22 @@ int cOmx::SetupAudioRender(cAudioCodec::eCodec outputFormat, int channels, ELOG("failed to set audio render aac parameters!"); break; + case cAudioCodec::eDTS: + OMX_AUDIO_PARAM_DTSTYPE dts; + OMX_INIT_STRUCT(dts); + dts.nPortIndex = 100; + dts.nChannels = channels; + dts.nSampleRate = samplingRate; + dts.nDtsType = 1; + dts.nFormat = 3; /* 16bit, LE */ + dts.nDtsFrameSizeBytes = frameSize; + OMX_AUDIO_CHANNEL_MAPPING(dts, channels); + + if (OMX_SetParameter(ILC_GET_HANDLE(m_comp[eAudioRender]), + OMX_IndexParamAudioDts, &dts) != OMX_ErrorNone) + ELOG("failed to set audio render dts parameters!"); + break; + case cAudioCodec::ePCM: OMX_AUDIO_PARAM_PCMMODETYPE pcm; OMX_INIT_STRUCT(pcm); |
