From f6e912f53d03e11beaf324468fac2b6f3cfb43bf Mon Sep 17 00:00:00 2001 From: Torsten Jager Date: Fri, 27 Sep 2013 15:52:28 +0200 Subject: demux_qt: simple (E)AC3 support. Works at least with dvb stuff. --- src/demuxers/demux_qt.c | 10 ++++++++++ src/xine-engine/buffer_types.c | 1 + 2 files changed, 11 insertions(+) (limited to 'src') diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c index 44b4dd8b8..41b5c5b5b 100644 --- a/src/demuxers/demux_qt.c +++ b/src/demuxers/demux_qt.c @@ -108,6 +108,8 @@ typedef unsigned int qt_atom; #define IN24_FOURCC ME_FOURCC('i', 'n', '2', '4') #define NI42_FOURCC ME_FOURCC('4', '2', 'n', 'i') #define AVC1_FOURCC ME_FOURCC('a', 'v', 'c', '1') +#define AC_3_FOURCC ME_FOURCC('a', 'c', '-', '3') +#define EAC3_FOURCC ME_FOURCC('e', 'c', '-', '3') #define UDTA_ATOM QT_ATOM('u', 'd', 't', 'a') #define META_ATOM QT_ATOM('m', 'e', 't', 'a') @@ -1283,6 +1285,8 @@ static qt_error parse_trak_atom (qt_trak *trak, * further, do not do load these parameters if the audio is just * PCM ('raw ', 'twos', 'sowt' or 'in24') */ if ((current_stsd_atom_size > 0x24) && + (trak->stsd_atoms[k].audio.codec_fourcc != AC_3_FOURCC) && + (trak->stsd_atoms[k].audio.codec_fourcc != EAC3_FOURCC) && (trak->stsd_atoms[k].audio.codec_fourcc != TWOS_FOURCC) && (trak->stsd_atoms[k].audio.codec_fourcc != SOWT_FOURCC) && (trak->stsd_atoms[k].audio.codec_fourcc != RAW_FOURCC) && @@ -1321,6 +1325,12 @@ static qt_error parse_trak_atom (qt_trak *trak, if (trak->stsd_atoms[k].audio.codec_fourcc == SAMR_FOURCC) trak->stsd_atoms[k].audio.vbr = 1; + if (trak->stsd_atoms[k].audio.codec_fourcc == AC_3_FOURCC) + trak->stsd_atoms[k].audio.vbr = 1; + + if (trak->stsd_atoms[k].audio.codec_fourcc == EAC3_FOURCC) + trak->stsd_atoms[k].audio.vbr = 1; + if (trak->stsd_atoms[k].audio.codec_fourcc == ALAC_FOURCC) { trak->stsd_atoms[k].audio.vbr = 1; /* further, FFmpeg's ALAC decoder requires 36 out-of-band bytes */ diff --git a/src/xine-engine/buffer_types.c b/src/xine-engine/buffer_types.c index edc0957ce..52777db91 100644 --- a/src/xine-engine/buffer_types.c +++ b/src/xine-engine/buffer_types.c @@ -808,6 +808,7 @@ static const audio_db_t audio_db[] = { { 0x2000, ME_FOURCC('m', 's', 0x20, 0x00), + ME_FOURCC('a', 'c', '-', '3'), 0 }, BUF_AUDIO_A52, -- cgit v1.2.3