[vlc-commits] demux: mp4: handle pps/sps less AVC Intra (fix #15762)

Francois Cartegnie git at videolan.org
Thu Dec 3 17:34:57 CET 2015


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Dec  3 16:28:19 2015 +0100| [289691ced2843104223d96d24f892a3f888c6edb] | committer: Francois Cartegnie

demux: mp4: handle pps/sps less AVC Intra (fix #15762)

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

 modules/demux/Makefile.am   |    1 +
 modules/demux/mp4/essetup.c |   27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/modules/demux/Makefile.am b/modules/demux/Makefile.am
index 18db3e1..b0e327c 100644
--- a/modules/demux/Makefile.am
+++ b/modules/demux/Makefile.am
@@ -197,6 +197,7 @@ libmp4_plugin_la_SOURCES = demux/mp4/mp4.c demux/mp4/mp4.h \
                            demux/mp4/libmp4.c demux/mp4/libmp4.h \
                            demux/mp4/id3genres.h demux/mp4/languages.h \
                            demux/asf/asfpacket.c demux/asf/asfpacket.h \
+                           demux/mp4/avci.h \
                            demux/mp4/essetup.c demux/mp4/meta.c
 libmp4_plugin_la_LIBADD = $(LIBM)
 libmp4_plugin_la_LDFLAGS = $(AM_LDFLAGS)
diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c
index 0ae48a8..c8be5a3 100644
--- a/modules/demux/mp4/essetup.c
+++ b/modules/demux/mp4/essetup.c
@@ -25,6 +25,7 @@
 #endif
 
 #include "mp4.h"
+#include "avci.h"
 
 #include <vlc_demux.h>
 #include <vlc_aout.h>
@@ -395,6 +396,32 @@ int SetupVideoES( demux_t *p_demux, mp4_track_t *p_track, MP4_Box_t *p_sample )
             break;
         }
 
+        case VLC_FOURCC( 'a', 'i', '5', 'p' ):
+        case VLC_FOURCC( 'a', 'i', '5', 'q' ):
+        case VLC_FOURCC( 'a', 'i', '5', '2' ):
+        case VLC_FOURCC( 'a', 'i', '5', '3' ):
+        case VLC_FOURCC( 'a', 'i', '5', '5' ):
+        case VLC_FOURCC( 'a', 'i', '5', '6' ):
+        case VLC_FOURCC( 'a', 'i', '1', 'p' ):
+        case VLC_FOURCC( 'a', 'i', '1', 'q' ):
+        case VLC_FOURCC( 'a', 'i', '1', '2' ):
+        case VLC_FOURCC( 'a', 'i', '1', '3' ):
+        case VLC_FOURCC( 'a', 'i', '1', '5' ):
+        case VLC_FOURCC( 'a', 'i', '1', '6' ):
+        {
+            if( !p_track->fmt.i_extra && p_track->fmt.video.i_width < UINT16_MAX )
+            {
+                const MP4_Box_t *p_fiel = MP4_BoxGet( p_sample, "fiel" );
+                if( p_fiel && BOXDATA(p_fiel) )
+                {
+                    p_track->fmt.p_extra =
+                            AVCi_create_AnnexB( p_track->fmt.video.i_width,
+                                              !!BOXDATA(p_fiel)->i_flags, &p_track->fmt.i_extra );
+                }
+            }
+            break;
+        }
+
         default:
             msg_Dbg( p_demux, "Unrecognized FourCC %4.4s", (char *)&p_sample->i_type );
             break;



More information about the vlc-commits mailing list