[MPlayer-dev-eng] [PATCH] bigendian fix for hwac3
elupus
elupus at ecce.se
Fri Sep 14 22:22:07 CEST 2007
"reimar" <subversion at mplayerhq.hu> wrote in message
news:20070914125213.AB4153B613 at natsuki.mplayerhq.hu...
> Author: reimar
> Date: Fri Sep 14 14:52:13 2007
> New Revision: 24456
>
> Log:
> Fix off-by-one error if fsize is odd (does handling that case even make
> sense?)
> and remove a TODO comment that no longer applies.
>
>
> Modified:
> trunk/libmpcodecs/ad_hwac3.c
>
> Modified: trunk/libmpcodecs/ad_hwac3.c
> ==============================================================================
> --- trunk/libmpcodecs/ad_hwac3.c (original)
> +++ trunk/libmpcodecs/ad_hwac3.c Fri Sep 14 14:52:13 2007
> @@ -360,10 +360,9 @@ static int decode_audio_dts(unsigned cha
> #ifdef WORDS_BIGENDIAN
> memcpy(&buf[8], indata_ptr, fsize);
> #else
> - //TODO if fzise is odd, swab doesn't copy the last byte
> swab(indata_ptr, &buf[8], fsize);
> if (fsize & 1)
> - buf[8+fsize] = indata_ptr[fsize];
> + buf[8+fsize-1] = indata_ptr[fsize-1];
> #endif
> memset(&buf[fsize + 8], 0, nr_samples * 2 * 2 - (fsize + 8));
Yea it does. It does, i have a sample somewhere that has the issue. Think it
was dts thou, but still the same. In essence the solution was to extend the
data with a zero for swab to use. This how we handle it in xbmc's dvdplayer.
if( size & 0x1 )
{
swab(src, dst, size-1);
dst+=size-1;
src+=size-1;
dst[0] = 0x0;
dst[1] = src[0];
return size+1;
}
else
{
swab(src, dst, size);
return size;
}
cheers
More information about the MPlayer-dev-eng
mailing list