From a7e71f3853bb31291052be74eba0334ee0d92078 Mon Sep 17 00:00:00 2001 From: Jose Alberto Reguero Date: Mon, 17 Oct 2011 11:06:50 +0300 Subject: Added E-AC-3 to demux_mpeg_pes --- src/demuxers/demux_mpeg_pes.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/demuxers/demux_mpeg_pes.c b/src/demuxers/demux_mpeg_pes.c index b2d0f2fa9..9ef7221f0 100644 --- a/src/demuxers/demux_mpeg_pes.c +++ b/src/demuxers/demux_mpeg_pes.c @@ -944,6 +944,34 @@ static int32_t parse_private_stream_1(demux_mpeg_pes_t *this, uint8_t *p, buf_el } return this->packet_len + result; + /* EVOB AC3/E-AC-3 */ + } else if ((p[0]&0xf0) == 0xc0) { + + track = p[0] & 0x0F; /* hack : ac3 track */ + buf->decoder_info[1] = p[1]; /* Number of frame headers */ + buf->decoder_info[2] = p[2] << 8 | p[3]; /* First access unit pointer */ + + buf->content = p+4; + buf->size = this->packet_len-4; + if (p[4] == 0x0b && p[5] == 0x77 && ((p[9] >> 3) & 0x1f) <= 8) { + buf->type = BUF_AUDIO_A52 + track; + } else { + buf->type = BUF_AUDIO_EAC3 + track; + buf->decoder_flags |= BUF_FLAG_FRAME_END; + } + buf->pts = this->pts; + if( !this->preview_mode ) + check_newpts( this, this->pts, PTS_AUDIO ); + + if(this->audio_fifo) { + this->audio_fifo->put (this->audio_fifo, buf); + lprintf ("A52/EAC3 PACK put on fifo\n"); + + } else { + buf->free_buffer(buf); + } + return this->packet_len + result; + } else if ((p[0]&0xf0) == 0xa0) { int pcm_offset; -- cgit v1.2.3