[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