vlc | branch: master | Francois Cartegnie <[email protected]> | Thu Apr 10 19:55:30 2014 +0200| [cb2fda7d3ad67c69f1b64209c25cc4425f79945c] | committer: Francois Cartegnie
demux: ts: handle different LPCM types > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cb2fda7d3ad67c69f1b64209c25cc4425f79945c --- modules/demux/ts.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/modules/demux/ts.c b/modules/demux/ts.c index 9529d2d..85100f5 100644 --- a/modules/demux/ts.c +++ b/modules/demux/ts.c @@ -2423,9 +2423,6 @@ static void PIDFillFormat( const ts_es_t *es, int i_stream_type ) case 0x82: /* SCTE-27 (sub) */ es_format_Init( fmt, SPU_ES, VLC_CODEC_SCTE_27 ); break; - case 0x83: /* LPCM (audio) */ - es_format_Init( fmt, AUDIO_ES, VLC_CODEC_DVD_LPCM ); - break; case 0x84: /* SDDS (audio) */ es_format_Init( fmt, AUDIO_ES, VLC_CODEC_SDDS ); break; @@ -3788,6 +3785,21 @@ static void PMTSetupEs0xA0( demux_t *p_demux, ts_pid_t *pid, p_fmt->b_packetized = true; } +static void PMTSetupEs0x83( const dvbpsi_pmt_t *p_pmt, ts_pid_t *pid ) +{ + /* WiDi broadcasts without registration on PMT 0x1, PCR 0x1000 and + * with audio track pid being 0x1100..0x11FF */ + if ( p_pmt->i_program_number == 0x1 && + p_pmt->i_pcr_pid == 0x1000 && + ( pid->i_pid >> 8 ) == 0x11 ) + { + /* Not enough ? might contain 0x83 private descriptor, 2 bytes 0x473F */ + es_format_Init( &pid->es->fmt, AUDIO_ES, VLC_CODEC_WIDI_LPCM ); + } + else + es_format_Init( &pid->es->fmt, AUDIO_ES, VLC_CODEC_DVD_LPCM ); +} + static void PMTSetupEsHDMV( ts_pid_t *pid, const dvbpsi_pmt_es_t *p_es ) { es_format_t *p_fmt = &pid->es->fmt; @@ -4093,6 +4105,11 @@ static void PMTCallBack( void *data, dvbpsi_pmt_t *p_pmt ) { PMTSetupEs0xA0( p_demux, pid, p_es ); } + else if ( p_es->i_type == 0x83 ) + { + /* LPCM (audio) */ + PMTSetupEs0x83( p_pmt, pid ); + } else if( registration_type == TS_REGISTRATION_HDMV ) { PMTSetupEsHDMV( pid, p_es ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
