]> git.sesse.net Git - vlc/commitdiff
* src/input/control.c, include/ninput.h: Added INPUT_GET_INFO.
authorGildas Bazin <gbazin@videolan.org>
Fri, 23 Apr 2004 12:46:34 +0000 (12:46 +0000)
committerGildas Bazin <gbazin@videolan.org>
Fri, 23 Apr 2004 12:46:34 +0000 (12:46 +0000)
* include/vlc_meta.h: vlc_meta_GetValue().
* modules/demux/m3u.c: increased MAX_LINE to 8192.
* modules/video_output/directx/events.c: portability fix.

include/ninput.h
include/vlc_meta.h
modules/demux/m3u.c
modules/video_output/directx/events.c
src/input/control.c

index d64fb730ac628d9fdd85f9bdddedba4357ad9cee..1f31b0e516cbb5bbb89e4c1b920ce13c19e90b2f 100644 (file)
@@ -389,6 +389,7 @@ enum input_query_e
     INPUT_ADD_OPTION, /* arg1= char * arg2= char *  res=can fail    */
 
     INPUT_ADD_INFO,   /* arg1= char * arg2= char * arg3=...  res=can fail    */
+    INPUT_GET_INFO,   /* arg1= char * arg2= char * arg3= char ** res=can fail*/
 
     INPUT_SET_NAME,   /* arg1= char * res=can fail    */
 
index f21402c037d8bff2fdb9db83ca55fcb0896f828c..a16167222eccc9ca91f7f2456de7a413a4cd3770 100644 (file)
@@ -132,4 +132,20 @@ static inline void vlc_meta_Merge( vlc_meta_t *dst, vlc_meta_t *src )
     }
 }
 
+static inline char *vlc_meta_GetValue( vlc_meta_t *m, char *name )
+{
+    int i;
+
+    for( i = 0; i < m->i_meta; i++ )
+    {
+        if( !strcmp( m->name[i], name ) )
+        {
+            char *value = NULL;
+            if( m->value[i] ) value = strdup( m->value[i] );
+            return value;
+        }
+    }
+    return NULL;
+}
+
 #endif
index ec845d2e7e4fd1f649d163e699cb18828980adfd..7aad3ab3a474276116f8ac636e1f47532887bed8 100644 (file)
@@ -35,7 +35,7 @@
 /*****************************************************************************
  * Constants and structures
  *****************************************************************************/
-#define MAX_LINE 1024
+#define MAX_LINE 8192
 
 #define TYPE_UNKNOWN 0
 #define TYPE_M3U 1
index d2f8c04bb00a2a9a421f9a3d7f7be54c82354745..19ea96376b59ebcd4f6a54bfc6ed3decc324e852 100644 (file)
 #include <ctype.h>                                              /* tolower() */
 #include <string.h>                                            /* strerror() */
 
+#ifndef _WIN32_WINNT
+#   define _WIN32_WINNT 0x0400
+#endif
+
 #include <vlc/vlc.h>
 #include <vlc/intf.h>
 #include <vlc/input.h>
index e2b80395452938b3e0c4d6b64a1618eece5f9d98..2926c77b3e4c702c0ffe2a5f78ac05beee6dda7a 100644 (file)
@@ -2,7 +2,7 @@
  * control.c
  *****************************************************************************
  * Copyright (C) 1999-2004 VideoLAN
- * $Id: stream.c 7041 2004-03-11 16:48:27Z gbazin $
+ * $Id$
  *
  * Authors: Gildas Bazin <gbazin@videolan.org>
  *
@@ -212,6 +212,46 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
         }
         break;
 
+        case INPUT_GET_INFO:
+        {
+            char *psz_cat = (char *)va_arg( args, char * );
+            char *psz_name = (char *)va_arg( args, char * );
+            char **ppsz_value = (char **)va_arg( args, char ** );
+            int i;
+
+            i_ret = VLC_EGENERIC;
+            *ppsz_value = NULL;
+
+            vlc_mutex_lock( &p_input->p_item->lock );
+            for( i = 0; i < p_input->p_item->i_categories; i++ )
+            {
+                if( !strcmp( p_input->p_item->pp_categories[i]->psz_name,
+                             psz_cat ) )
+                    break;
+            }
+
+            if( i != p_input->p_item->i_categories )
+            {
+                info_category_t *p_cat;
+                p_cat = p_input->p_item->pp_categories[i];
+
+                for( i = 0; i < p_cat->i_infos; i++ )
+                {
+                    if( !strcmp( p_cat->pp_infos[i]->psz_name, psz_name ) )
+                    {
+                        if( p_cat->pp_infos[i]->psz_value )
+                        {
+                            *ppsz_value =strdup(p_cat->pp_infos[i]->psz_value);
+                            i_ret = VLC_SUCCESS;
+                        }
+                        break;
+                    }
+                }
+            }
+            vlc_mutex_unlock( &p_input->p_item->lock );
+        }
+        break;
+
         case INPUT_ADD_BOOKMARK:
             p_bkmk = (seekpoint_t *)va_arg( args, seekpoint_t * );
             p_bkmk = vlc_seekpoint_Duplicate( p_bkmk );