Skip to content

Commit

Permalink
[rbp/omxplayer] Fix check for contiguous audio buffers
Browse files Browse the repository at this point in the history
The check for contiguous audio buffers is not sufficient in #3022 causes problems with AAC audio
  • Loading branch information
popcornmix committed Aug 15, 2013
1 parent febebb7 commit daeb48e
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp
Expand Up @@ -175,11 +175,12 @@ int COMXAudioCodecOMX::GetData(BYTE** dst)
{
if (!m_bGotFrame)
return 0;

int inLineSize, outLineSize;
/* input audio is aligned */
int inputSize = m_dllAvUtil.av_samples_get_buffer_size(NULL, m_pCodecContext->channels, m_pFrame1->nb_samples, m_pCodecContext->sample_fmt, 0);
int inputSize = m_dllAvUtil.av_samples_get_buffer_size(&inLineSize, m_pCodecContext->channels, m_pFrame1->nb_samples, m_pCodecContext->sample_fmt, 0);
/* output audio will be packed */
int outputSize = m_dllAvUtil.av_samples_get_buffer_size(NULL, m_pCodecContext->channels, m_pFrame1->nb_samples, m_desiredSampleFormat, 1);
int outputSize = m_dllAvUtil.av_samples_get_buffer_size(&outLineSize, m_pCodecContext->channels, m_pFrame1->nb_samples, m_desiredSampleFormat, 1);
bool cont = !m_pFrame1->data[1] || (m_pFrame1->data[1] == m_pFrame1->data[0] + inLineSize && inLineSize == outLineSize && inLineSize * m_pCodecContext->channels == inputSize);

if (m_iBufferOutputAlloced < outputSize)
{
Expand Down Expand Up @@ -224,7 +225,7 @@ int COMXAudioCodecOMX::GetData(BYTE** dst)
else
{
/* if it is already contiguous, just return decoded frame */
if (inputSize == outputSize)
if (cont)
{
*dst = m_pFrame1->data[0];
}
Expand All @@ -242,7 +243,7 @@ int COMXAudioCodecOMX::GetData(BYTE** dst)

if (m_bFirstFrame)
{
CLog::Log(LOGDEBUG, "COMXAudioCodecOMX::GetData size=%d/%d cont=%d buf=%p", inputSize, outputSize, inputSize == outputSize, *dst);
CLog::Log(LOGDEBUG, "COMXAudioCodecOMX::GetData size=%d/%d line=%d/%d cont=%d buf=%p", inputSize, outputSize, inLineSize, outLineSize, cont, *dst);
m_bFirstFrame = false;
}
return outputSize;
Expand Down

0 comments on commit daeb48e

Please sign in to comment.