]> git.sesse.net Git - vlc/blobdiff - src/input/control.c
Added record support at the stream_t level in core.
[vlc] / src / input / control.c
index d29229ac87889e66202e85a1cd661174dfce84aa..1e286f8b41f12fb6eadea8d90cfb7f29c5843c2f 100644 (file)
@@ -63,6 +63,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
     int *pi_bkmk;
 
     int i_int, *pi_int;
+    bool b_bool, *pb_bool;
     double f, *pf;
     int64_t i_64, *pi_64;
 
@@ -132,7 +133,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
 
         case INPUT_ADD_INFO:
         {
-            /* FIXME : Impossible to use input_ItemAddInfo because of
+            /* FIXME : Impossible to use input_item_AddInfo because of
              * the ... problem ? */
             char *psz_cat = (char *)va_arg( args, char * );
             char *psz_name = (char *)va_arg( args, char * );
@@ -286,7 +287,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             int i_ret = VLC_EGENERIC;
             *ppsz_value = NULL;
 
-            *ppsz_value = input_ItemGetInfo( p_input->p->input.p_item,
+            *ppsz_value = input_item_GetInfo( p_input->p->input.p_item,
                                                   psz_cat, psz_name );
             return i_ret;
         }
@@ -515,7 +516,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             if( asprintf( &str, "%s=%s", psz_option, psz_value ) == -1 )
                 return VLC_ENOMEM;
 
-            i = input_ItemAddOpt( p_input->p->input.p_item, str,
+            i = input_item_AddOpt( p_input->p->input.p_item, str,
                                   VLC_INPUT_OPTION_UNIQUE );
             free( str );
             return i;
@@ -598,6 +599,15 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             return VLC_EGENERIC;
         }
 
+        case INPUT_SET_RECORD_STATE:
+            b_bool = (bool)va_arg( args, int );
+            var_SetBool( p_input, "record", b_bool );
+            return VLC_SUCCESS;
+
+        case INPUT_GET_RECORD_STATE:
+            pb_bool = (bool*)va_arg( args, bool* );
+            *pb_bool = var_GetBool( p_input, "record" );
+            return VLC_SUCCESS;
 
         default:
             msg_Err( p_input, "unknown query in input_vaControl" );
@@ -611,30 +621,33 @@ static void UpdateBookmarksOption( input_thread_t *p_input )
     char *psz_value = NULL, *psz_next = NULL;
 
     vlc_mutex_lock( &p_input->p->input.p_item->lock );
-    for( i = 0; i < p_input->p->i_bookmark; i++ )
-    {
-        i_len += snprintf( NULL, 0, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
-                           p_input->p->bookmark[i]->psz_name,
-                           p_input->p->bookmark[i]->i_byte_offset,
-                           p_input->p->bookmark[i]->i_time_offset/1000000 );
-    }
-    for( i = 0; i < p_input->p->i_bookmark; i++ )
+    if( p_input->p->i_bookmark > 0 )
     {
-        if( !i ) psz_value = psz_next = malloc( i_len + p_input->p->i_bookmark );
-
-        sprintf( psz_next, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
-                 p_input->p->bookmark[i]->psz_name,
-                 p_input->p->bookmark[i]->i_byte_offset,
-                 p_input->p->bookmark[i]->i_time_offset/1000000 );
+        for( i = 0; i < p_input->p->i_bookmark; i++ )
+        {
+            i_len += snprintf( NULL, 0, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
+                               p_input->p->bookmark[i]->psz_name,
+                               p_input->p->bookmark[i]->i_byte_offset,
+                               p_input->p->bookmark[i]->i_time_offset/1000000 );
+        }
+        psz_value = psz_next = malloc( i_len + p_input->p->i_bookmark );
 
-        psz_next += strlen( psz_next );
-        if( i < p_input->p->i_bookmark - 1)
+        for( i = 0; i < p_input->p->i_bookmark; i++ )
         {
-            *psz_next = ','; psz_next++;
+            sprintf( psz_next, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
+                     p_input->p->bookmark[i]->psz_name,
+                     p_input->p->bookmark[i]->i_byte_offset,
+                     p_input->p->bookmark[i]->i_time_offset/1000000 );
+
+            psz_next += strlen( psz_next );
+            if( i < p_input->p->i_bookmark - 1)
+                *psz_next = ','; psz_next++;
         }
     }
     vlc_mutex_unlock( &p_input->p->input.p_item->lock );
 
     input_Control( p_input, INPUT_ADD_OPTION, "bookmarks",
                    psz_value ? psz_value : "" );
+    free( psz_value );
 }
+