Il giorno gio, 23/07/2009 alle 14.22 -0300, Dâniel Fraga ha scritto: > On Wed, 22 Jul 2009 11:13:36 +0200 > Nico Sabbi <Nicola.Sabbi@xxxxxxxx> wrote: > > > in order to fix this I'll have to do something very nasty: hardcode > > substream_ids to codec type when there's and HDMV descriptor. Horrid, > > but it's the only way > > I don't know if it's related but "Christian P. Schmidt" > <schmidt@xxxxxxxxx> posted a patch on the ffmpeg devel list: > > "Patch for LPCM in mpeg-ts (as seen on bluray)" > The attached quick and dirty patch detects the MLP stream with -ausid 0x72, but the decoder doesn't even start: [mlp @ 0xb7a660]There must be no extraword for MLP. Unknown/missing audio format -> no sound ADecoder init failed :( Cannot find codec for audio format 0x20504C4D. I don't even know what it's complaining about, maybe an extension that ffmlp doesn't handle?
Index: libmpdemux/demux_ts.c =================================================================== --- libmpdemux/demux_ts.c (revisione 29438) +++ libmpdemux/demux_ts.c (copia locale) @@ -77,6 +77,7 @@ AUDIO_DTS = 0x2001, AUDIO_LPCM_BE = 0x10001, AUDIO_AAC = mmioFOURCC('M', 'P', '4', 'A'), + AUDIO_MLP = mmioFOURCC('M', 'L', 'P', ' '), SPU_DVD = 0x3000000, SPU_DVB = 0x3000001, PES_PRIVATE1 = 0xBD00000, @@ -244,7 +245,7 @@ } TS_pids_t; -#define IS_AUDIO(x) (((x) == AUDIO_MP2) || ((x) == AUDIO_A52) || ((x) == AUDIO_LPCM_BE) || ((x) == AUDIO_AAC) || ((x) == AUDIO_DTS)) +#define IS_AUDIO(x) (((x) == AUDIO_MP2) || ((x) == AUDIO_A52) || ((x) == AUDIO_LPCM_BE) || ((x) == AUDIO_AAC) || ((x) == AUDIO_DTS) || ((x) == AUDIO_MLP)) #define IS_VIDEO(x) (((x) == VIDEO_MPEG1) || ((x) == VIDEO_MPEG2) || ((x) == VIDEO_MPEG4) || ((x) == VIDEO_H264) || ((x) == VIDEO_AVC) || ((x) == VIDEO_VC1)) static int ts_parse(demuxer_t *demuxer, ES_stream_t *es, unsigned char *packet, int probe); @@ -871,6 +872,8 @@ mp_msg(MSGT_DEMUXER, MSGL_INFO, "AUDIO LPCM(pid=%d)", param->apid); else if(param->atype == AUDIO_AAC) mp_msg(MSGT_DEMUXER, MSGL_INFO, "AUDIO AAC(pid=%d)", param->apid); + else if(param->atype == AUDIO_MLP) + mp_msg(MSGT_DEMUXER, MSGL_INFO, "AUDIO MLP(pid=%d)", param->apid); else { audio_found = 0; @@ -1410,8 +1413,14 @@ if(stream_id==0xfd) { int ssid = parse_pes_extension_fields(p, pkt_len); + //fprintf(stderr, "\r\nssid: %d, 0x%x\r\n", ssid, ssid); if((audio_substream_id!=-1) && (ssid != audio_substream_id)) return 0; + if(ssid == 0x72) + { + es->type = type_from_pmt = AUDIO_MLP; + //fprintf(stderr, "\r\nFORZO MLP\r\n"); + } } p += header_len + 9;
_______________________________________________ MPlayer-users mailing list MPlayer-users@xxxxxxxxxxxx https://lists.mplayerhq.hu/mailman/listinfo/mplayer-users