diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-11-28 18:02:50 +0000 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-12-16 05:10:18 +0200 |
commit | 831395e79bc9dd225704f6451ae7ccb387955540 (patch) | |
tree | 2c2800de59e9e52dc2dbbaa7b0b2b350eb7db423 | |
parent | ce74aa0e963cd0451efbc97d02dd423f9a1dbd45 (diff) | |
download | mpv-831395e79bc9dd225704f6451ae7ccb387955540.tar.bz2 mpv-831395e79bc9dd225704f6451ae7ccb387955540.tar.xz |
demux-ts: fix TS files with MP4 ES AAC descriptor
Fix TS files with MP4 ES AAC descriptor to be correctly recognized
as AAC and not AAC in LATM.
This fixes playback of http://samples.mplayerhq.hu/A-codecs/AAC/freetv_aac_latm.ts,
actual LATM samples seem unaffected.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32667 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libmpdemux/demux_ts.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c index 3eb108913a..2c8d73ab2c 100644 --- a/libmpdemux/demux_ts.c +++ b/libmpdemux/demux_ts.c @@ -2349,8 +2349,9 @@ static int parse_descriptors(struct pmt_es_t *es, uint8_t *ptr) mp_msg(MSGT_DEMUX, MSGL_DBG2, "FORMAT %s\n", es->format_descriptor); } } - else if(ptr[j] == 0x1e) + else if(ptr[j] == 0x1e || ptr[j] == 0x1f) { + // 0x1f is FMC, but currently it is easiest to handle them the same way es->mp4_es_id = (ptr[j+2] << 8) | ptr[j+3]; mp_msg(MSGT_DEMUX, MSGL_V, "SL Descriptor: ES_ID: %d(%x), pid: %d\n", es->mp4_es_id, es->mp4_es_id, es->pid); } @@ -2402,6 +2403,7 @@ static int parse_pmt(ts_priv_t * priv, uint16_t progid, uint16_t pid, int is_sta struct pmt_es_t *tmp_es; ts_section_t *section; ES_stream_t *tss; + int i; idx = progid_idx_in_pmt(priv, progid); @@ -2524,6 +2526,10 @@ static int parse_pmt(ts_priv_t * priv, uint16_t progid, uint16_t pid, int is_sta break; case 0x11: pmt->es[idx].type = AUDIO_AAC_LATM; + for (i = 0; i < pmt->mp4es_cnt; i++) + if (pmt->mp4es[i].id == pmt->es[idx].mp4_es_id && + pmt->mp4es[i].decoder.object_type == AUDIO_AAC) + pmt->es[idx].type = AUDIO_AAC; break; case 0x1b: pmt->es[idx].type = VIDEO_H264; |