[vlc-commits] demux: mp4: fully check major for f4v
Francois Cartegnie
git at videolan.org
Tue Mar 13 19:09:40 CET 2018
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Tue Mar 13 16:22:45 2018 +0100| [eb2e9471520ef2b3ba8c105da5d095008dc9b6ce] | committer: Francois Cartegnie
demux: mp4: fully check major for f4v
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=eb2e9471520ef2b3ba8c105da5d095008dc9b6ce
---
modules/demux/mp4/libmp4.h | 1 +
modules/demux/mp4/mp4.c | 16 ++++++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/modules/demux/mp4/libmp4.h b/modules/demux/mp4/libmp4.h
index b82961094c..029ea4d052 100644
--- a/modules/demux/mp4/libmp4.h
+++ b/modules/demux/mp4/libmp4.h
@@ -37,6 +37,7 @@ typedef int64_t stime_t;
#define MAJOR_isml VLC_FOURCC( 'i', 's', 'm', 'l' )
#define MAJOR_isom VLC_FOURCC( 'i', 's', 'o', 'm' )
#define MAJOR_qt__ VLC_FOURCC( 'q', 't', ' ', ' ' )
+#define MAJOR_f4v VLC_FOURCC( 'f', '4', 'v', ' ' ) /* Adobe Flash */
#define MAJOR_dash VLC_FOURCC( 'd', 'a', 's', 'h' )
#define MAJOR_mp41 VLC_FOURCC( 'm', 'p', '4', '1' )
#define MAJOR_avc1 VLC_FOURCC( 'a', 'v', 'c', '1' )
diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c
index 7b6ca7b130..e6243d0add 100644
--- a/modules/demux/mp4/mp4.c
+++ b/modules/demux/mp4/mp4.c
@@ -685,7 +685,7 @@ static int Open( vlc_object_t * p_this )
bool b_enabled_es;
/* A little test to see if it could be a mp4 */
- if( vlc_stream_Peek( p_demux->s, &p_peek, 11 ) < 11 ) return VLC_EGENERIC;
+ if( vlc_stream_Peek( p_demux->s, &p_peek, 12 ) < 12 ) return VLC_EGENERIC;
switch( VLC_FOURCC( p_peek[4], p_peek[5], p_peek[6], p_peek[7] ) )
{
@@ -701,10 +701,18 @@ static int Open( vlc_object_t * p_this )
case VLC_FOURCC( 'p', 'n', 'o', 't' ):
break;
case ATOM_ftyp:
- /* We don't yet support f4v, but avformat does. */
- if( p_peek[8] == 'f' && p_peek[9] == '4' && p_peek[10] == 'v' )
- return VLC_EGENERIC;
+ {
+ /* Early handle some brands */
+ switch( VLC_FOURCC(p_peek[8], p_peek[9], p_peek[10], p_peek[11]) )
+ {
+ /* We don't yet support f4v, but avformat does. */
+ case MAJOR_f4v:
+ return VLC_EGENERIC;
+ default:
+ break;
+ }
break;
+ }
default:
return VLC_EGENERIC;
}
More information about the vlc-commits
mailing list