[PATCH] a straighforward still image demuxer with 100% =

Joseph Tulou brezhoneg1 at yahoo.fr
Mon Jan 5 14:12:03 CET 2009


=0A=
---=0A=
 modules/access/fake.c |   40 +++++++++++++++++++++++++++++++++++++---=0A=
 1 files changed, 37 insertions(+), 3 deletions(-)=0A=
=0A=
diff --git a/modules/access/fake.c b/modules/access/fake.c=0A=
index 2e0d990..297d71c 100644=0A=
--- a/modules/access/fake.c=0A=
+++ b/modules/access/fake.c=0A=
@@ -33,6 +33,7 @@=0A=
 #include <vlc_plugin.h>=0A=
 #include <vlc_access.h>=0A=
 #include <vlc_demux.h>=0A=
+#include <vlc_image.h>=0A=
 =0A=
 =
/************************************************************************=
*****=0A=
  * Module descriptior=0A=
@@ -70,7 +71,7 @@ vlc_module_begin ()=0A=
                  true );=0A=
 =0A=
     add_shortcut( "fake" )=0A=
-    set_capability( "access_demux", 0 )=0A=
+    set_capability( "access_demux", 100 )=0A=
     set_callbacks( Open, Close )=0A=
 vlc_module_end ()=0A=
 =0A=
@@ -97,10 +98,43 @@ static int Open( vlc_object_t *p_this )=0A=
     demux_sys_t *p_sys;=0A=
     es_format_t fmt;=0A=
 =0A=
-    /* Only when selected */=0A=
-    if( *p_demux->psz_access =3D=3D '\0' )=0A=
+    if( *p_demux->psz_access !=3D '\0' ) =0A=
+    {=0A=
+       /* if an access is provided, then it has to be "fake" */=0A=
+       if( strcmp( p_demux->psz_access, "fake" ) !=3D 0 )=0A=
         return VLC_EGENERIC;=0A=
 =0A=
+        msg_Dbg( p_demux, "fake:// access_demux detected" );=0A=
+    }=0A=
+    else=0A=
+    {=0A=
+       /**=0A=
+        * access is not provided,=0A=
+        * then let's see if path could be an image=0A=
+        **/=0A=
+=0A=
+        if( !p_demux->psz_path || !*p_demux->psz_path )=0A=
+            return VLC_EGENERIC;=0A=
+=0A=
+        vlc_fourcc_t i_codec =3D image_Ext2Fourcc( p_demux->psz_path );=0A=
+        if( !i_codec )=0A=
+            return VLC_EGENERIC;=0A=
+    =0A=
+        char* p_codec =3D (char*) &i_codec;=0A=
+        msg_Dbg( p_demux, "still image detected with codec format =
%c%c%c%c",=0A=
+                   p_codec[0], p_codec[1], p_codec[2], p_codec[3] );=0A=
+=0A=
+        vlc_object_t* p_input =3D vlc_object_find( p_demux, =
VLC_OBJECT_INPUT, FIND_PARENT );=0A=
+        if( !p_input )=0A=
+            return VLC_EGENERIC;=0A=
+=0A=
+        /* set up fake-file on the fly */=0A=
+        var_Create( p_input, "fake-file", VLC_VAR_STRING );=0A=
+        var_SetString( p_input, "fake-file", p_demux->psz_path );=0A=
+=0A=
+        vlc_object_release( p_input );=0A=
+    }=0A=
+    =0A=
     /* Set up p_demux */=0A=
     DEMUX_INIT_COMMON(); p_sys =3D p_demux->p_sys;=0A=
     p_demux->info.i_update =3D 0;=0A=
-- =0A=
1.5.2.5=0A=
=0A=

------=_NextPart_000_0003_01C96F44.09D8C430--




More information about the vlc-devel mailing list