* ./plugins/dummy/dec_dummy.c: new dummy decoder, for testing purposes.
authorSam Hocevar <sam@videolan.org>
Tue, 23 Jul 2002 20:15:41 +0000 (20:15 +0000)
committerSam Hocevar <sam@videolan.org>
Tue, 23 Jul 2002 20:15:41 +0000 (20:15 +0000)
   Usage: "--codec dummy" will use the dummy decoder for all streams, and
  save the stream to a stream.1242 file (where 1242 is the internal vlc
  object ID). If the input file was for instance an mpeg file, you can
  play one of the resulting files using an mp3 player.

plugins/dummy/Makefile
plugins/dummy/dec_dummy.c [new file with mode: 0644]
plugins/dummy/dummy.c

index 25dec07..ef8c778 100644 (file)
@@ -1,2 +1,2 @@
 null_SOURCES = null.c
-dummy_SOURCES = dummy.c aout_dummy.c vout_dummy.c intf_dummy.c input_dummy.c
+dummy_SOURCES = dummy.c aout_dummy.c vout_dummy.c intf_dummy.c input_dummy.c dec_dummy.c
diff --git a/plugins/dummy/dec_dummy.c b/plugins/dummy/dec_dummy.c
new file mode 100644 (file)
index 0000000..9d65097
--- /dev/null
@@ -0,0 +1,127 @@
+/*****************************************************************************
+ * dec_dummy.c: dummy decoder plugin for vlc.
+ *****************************************************************************
+ * Copyright (C) 2002 VideoLAN
+ * $Id: dec_dummy.c,v 1.1 2002/07/23 20:15:41 sam Exp $
+ *
+ * Authors: Samuel Hocevar <sam@zoy.org>
+ *      
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#include <vlc/vlc.h>
+#include <vlc/decoder.h>
+
+#ifdef HAVE_UNISTD_H
+#   include <unistd.h> /* write(), close() */
+#endif
+
+#include <sys/types.h> /* open() */
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <stdio.h> /* sprintf() */
+
+/*****************************************************************************
+ * Local prototypes
+ *****************************************************************************/
+static int  Probe  ( vlc_fourcc_t * );
+static int  Run    ( decoder_fifo_t * );
+
+/*****************************************************************************
+ * Capabilities
+ *****************************************************************************/
+void _M( dec_getfunctions )( function_list_t * p_function_list )
+{
+    p_function_list->functions.dec.pf_probe = Probe;
+    p_function_list->functions.dec.pf_run   = Run;
+}
+
+/*****************************************************************************
+ * Probe: probe the decoder and return score
+ *****************************************************************************
+ * Always returns 0 because we are the dummy decoder!
+ *****************************************************************************/
+static int Probe( vlc_fourcc_t *pi_type )
+{
+    return 0;
+}
+
+/*****************************************************************************
+ * Run: this function is called just after the thread is created
+ *****************************************************************************/
+static int Run ( decoder_fifo_t *p_fifo )
+{
+    bit_stream_t bit_stream;
+    mtime_t      last_date = mdate();
+    size_t       i_bytes = 0;
+
+    char         psz_file[100];
+    int          i_fd;
+
+    sprintf( psz_file, "stream.%i", p_fifo->i_object_id );
+    i_fd = open( psz_file, O_WRONLY | O_CREAT | O_TRUNC, 00644 );
+
+    if( i_fd == -1 )
+    {
+        msg_Err( p_fifo, "cannot create `%s'", psz_file );
+        p_fifo->b_error = 1;
+        DecoderError( p_fifo );
+        return -1;
+    }
+
+    msg_Dbg( p_fifo, "dumping stream to file `%s'", psz_file );
+
+    InitBitstream( &bit_stream, p_fifo, NULL, NULL );
+
+    while( !p_fifo->b_die && !p_fifo->b_error )
+    {
+        byte_t byte;
+
+        byte = GetBits( &bit_stream, 8 );
+        i_bytes++;
+
+        write( i_fd, &byte, 1 );
+
+        if( mdate() < last_date + 2000000 )
+        {
+            continue;
+        }
+
+        msg_Dbg( p_fifo, "dumped %i bytes", i_bytes );
+
+        i_bytes = 0;
+        last_date = mdate();
+    }
+
+    if( i_bytes )
+    {
+        msg_Dbg( p_fifo, "dumped %i bytes", i_bytes );
+    }
+
+    close( i_fd );
+
+    if( p_fifo->b_error )
+    {
+        DecoderError( p_fifo );
+        return -1;
+    }
+
+    return 0;
+}
+
index 0844d7c..a2a8c51 100644 (file)
@@ -2,7 +2,7 @@
  * dummy.c : dummy plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: dummy.c,v 1.22 2002/06/11 09:44:21 gbazin Exp $
+ * $Id: dummy.c,v 1.23 2002/07/23 20:15:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -37,6 +37,7 @@ void _M( demux_getfunctions ) ( function_list_t * p_function_list );
 void _M( aout_getfunctions )  ( function_list_t * p_function_list );
 void _M( vout_getfunctions )  ( function_list_t * p_function_list );
 void _M( intf_getfunctions )  ( function_list_t * p_function_list );
+void _M( dec_getfunctions )   ( function_list_t * p_function_list );
 
 /*****************************************************************************
  * Build configuration tree.
@@ -57,11 +58,12 @@ MODULE_INIT_START
     SET_DESCRIPTION( _("dummy functions module") )
     /* Capability score set to 0 because we don't want to be spawned
      * unless explicitly requested to */
-    ADD_CAPABILITY( AOUT, 0 )
-    ADD_CAPABILITY( VOUT, 0 )
     ADD_CAPABILITY( INTF, 0 )
     ADD_CAPABILITY( ACCESS, 0 )
     ADD_CAPABILITY( DEMUX, 0 )
+    ADD_CAPABILITY( DECODER, 0 )
+    ADD_CAPABILITY( AOUT, 0 )
+    ADD_CAPABILITY( VOUT, 0 )
     ADD_SHORTCUT( "vlc" )
 MODULE_INIT_STOP
 
@@ -72,6 +74,7 @@ MODULE_ACTIVATE_START
     _M( aout_getfunctions )( &p_module->p_functions->aout );
     _M( vout_getfunctions )( &p_module->p_functions->vout );
     _M( intf_getfunctions )( &p_module->p_functions->intf );
+    _M( dec_getfunctions )( &p_module->p_functions->dec );
 MODULE_ACTIVATE_STOP