diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-01-11 20:40:51 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-01-11 20:40:51 +0000 |
commit | b27ec53011b4c3ae0dabded53e435c3c4a3fe57a (patch) | |
tree | cb4be8102de64a4bc98cfda6cc9498ec75494974 /libmpcodecs | |
parent | e8dded6d4fdec359fd8753c1893db2900d79dcb2 (diff) | |
download | mpv-b27ec53011b4c3ae0dabded53e435c3c4a3fe57a.tar.bz2 mpv-b27ec53011b4c3ae0dabded53e435c3c4a3fe57a.tar.xz |
Let the format filter do the AC3 endianness conversion instead of duplicating
the conversion code over and over.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30285 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/ad_hwac3.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/libmpcodecs/ad_hwac3.c b/libmpcodecs/ad_hwac3.c index afad9c615b..eb9dce072f 100644 --- a/libmpcodecs/ad_hwac3.c +++ b/libmpcodecs/ad_hwac3.c @@ -16,6 +16,7 @@ #include "help_mp.h" #include "mpbswap.h" #include "libavutil/common.h" +#include "libavutil/intreadwrite.h" #include "ad_internal.h" @@ -151,7 +152,7 @@ static int preinit(sh_audio_t *sh) sh->audio_in_minsize = 8192; sh->channels = 2; sh->samplesize = 2; - sh->sample_format = AF_FORMAT_AC3_NE; + sh->sample_format = AF_FORMAT_AC3_BE; return 1; } @@ -198,22 +199,12 @@ static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int m } else if(isdts == 0) { - uint16_t *buf16 = (uint16_t *)buf; - buf16[0] = 0xF872; // iec 61937 syncword 1 - buf16[1] = 0x4E1F; // iec 61937 syncword 2 - buf16[2] = 0x0001; // data-type ac3 - buf16[2] |= (sh_audio->a_in_buffer[5] & 0x7) << 8; // bsmod - buf16[3] = len << 3; // number of bits in payload -#if HAVE_BIGENDIAN + AV_WB16(buf, 0xF872); // iec 61937 syncword 1 + AV_WB16(buf + 2, 0x4E1F); // iec 61937 syncword 2 + buf[4] = sh_audio->a_in_buffer[5] & 0x7; // bsmod + buf[5] = 0x01; // data-type ac3 + AV_WB16(buf + 6, len << 3); // number of bits in payload 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); return 6144; |