]> git.sesse.net Git - vlc/commitdiff
avformat : add an option to force a specific format
authorSébastien Escudier <sebastien-devel@celeos.eu>
Thu, 16 Feb 2012 14:08:33 +0000 (15:08 +0100)
committerSébastien Escudier <sebastien-devel@celeos.eu>
Fri, 17 Feb 2012 07:53:24 +0000 (08:53 +0100)
modules/demux/avformat/avformat.c
modules/demux/avformat/demux.c

index 70ce57f303a4603d8926c1ec854890870a606bd4..18f864070de71845e3e5cb92a668cc6af8d86f06 100644 (file)
@@ -32,6 +32,9 @@
 
 #include "avformat.h"
 
+#define FORMAT_TEXT N_( "Format name" )
+#define FORMAT_LONGTEXT N_( "Internal libavcodec format name" )
+
 vlc_module_begin ()
 #endif /* MERGE_FFMPEG */
     add_shortcut( "ffmpeg", "avformat" )
@@ -41,6 +44,7 @@ vlc_module_begin ()
     set_shortname( N_("Avformat") )
     set_capability( "demux", 2 )
     set_callbacks( OpenDemux, CloseDemux )
+    add_string( "ffmpeg-format", NULL, FORMAT_TEXT, FORMAT_LONGTEXT, true )
 
 #ifdef ENABLE_SOUT
     /* mux submodule */
index d346f0f665ef8434f23ff0adf5581e8d6ef677c6..7356bfe2c6ed952f49fa3b2eebae5e2f8c402d50 100644 (file)
@@ -112,7 +112,7 @@ int OpenDemux( vlc_object_t *p_this )
     demux_t       *p_demux = (demux_t*)p_this;
     demux_sys_t   *p_sys;
     AVProbeData   pd;
-    AVInputFormat *fmt;
+    AVInputFormat *fmt = NULL;
     unsigned int  i;
     int64_t       i_start_time = -1;
     bool          b_can_seek;
@@ -141,8 +141,16 @@ int OpenDemux( vlc_object_t *p_this )
     av_register_all(); /* Can be called several times */
     vlc_avcodec_unlock();
 
+    char *psz_format = var_InheritString( p_this, "ffmpeg-format" );
+    if( psz_format )
+    {
+        if( fmt = av_find_input_format(psz_format) )
+            msg_Dbg( p_demux, "forcing format: %s", fmt->name );
+        free( psz_format );
+    }
+
     /* Guess format */
-    if( !( fmt = av_probe_input_format( &pd, 1 ) ) )
+    if( !fmt && !( fmt = av_probe_input_format( &pd, 1 ) ) )
     {
         msg_Dbg( p_demux, "couldn't guess format" );
         free( psz_url );