[vlc-commits] demux: ts: add support for multiview descriptor
Francois Cartegnie
git at videolan.org
Thu Jul 27 10:36:19 CEST 2017
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Jul 27 10:33:04 2017 +0200| [800f01edded9399f4c4721f1fcc35747d5f04678] | committer: Francois Cartegnie
demux: ts: add support for multiview descriptor
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=800f01edded9399f4c4721f1fcc35747d5f04678
---
modules/demux/mpeg/ts_psi.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/modules/demux/mpeg/ts_psi.c b/modules/demux/mpeg/ts_psi.c
index 4c5d0c7871..37ebab8555 100644
--- a/modules/demux/mpeg/ts_psi.c
+++ b/modules/demux/mpeg/ts_psi.c
@@ -922,6 +922,28 @@ explicit_config_too_short:
msg_Err(demux, "Opus descriptor too short");
}
+static void PMTSetupEs0x02( ts_es_t *p_es,
+ const dvbpsi_pmt_es_t *p_dvbpsies )
+{
+ /* MPEG2_stereoscopic_video_format_descriptor */
+ dvbpsi_descriptor_t *p_dr = PMTEsFindDescriptor( p_dvbpsies, 0x34 );
+ if( p_dr && p_dr->i_length > 0 && (p_dr->p_data[0] & 0x80) )
+ {
+ video_multiview_mode_t mode;
+ switch( p_dr->p_data[0] & 0x7F )
+ {
+ case 0x03:
+ mode = MULTIVIEW_STEREO_SBS; break;
+ case 0x04:
+ mode = MULTIVIEW_STEREO_TB; break;
+ case 0x08:
+ default:
+ mode = MULTIVIEW_2D; break;
+ }
+ p_es->fmt.video.multiview_mode = mode;
+ }
+}
+
static void PMTSetupEs0x05PrivateData( demux_t *p_demux, ts_es_t *p_es,
const dvbpsi_pmt_es_t *p_dvbpsies )
{
@@ -1427,6 +1449,9 @@ static void FillPESFromDvbpsiES( demux_t *p_demux,
switch( p_dvbpsies->i_type )
{
+ case 0x02:
+ PMTSetupEs0x02( p_pes->p_es, p_dvbpsies );
+ break;
case 0x05: /* Private data in sections */
p_pes->transport = TS_TRANSPORT_SECTIONS;
PMTSetupEs0x05PrivateData( p_demux, p_pes->p_es, p_dvbpsies );
More information about the vlc-commits
mailing list