From d3f7f89d3fed1c174a3b7bb2a10c70b0ec149b40 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Thu, 23 Sep 2010 23:44:34 +0200 Subject: [PATCH] Add dummy, probably-not-even-compiling sdi.c. --- modules/access/Modules.am | 1 + modules/access/sdi.c | 130 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 modules/access/sdi.c diff --git a/modules/access/Modules.am b/modules/access/Modules.am index 0b9f94ad2c..6aa0bf693e 100644 --- a/modules/access/Modules.am +++ b/modules/access/Modules.am @@ -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 index 0000000000..bcfa399aa5 --- /dev/null +++ b/modules/access/sdi.c @@ -0,0 +1,130 @@ +/* BlackMagic SDI driver */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +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; +} + -- 2.39.2