[vlc-devel] commit: a straighforward still image demuxer with 100% compatibility with fake:// --fake-file=... (Joseph Tulou )
git version control
git at videolan.org
Sat Jan 17 16:09:47 CET 2009
vlc | branch: master | Joseph Tulou <brezhoneg1 at yahoo.fr> | Mon Jan 5 14:12:03 2009 +0100| [fc9a0d16cb5a8e7ac8ed9d8e0260247f735ad00d] | committer: Antoine Cellerier
a straighforward still image demuxer with 100% compatibility with fake:// --fake-file=...
Signed-off-by: Antoine Cellerier <dionoea at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fc9a0d16cb5a8e7ac8ed9d8e0260247f735ad00d
---
modules/access/fake.c | 40 +++++++++++++++++++++++++++++++++++++---
1 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/modules/access/fake.c b/modules/access/fake.c
index 2e0d990..030192d 100644
--- a/modules/access/fake.c
+++ b/modules/access/fake.c
@@ -33,6 +33,7 @@
#include <vlc_plugin.h>
#include <vlc_access.h>
#include <vlc_demux.h>
+#include <vlc_image.h>
/*****************************************************************************
* Module descriptior
@@ -70,7 +71,7 @@ vlc_module_begin ()
true );
add_shortcut( "fake" )
- set_capability( "access_demux", 0 )
+ set_capability( "access_demux", 100 )
set_callbacks( Open, Close )
vlc_module_end ()
@@ -97,10 +98,43 @@ static int Open( vlc_object_t *p_this )
demux_sys_t *p_sys;
es_format_t fmt;
- /* Only when selected */
- if( *p_demux->psz_access == '\0' )
+ if( *p_demux->psz_access != '\0' )
+ {
+ /* if an access is provided, then it has to be "fake" */
+ if( strcmp( p_demux->psz_access, "fake" ) != 0 )
return VLC_EGENERIC;
+ msg_Dbg( p_demux, "fake:// access_demux detected" );
+ }
+ else
+ {
+ /**
+ * access is not provided,
+ * then let's see if path could be an image
+ **/
+
+ if( !p_demux->psz_path || !*p_demux->psz_path )
+ return VLC_EGENERIC;
+
+ vlc_fourcc_t i_codec = image_Ext2Fourcc( p_demux->psz_path );
+ if( !i_codec )
+ return VLC_EGENERIC;
+
+ char* p_codec = (char*) &i_codec;
+ msg_Dbg( p_demux, "still image detected with codec format %c%c%c%c",
+ p_codec[0], p_codec[1], p_codec[2], p_codec[3] );
+
+ vlc_object_t* p_input = vlc_object_find( p_demux, VLC_OBJECT_INPUT, FIND_PARENT );
+ if( !p_input )
+ return VLC_EGENERIC;
+
+ /* set up fake-file on the fly */
+ var_Create( p_input, "fake-file", VLC_VAR_STRING );
+ var_SetString( p_input, "fake-file", p_demux->psz_path );
+
+ vlc_object_release( p_input );
+ }
+
/* Set up p_demux */
DEMUX_INIT_COMMON(); p_sys = p_demux->p_sys;
p_demux->info.i_update = 0;
More information about the vlc-devel
mailing list