[vlc-commits] demux: ts: BSSD: probe secondary PMT descriptor (fix #2939)

Francois Cartegnie git at videolan.org
Sat Jun 7 13:40:44 CEST 2014


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sat Jun  7 13:36:41 2014 +0200| [dd4ad1f966efc22d9233f326613dec669c19e3d6] | committer: Francois Cartegnie

demux: ts: BSSD: probe secondary PMT descriptor (fix #2939)

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=dd4ad1f966efc22d9233f326613dec669c19e3d6
---

 modules/demux/ts.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/modules/demux/ts.c b/modules/demux/ts.c
index 5825bfc..24d5e99 100644
--- a/modules/demux/ts.c
+++ b/modules/demux/ts.c
@@ -3645,6 +3645,7 @@ static void PMTSetupEs0x06( demux_t *p_demux, ts_pid_t *pid,
                             const dvbpsi_pmt_es_t *p_es )
 {
     es_format_t *p_fmt = &pid->es->fmt;
+    dvbpsi_descriptor_t *p_subs_dr = PMTEsFindDescriptor( p_es, 0x59 );
 
     if( PMTEsHasRegistration( p_demux, p_es, "AC-3" ) ||
         PMTEsFindDescriptor( p_es, 0x6a ) ||
@@ -3668,8 +3669,10 @@ static void PMTSetupEs0x06( demux_t *p_demux, ts_pid_t *pid,
         p_fmt->i_cat = AUDIO_ES;
         p_fmt->i_codec = VLC_CODEC_DTS;
     }
-    else if( PMTEsHasRegistration( p_demux, p_es, "BSSD" ) )
+    else if( PMTEsHasRegistration( p_demux, p_es, "BSSD" ) && !p_subs_dr )
     {
+        /* BSSD is AES3 DATA, but could also be subtitles
+         * we need to check for secondary descriptor then s*/
         p_fmt->i_cat = AUDIO_ES;
         p_fmt->b_packetized = true;
         p_fmt->i_codec = VLC_CODEC_302M;
@@ -3682,10 +3685,8 @@ static void PMTSetupEs0x06( demux_t *p_demux, ts_pid_t *pid,
     else
     {
         /* Subtitle/Teletext/VBI fallbacks */
-        dvbpsi_descriptor_t *p_dr = PMTEsFindDescriptor( p_es, 0x59 );
-
         dvbpsi_subtitling_dr_t *p_sub;
-        if( p_dr && ( p_sub = dvbpsi_DecodeSubtitlingDr( p_dr ) ) )
+        if( p_subs_dr && ( p_sub = dvbpsi_DecodeSubtitlingDr( p_subs_dr ) ) )
         {
             for( int i = 0; i < p_sub->i_subtitles_number; i++ )
             {



More information about the vlc-commits mailing list