[MPlayer-cvslog] r22989 - in trunk/libmpdemux: demux_lavf.c demuxer.c demuxer.h extension.c

reimar subversion at mplayerhq.hu
Sat Apr 14 12:03:42 CEST 2007


Author: reimar
Date: Sat Apr 14 12:03:42 2007
New Revision: 22989

Modified:
   trunk/libmpdemux/demux_lavf.c
   trunk/libmpdemux/demuxer.c
   trunk/libmpdemux/demuxer.h
   trunk/libmpdemux/extension.c

Log:
Add lavf_preferred demuxer for lavf formats we want to be probed
before our native demuxers and remove some now unneeded file-extension
hacks.


Modified: trunk/libmpdemux/demux_lavf.c
==============================================================================
--- trunk/libmpdemux/demux_lavf.c	(original)
+++ trunk/libmpdemux/demux_lavf.c	Sat Apr 14 12:03:42 2007
@@ -210,6 +210,29 @@ static int lavf_check_file(demuxer_t *de
 
     return DEMUXER_TYPE_LAVF;
 }
+
+static const char *preferred_list[] = {
+    "dxa",
+    "wv",
+    "nuv",
+    "nut",
+    "gxf",
+    "mxf",
+    NULL
+};
+
+static int lavf_check_preferred_file(demuxer_t *demuxer){
+    if (lavf_check_file(demuxer)) {
+        char **p = preferred_list;
+        lavf_priv_t *priv = demuxer->priv;
+        while (*p) {
+            if (strcmp(*p, priv->avif->name) == 0)
+                return DEMUXER_TYPE_LAVF_PREFERRED;
+            p++;
+        }
+    }
+    return 0;
+}
     
 static demuxer_t* demux_open_lavf(demuxer_t *demuxer){
     AVFormatContext *avfc;
@@ -609,3 +632,18 @@ demuxer_desc_t demuxer_desc_lavf = {
   demux_lavf_control
 };
 
+demuxer_desc_t demuxer_desc_lavf_preferred = {
+  "libavformat preferred demuxer",
+  "lavfpref",
+  "libavformat",
+  "Michael Niedermayer",
+  "supports many formats, requires libavformat",
+  DEMUXER_TYPE_LAVF_PREFERRED,
+  0, // Check after other demuxer
+  lavf_check_preferred_file,
+  demux_lavf_fill_buffer,
+  demux_open_lavf,
+  demux_close_lavf,
+  demux_seek_lavf,
+  demux_lavf_control
+};

Modified: trunk/libmpdemux/demuxer.c
==============================================================================
--- trunk/libmpdemux/demuxer.c	(original)
+++ trunk/libmpdemux/demuxer.c	Sat Apr 14 12:03:42 2007
@@ -64,6 +64,7 @@ extern demuxer_desc_t demuxer_desc_xmms;
 extern demuxer_desc_t demuxer_desc_mpeg_ty;
 extern demuxer_desc_t demuxer_desc_rtp;
 extern demuxer_desc_t demuxer_desc_lavf;
+extern demuxer_desc_t demuxer_desc_lavf_preferred;
 extern demuxer_desc_t demuxer_desc_aac;
 extern demuxer_desc_t demuxer_desc_nut;
 
@@ -74,6 +75,7 @@ demuxer_desc_t* demuxer_list[] = {
   &demuxer_desc_tv,
 #endif
   &demuxer_desc_mf,
+  &demuxer_desc_lavf_preferred,
   &demuxer_desc_avi,
   &demuxer_desc_y4m,
   &demuxer_desc_asf,

Modified: trunk/libmpdemux/demuxer.h
==============================================================================
--- trunk/libmpdemux/demuxer.h	(original)
+++ trunk/libmpdemux/demuxer.h	Sat Apr 14 12:03:42 2007
@@ -55,11 +55,12 @@
 #define DEMUXER_TYPE_MPEG_PES 41
 #define DEMUXER_TYPE_MPEG_GXF 42
 #define DEMUXER_TYPE_NUT 43
+#define DEMUXER_TYPE_LAVF_PREFERRED 44
 
 // This should always match the higest demuxer type number.
 // Unless you want to disallow users to force the demuxer to some types
 #define DEMUXER_TYPE_MIN 0
-#define DEMUXER_TYPE_MAX 43
+#define DEMUXER_TYPE_MAX 44
 
 #define DEMUXER_TYPE_DEMUXERS (1<<16)
 // A virtual demuxer type for the network code

Modified: trunk/libmpdemux/extension.c
==============================================================================
--- trunk/libmpdemux/extension.c	(original)
+++ trunk/libmpdemux/extension.c	Sat Apr 14 12:03:42 2007
@@ -57,20 +57,16 @@ static struct {
 #ifdef USE_WIN32DLL
         { "avs", DEMUXER_TYPE_AVS },
 #endif
-	{ "nut", DEMUXER_TYPE_LAVF },
 	{ "swf", DEMUXER_TYPE_LAVF },
 	{ "flv", DEMUXER_TYPE_LAVF },
 	{ "302", DEMUXER_TYPE_LAVF },
         { "264", DEMUXER_TYPE_H264_ES },
         { "26l", DEMUXER_TYPE_H264_ES },
 	{ "ac3", DEMUXER_TYPE_LAVF },
-	{ "wv",  DEMUXER_TYPE_LAVF },
 
 // At least the following are hacks against broken autodetection
 // that should not be there
 
-// demux_audio is too greedy
-	{ "dxa",  DEMUXER_TYPE_LAVF },
 };
 
 int demuxer_type_by_filename(char* filename){



More information about the MPlayer-cvslog mailing list