]> git.sesse.net Git - vlc/blobdiff - modules/access/dvb/access.c
* include/modules_inner.h, include/modules.h: added a shortname field to the module...
[vlc] / modules / access / dvb / access.c
index e93ee8e02a75a60ba42983be7f9fea5563f73df6..c45696f9268d48717fc73e71ea17ac23e1032616 100644 (file)
@@ -71,6 +71,11 @@ static void    CloseProgram( input_thread_t * p_input );
 /*****************************************************************************
  * Module descriptor
  *****************************************************************************/
+#define CACHING_TEXT N_("Caching value in ms")
+#define CACHING_LONGTEXT N_( \
+    "Allows you to modify the default caching value for dvb streams. This " \
+    "value should be set in millisecond units." )
+
 #define PROGRAM_TEXT N_("Program to decode")
 #define PROGRAM_LONGTEXT N_("This is a workaround for a bug in the input")
 
@@ -141,38 +146,41 @@ static void    CloseProgram( input_thread_t * p_input );
 #define HIERARCHY_LONGTEXT ""
 
 vlc_module_begin();
+    set_shortname( _("DVB") );
     set_description( N_("DVB input with v4l2 support") );
 
+    add_integer( "dvb-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
+                 CACHING_LONGTEXT, VLC_TRUE );
     add_integer( "dvb-adapter", 0, NULL, ADAPTER_TEXT, ADAPTER_LONGTEXT,
                  VLC_FALSE );
     add_integer( "dvb-device", 0, NULL, DEVICE_TEXT, DEVICE_LONGTEXT,
-                 VLC_FALSE );
+                 VLC_TRUE );
     add_integer( "dvb-frequency", 11954000, NULL, FREQ_TEXT, FREQ_LONGTEXT,
                  VLC_FALSE );
     add_integer( "dvb-inversion", 2, NULL, INVERSION_TEXT, INVERSION_LONGTEXT,
                  VLC_TRUE );
     add_bool( "dvb-probe", 1, NULL, PROBE_TEXT, PROBE_LONGTEXT, VLC_TRUE );
-    add_integer( "dvb-lnb-lof1", 9750000, NULL, LNB_LOF1_TEXT, LNB_LOF1_LONGTEXT,
-                 VLC_TRUE );
-    add_integer( "dvb-lnb-lof2", 10600000, NULL, LNB_LOF2_TEXT, LNB_LOF2_LONGTEXT,
-                 VLC_TRUE );
+    add_integer( "dvb-lnb-lof1", 9750000, NULL, LNB_LOF1_TEXT,
+                 LNB_LOF1_LONGTEXT, VLC_TRUE );
+    add_integer( "dvb-lnb-lof2", 10600000, NULL, LNB_LOF2_TEXT,
+                 LNB_LOF2_LONGTEXT, VLC_TRUE );
     add_integer( "dvb-lnb-slof", 11700000, NULL, LNB_SLOF_TEXT,
                  LNB_SLOF_LONGTEXT, VLC_TRUE );
     /* DVB-S (satellite) */
     add_bool( "dvb-budget-mode", 0, NULL, BUDGET_TEXT, BUDGET_LONGTEXT,
-              VLC_FALSE );
+              VLC_TRUE );
     add_integer( "dvb-satno", 0, NULL, SATNO_TEXT, SATNO_LONGTEXT,
                  VLC_TRUE );
     add_integer( "dvb-voltage", 13, NULL, VOLTAGE_TEXT, VOLTAGE_LONGTEXT,
-                 VLC_FALSE );
+                 VLC_TRUE );
     add_integer( "dvb-tone", -1, NULL, TONE_TEXT, TONE_LONGTEXT,
-                 VLC_FALSE );
+                 VLC_TRUE );
     add_integer( "dvb-fec", 9, NULL, FEC_TEXT, FEC_LONGTEXT, VLC_TRUE );
     add_integer( "dvb-srate", 27500000, NULL, SRATE_TEXT, SRATE_LONGTEXT,
                  VLC_FALSE );
     /* DVB-T (terrestrial) */
-    add_integer( "dvb-modulation", 0, NULL, MODULATION_TEXT, MODULATION_LONGTEXT,
-                 VLC_TRUE );
+    add_integer( "dvb-modulation", 0, NULL, MODULATION_TEXT,
+                 MODULATION_LONGTEXT, VLC_TRUE );
     /* DVB-T (terrestrial) */
     add_integer( "dvb-code-rate-hp", 9, NULL, CODE_RATE_HP_TEXT,
                  CODE_RATE_HP_LONGTEXT, VLC_TRUE );
@@ -227,7 +235,7 @@ static int Open( vlc_object_t *p_this )
     int                 i_test;
 
     /* Initialize structure */
-    p_dvb = malloc( sizeof( thread_dvb_data_t ) );
+    p_dvb = (thread_dvb_data_t *)malloc( sizeof( thread_dvb_data_t ) );
     if( p_dvb == NULL )
     {
         msg_Err( p_input, "out of memory" );
@@ -251,6 +259,10 @@ static int Open( vlc_object_t *p_this )
         return( -1 );
     }
 
+    var_Create( p_input, "dvb-caching", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+    var_Get( p_input, "dvb-caching", &val );
+    p_input->i_pts_delay = val.i_int * 1000;
+
     var_Create( p_input, "dvb-adapter", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
     var_Create( p_input, "dvb-device", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
     var_Create( p_input, "dvb-frequency", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
@@ -388,6 +400,7 @@ static int Open( vlc_object_t *p_this )
     if( input_InitStream( p_input, sizeof( stream_ts_data_t ) ) == -1 )
     {
         msg_Err( p_input, "could not initialize stream structure" );
+       E_(FrontendClose)( p_input );
         close( p_dvb->i_handle );
         free( p_dvb );
         return( -1 );
@@ -424,6 +437,9 @@ static void Close( vlc_object_t *p_this )
         E_(DMXUnsetFilter)( p_input, p_dvb->p_demux_handles[0].i_handle );
         p_dvb->p_demux_handles[0].i_type = 0;
     }
+    E_(DVRClose)( p_input );
+    E_(FrontendClose)( p_input );
+    free( p_dvb );
 }
 
 /*****************************************************************************