]> git.sesse.net Git - vlc/commitdiff
Add dummy, probably-not-even-compiling sdi.c.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 23 Sep 2010 21:44:34 +0000 (23:44 +0200)
committerSteinar Gunderson <sesse@inger.frikanalen.no>
Thu, 23 Sep 2010 21:44:55 +0000 (23:44 +0200)
modules/access/Modules.am
modules/access/sdi.c [new file with mode: 0644]

index 0b9f94ad2cfb770d21ae9f491b832a990179106d..6aa0bf693e33deb849e24dcbc5af30d3d4f38ad6 100644 (file)
@@ -52,6 +52,7 @@ SOURCES_access_avio = avio.c avio.h
 SOURCES_access_attachment = attachment.c
 SOURCES_access_vdr = vdr.c
 SOURCES_libbluray = bluray.c
+SOURCES_sdi = sdi.c
 
 SOURCES_access_rar = rar/rar.c rar/rar.h rar/access.c
 SOURCES_stream_filter_rar = rar/rar.c rar/rar.h rar/stream.c
diff --git a/modules/access/sdi.c b/modules/access/sdi.c
new file mode 100644 (file)
index 0000000..bcfa399
--- /dev/null
@@ -0,0 +1,130 @@
+/* BlackMagic SDI driver */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
+#include <vlc_input.h>
+#include <vlc_demux.h>
+#include <vlc_access.h>
+#include <vlc_picture.h>
+#include <vlc_charset.h>
+#include <vlc_fs.h>
+
+static int  Open ( vlc_object_t * );
+static void Close( vlc_object_t * );
+
+#define CACHING_TEXT N_("Caching value in ms")
+#define CACHING_LONGTEXT N_( \
+    "Caching value for SDI captures. This " \
+    "value should be set in milliseconds." )
+
+vlc_module_begin ()
+    set_shortname( N_("SDI") )
+    set_description( N_("BlackMagic SDI input") )
+    set_category( CAT_INPUT )
+    set_subcategory( SUBCAT_INPUT_ACCESS )
+
+    add_shortcut( "sdi" )
+    set_capability( "access_demux", 10 )
+    set_callbacks( Open, Close )
+vlc_module_end ()
+
+static int Demux  ( demux_t * );
+static int Control( demux_t *, int, va_list );
+
+struct demux_sys_t
+{
+};
+
+static int Open( vlc_object_t *p_this )
+{
+    demux_t     *p_demux = (demux_t*)p_this;
+    demux_sys_t *p_sys;
+
+    /* Only when selected */
+    if( *p_demux->psz_access == '\0' )
+        return VLC_EGENERIC;
+
+    /* Set up p_demux */
+    p_demux->pf_demux = Demux;
+    p_demux->pf_control = Control;
+    p_demux->info.i_update = 0;
+    p_demux->info.i_title = 0;
+    p_demux->info.i_seekpoint = 0;
+    p_demux->p_sys = p_sys = calloc( 1, sizeof( demux_sys_t ) );
+    if( !p_sys )
+        return VLC_ENOMEM;
+
+    msg_Debug( p_demux, "hello world" );
+
+    /* Declare elementary streams */
+    es_format_t fmt;
+    es_format_Init( &fmt, VIDEO_ES, p_sys->i_fourcc );
+    fmt.video.i_width = 720;
+    fmt.video.i_height = 576;
+    fmt.video.i_sar_num = 1;
+    fmt.video.i_sar_den = 1;
+
+    msg_Dbg( p_demux, "added new video es %4.4s %dx%d",
+             (char*)&fmt.i_codec, fmt.video.i_width, fmt.video.i_height );
+    p_sys->p_es = es_out_Add( p_demux->out, &fmt );
+
+    /* Update default_pts to a suitable value for access */
+    var_Create( p_demux, "sdi-caching", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+
+    return VLC_SUCCESS;
+}
+
+static void Close( vlc_object_t *p_this )
+{
+    demux_t     *p_demux = (demux_t *)p_this;
+    demux_sys_t *p_sys   = p_demux->p_sys;
+
+    free( p_sys );
+}
+
+static int Control( demux_t *p_demux, int i_query, va_list args )
+{
+    bool *pb;
+    int64_t    *pi64;
+
+    switch( i_query )
+    {
+        /* Special for access_demux */
+        case DEMUX_CAN_PAUSE:
+        case DEMUX_CAN_SEEK:
+        case DEMUX_CAN_CONTROL_PACE:
+            pb = (bool*)va_arg( args, bool * );
+            *pb = false;
+            return VLC_SUCCESS;
+
+        case DEMUX_GET_PTS_DELAY:
+            pi64 = (int64_t*)va_arg( args, int64_t * );
+            *pi64 = var_GetInteger( p_demux, "sdi-caching" ) * 1000;
+            return VLC_SUCCESS;
+
+        case DEMUX_GET_TIME:
+            pi64 = (int64_t*)va_arg( args, int64_t * );
+            *pi64 = mdate();  // FIXME
+            return VLC_SUCCESS;
+
+        /* TODO implement others */
+        default:
+            return VLC_EGENERIC;
+    }
+
+    return VLC_EGENERIC;
+}
+
+static int Demux( demux_t *p_demux )
+{
+    demux_sys_t *p_sys = p_demux->p_sys;
+
+    // FIXME
+
+    return 1;
+}
+