# HG changeset patch # User reimar # Date 1290967370 0 # Node ID ed5e29af7847802c23f411de354e24fa8672e115 # Parent b25a7879b23c369f001c2a623459f5cdfe348cfb 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. diff -r b25a7879b23c -r ed5e29af7847 libmpdemux/demux_ts.c --- a/libmpdemux/demux_ts.c Sun Nov 28 16:10:56 2010 +0000 +++ b/libmpdemux/demux_ts.c Sun Nov 28 18:02:50 2010 +0000 @@ -2347,8 +2347,9 @@ 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); } @@ -2400,6 +2401,7 @@ struct pmt_es_t *tmp_es; ts_section_t *section; ES_stream_t *tss; + int i; idx = progid_idx_in_pmt(priv, progid); @@ -2522,6 +2524,10 @@ 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;