[vlc-commits] demux: ts: process private pmt descriptor according to registration
Francois Cartegnie
git at videolan.org
Sun Jan 24 19:23:01 CET 2016
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sun Jan 24 17:47:16 2016 +0100| [3a8fd592f112d36f9ba9467473f9fd716741886c] | committer: Francois Cartegnie
demux: ts: process private pmt descriptor according to registration
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3a8fd592f112d36f9ba9467473f9fd716741886c
---
modules/demux/mpeg/ts.c | 41 +++++++++++++++++++++++++++++++++--------
1 file changed, 33 insertions(+), 8 deletions(-)
diff --git a/modules/demux/mpeg/ts.c b/modules/demux/mpeg/ts.c
index 8abc323..04e3147 100644
--- a/modules/demux/mpeg/ts.c
+++ b/modules/demux/mpeg/ts.c
@@ -5289,7 +5289,7 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t
for( const dvbpsi_descriptor_t *p_dr = p_firstdr; p_dr != NULL; p_dr = p_dr->p_next )
{
- /* special descriptors handling */
+ /* general descriptors handling < 0x40 and scoring */
switch(p_dr->i_tag)
{
case 0x05: /* Registration Descriptor */
@@ -5340,13 +5340,7 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t
p_pmt->iod = IODNew( VLC_OBJECT(p_demux), p_dr->i_length, p_dr->p_data );
break;
- case 0x88: /* EACEM Simulcast HD Logical channels ordering */
- msg_Dbg( p_demux, " * PMT descriptor : EACEM Simulcast HD" );
- /* TODO: apply visibility flags */
- break;
-
case 0xC1:
- msg_Dbg( p_demux, " * PMT descriptor : Digital copy control (0xC1)" );
i_arib_score_flags |= 1 << 2;
break;
@@ -5355,7 +5349,8 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t
break;
default:
- msg_Dbg( p_demux, " * PMT descriptor : unknown (0x%x)", p_dr->i_tag );
+ if( p_dr->i_tag < 0x40 )
+ msg_Dbg( p_demux, " * PMT descriptor : unknown (0x%x)", p_dr->i_tag );
break;
}
}
@@ -5368,6 +5363,36 @@ static void ParsePMTRegistrations( demux_t *p_demux, const dvbpsi_descriptor_t
p_sys->arib.e_mode = ARIBMODE_ENABLED;
}
+ /* Now process private descriptors >= 0x40 */
+ for( const dvbpsi_descriptor_t *p_dr = p_firstdr; p_dr != NULL; p_dr = p_dr->p_next )
+ {
+ if( p_dr->i_tag < 0x40 )
+ continue;
+
+ switch(p_dr->i_tag)
+ {
+ case 0x88: /* EACEM Simulcast HD Logical channels ordering */
+ if( registration_type == TS_PMT_REGISTRATION_NONE )
+ msg_Dbg( p_demux, " * PMT descriptor : EACEM Simulcast HD" );
+ /* TODO: apply visibility flags */
+ break;
+
+ case 0xC1:
+ if( registration_type == TS_PMT_REGISTRATION_ARIB )
+ msg_Dbg( p_demux, " * PMT descriptor : Digital copy control (0xC1)" );
+ break;
+
+ case 0xDE:
+ if( registration_type == TS_PMT_REGISTRATION_ARIB )
+ msg_Dbg( p_demux, " * PMT descriptor : Content availability (0xDE)" );
+ break;
+
+ default:
+ msg_Dbg( p_demux, " * PMT descriptor : unknown (0x%x)", p_dr->i_tag );
+ break;
+ }
+ }
+
*p_registration_type = registration_type;
}
More information about the vlc-commits
mailing list