From d46f568fb4af861b0bac8d9f76d538cf052c724d Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 15 Sep 2007 16:30:39 +0000 Subject: Handle swab when input length is odd (treat it as if there was an additional 0 byte) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24528 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/ad_hwac3.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'libmpcodecs') diff --git a/libmpcodecs/ad_hwac3.c b/libmpcodecs/ad_hwac3.c index 6cfc4e1485..48e16f135d 100644 --- a/libmpcodecs/ad_hwac3.c +++ b/libmpcodecs/ad_hwac3.c @@ -168,6 +168,11 @@ static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int m memcpy(buf + 8, sh_audio->a_in_buffer, len); #else swab(sh_audio->a_in_buffer, buf + 8, len); + if (len & 1) { + buf[8+len-1] = 0; + buf[8+len] = sh_audio->a_in_buffer[len-1]; + len++; + } #endif memset(buf + 8 + len, 0, 6144 - 8 - len); @@ -361,8 +366,11 @@ static int decode_audio_dts(unsigned char *indata_ptr, int len, unsigned char *b memcpy(&buf[8], indata_ptr, fsize); #else swab(indata_ptr, &buf[8], fsize); - if (fsize & 1) - buf[8+fsize-1] = indata_ptr[fsize-1]; + if (fsize & 1) { + buf[8+fsize-1] = 0; + buf[8+fsize] = indata_ptr[fsize-1]; + fsize++; + } #endif memset(&buf[fsize + 8], 0, nr_samples * 2 * 2 - (fsize + 8)); -- cgit v1.2.3