changeset 32580:ed5e29af7847

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.
author reimar
date Sun, 28 Nov 2010 18:02:50 +0000
parents b25a7879b23c
children 9a3c0341aa39
files libmpdemux/demux_ts.c
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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;