]> git.sesse.net Git - vlc/blobdiff - include/vlc_common.h
* src/misc/vlm.c: started "vod server" integration (not much done yet).
[vlc] / include / vlc_common.h
index ff844e7150ab88f03c17c419544ba8a34486c95f..3781f0fb7c8a5c730be10e9e6dd82323e1df7fbe 100644 (file)
@@ -2,7 +2,7 @@
  * common.h: common definitions
  * Collection of useful common types and macros definitions
  *****************************************************************************
- * Copyright (C) 1998, 1999, 2000 VideoLAN
+ * Copyright (C) 1998-2004 VideoLAN
  * $Id$
  *
  * Authors: Samuel Hocevar <sam@via.ecp.fr>
 
 #include "config.h"
 
+#if defined(PACKAGE)
+#   undef PACKAGE_NAME
+#   define PACKAGE_NAME PACKAGE
+#endif
+#if defined(VERSION)
+#   undef PACKAGE_VERSION
+#   define PACKAGE_VERSION VERSION
+#endif
+
 #if defined( __BORLANDC__ )
 #   undef HAVE_VARIADIC_MACROS
 #   undef HAVE_STDINT_H
@@ -183,17 +192,30 @@ typedef uint32_t vlc_fourcc_t;
 typedef struct libvlc_t libvlc_t;
 typedef struct vlc_t vlc_t;
 typedef struct variable_t variable_t;
+typedef struct date_t date_t;
 
 /* Messages */
 typedef struct msg_bank_t msg_bank_t;
 typedef struct msg_subscription_t msg_subscription_t;
 
 /* Playlist */
+
+/* FIXME */
+/**
+ * Playlist commands
+ */
+typedef enum {
+    PLAYLIST_PLAY,                              /**< Starts playing. No arg. */
+    PLAYLIST_PAUSE,                     /**< Toggles playlist pause. No arg. */
+    PLAYLIST_STOP,                               /**< Stops playing. No arg. */
+    PLAYLIST_SKIP,                               /**< Skip X items and play. */
+    PLAYLIST_GOTO,                                       /**< Goto Xth item. */
+} playlist_command_t;
+
+
 typedef struct playlist_t playlist_t;
 typedef struct playlist_item_t playlist_item_t;
 typedef struct playlist_group_t playlist_group_t;
-typedef struct item_info_t item_info_t;
-typedef struct item_info_category_t item_info_category_t;
 typedef struct playlist_export_t playlist_export_t;
 
 /* Modules */
@@ -201,6 +223,7 @@ typedef struct module_bank_t module_bank_t;
 typedef struct module_t module_t;
 typedef struct module_config_t module_config_t;
 typedef struct module_symbols_t module_symbols_t;
+typedef struct module_cache_t module_cache_t;
 
 /* Interface */
 typedef struct intf_thread_t intf_thread_t;
@@ -212,11 +235,10 @@ typedef struct intf_channel_t intf_channel_t;
 /* Input */
 typedef struct input_thread_t input_thread_t;
 typedef struct input_thread_sys_t input_thread_sys_t;
+typedef struct input_item_t input_item_t;
 typedef struct input_area_t input_area_t;
 typedef struct input_buffers_t input_buffers_t;
 typedef struct input_socket_t input_socket_t;
-typedef struct input_info_t input_info_t;
-typedef struct input_info_category_t input_info_category_t;
 typedef struct access_sys_t access_sys_t;
 typedef struct demux_sys_t demux_sys_t;
 typedef struct es_descriptor_t es_descriptor_t;
@@ -225,6 +247,8 @@ typedef struct pgrm_descriptor_t pgrm_descriptor_t;
 typedef struct pgrm_sys_t pgrm_sys_t;
 typedef struct stream_descriptor_t stream_descriptor_t;
 typedef struct seekpoint_t seekpoint_t;
+typedef struct info_t info_t;
+typedef struct info_category_t info_category_t;
 
 /* Format */
 typedef struct audio_format_t audio_format_t;
@@ -240,6 +264,7 @@ typedef struct es_out_t     es_out_t;
 typedef struct es_out_id_t  es_out_id_t;
 typedef struct es_out_sys_t es_out_sys_t;
 typedef struct demux_t  demux_t;
+typedef struct access_t access_t;
 
 /* Audio */
 typedef struct aout_instance_t aout_instance_t;
@@ -261,20 +286,35 @@ typedef struct picture_sys_t picture_sys_t;
 typedef struct picture_heap_t picture_heap_t;
 typedef struct subpicture_t subpicture_t;
 typedef struct subpicture_sys_t subpicture_sys_t;
+typedef struct subpicture_region_t subpicture_region_t;
 typedef struct vout_synchro_t vout_synchro_t;
 typedef struct text_renderer_sys_t text_renderer_sys_t;
 typedef struct text_style_t text_style_t;
 
 /* Stream output */
 typedef struct sout_instance_t sout_instance_t;
+typedef struct sout_instance_sys_t sout_instance_sys_t;
+
 typedef struct sout_input_t sout_input_t;
 typedef struct sout_packetizer_input_t sout_packetizer_input_t;
+
 typedef struct sout_access_out_t sout_access_out_t;
+typedef struct sout_access_out_sys_t   sout_access_out_sys_t;
+
 typedef struct sout_mux_t sout_mux_t;
+typedef struct sout_mux_sys_t sout_mux_sys_t;
+
 typedef struct sout_stream_t    sout_stream_t;
+typedef struct sout_stream_sys_t sout_stream_sys_t;
+
 typedef struct sout_cfg_t       sout_cfg_t;
-/*typedef struct sap_session_t    sap_session_t;
-typedef struct slp_session_t    slp_session_t;*/
+typedef struct sap_session_t    sap_session_t;
+typedef struct sap_address_t sap_address_t;
+typedef struct session_descriptor_t session_descriptor_t;
+typedef struct announce_method_t announce_method_t;
+typedef struct announce_handler_t announce_handler_t;
+typedef struct sap_handler_t sap_handler_t;
+//typedef struct slp_session_t    slp_session_t;
 
 /* Decoders */
 typedef struct decoder_t      decoder_t;
@@ -284,10 +324,13 @@ typedef struct decoder_sys_t  decoder_sys_t;
 typedef struct encoder_t      encoder_t;
 typedef struct encoder_sys_t  encoder_sys_t;
 
+/* Filters */
+typedef struct filter_t filter_t;
+typedef struct filter_sys_t filter_sys_t;
+
 /* Misc */
 typedef struct data_packet_t data_packet_t;
 typedef struct data_buffer_t data_buffer_t;
-typedef struct stream_position_t stream_position_t;
 typedef struct stream_ctrl_t stream_ctrl_t;
 typedef struct pes_packet_t pes_packet_t;
 typedef struct network_socket_t network_socket_t;
@@ -311,6 +354,15 @@ typedef int (*httpd_file_callback_t)( httpd_file_sys_t*, httpd_file_t *, uint8_t
 typedef struct httpd_redirect_t httpd_redirect_t;
 typedef struct httpd_stream_t httpd_stream_t;
 
+/* vod server */
+typedef struct vod_t     vod_t;
+typedef struct vod_sys_t vod_sys_t;
+typedef struct vod_media_t vod_media_t;
+
+/* opengl */
+typedef struct opengl_t     opengl_t;
+typedef struct opengl_sys_t opengl_sys_t;
+
 /* divers */
 typedef struct vlc_meta_t    vlc_meta_t;
 
@@ -376,6 +428,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
     volatile vlc_bool_t b_die;                   /**< set by the outside */ \
     volatile vlc_bool_t b_dead;                   /**< set by the object */ \
     volatile vlc_bool_t b_attached;               /**< set by the object */ \
+    vlc_bool_t b_force;      /**< set by the outside (eg. module_Need()) */ \
                                                                             \
     /* Object variables */                                                  \
     vlc_mutex_t     var_lock;                                               \
@@ -427,6 +480,12 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
 #   define __MIN(a, b)   ( ((a) < (b)) ? (a) : (b) )
 #endif
 
+static int64_t GCD( int64_t a, int64_t b )
+{
+    if( b ) return GCD( b, a % b );
+    else return a;
+}
+
 /* Dynamic array handling: realloc array, move data, increment position */
 #define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem )                           \
     do                                                                        \
@@ -569,7 +628,6 @@ static inline uint64_t GetQWLE( void const * _p )
 #define GetQWBE( p )    U64_AT( p )
 
 /* Helper writer functions */
-
 #define SetWLE( p, v ) _SetWLE( (uint8_t*)p, v)
 static inline void _SetWLE( uint8_t *p, uint16_t i_dw )
 {
@@ -591,6 +649,27 @@ static inline void _SetQWLE( uint8_t *p, uint64_t i_qw )
     SetDWLE( p,   i_qw&0xffffffff );
     SetDWLE( p+4, ( i_qw >> 32)&0xffffffff );
 }
+#define SetWBE( p, v ) _SetWBE( (uint8_t*)p, v)
+static inline void _SetWBE( uint8_t *p, uint16_t i_dw )
+{
+    p[0] = ( i_dw >>  8 )&0xff;
+    p[1] = ( i_dw       )&0xff;
+}
+
+#define SetDWBE( p, v ) _SetDWBE( (uint8_t*)p, v)
+static inline void _SetDWBE( uint8_t *p, uint32_t i_dw )
+{
+    p[0] = ( i_dw >> 24 )&0xff;
+    p[1] = ( i_dw >> 16 )&0xff;
+    p[2] = ( i_dw >>  8 )&0xff;
+    p[3] = ( i_dw       )&0xff;
+}
+#define SetQWBE( p, v ) _SetQWBE( (uint8_t*)p, v)
+static inline void _SetQWBE( uint8_t *p, uint64_t i_qw )
+{
+    SetDWBE( p+4,   i_qw&0xffffffff );
+    SetDWBE( p, ( i_qw >> 32)&0xffffffff );
+}
 
 #if WORDS_BIGENDIAN
 #   define hton16(i)   ( i )
@@ -707,33 +786,47 @@ static inline void _SetQWLE( uint8_t *p, uint64_t i_qw )
 #endif
 
 #ifndef HAVE_STRCASECMP
-#   ifdef HAVE_STRICMP
+#   ifndef HAVE_STRICMP
+#       define strcasecmp vlc_strcasecmp
+        VLC_EXPORT( int, vlc_strcasecmp, ( const char *s1, const char *s2 ) );
+#   else
 #       define strcasecmp stricmp
 #       if !defined(__PLUGIN__)
 #           define vlc_strcasecmp NULL
 #       endif
-#   elif !defined(__PLUGIN__)
-#       define strcasecmp vlc_strcasecmp
-        VLC_EXPORT( int, vlc_strcasecmp, ( const char *s1, const char *s2 ) );
 #   endif
 #elif !defined(__PLUGIN__)
 #   define vlc_strcasecmp NULL
 #endif
 
 #ifndef HAVE_STRNCASECMP
-#   ifdef HAVE_STRNICMP
+#   ifndef HAVE_STRNICMP
+#       define strncasecmp vlc_strncasecmp
+        VLC_EXPORT( int, vlc_strncasecmp, ( const char *s1, const char *s2, size_t n ) );
+#   else
 #       define strncasecmp strnicmp
 #       if !defined(__PLUGIN__)
 #           define vlc_strncasecmp NULL
 #       endif
-#   elif !defined(__PLUGIN__)
-#       define strncasecmp vlc_strncasecmp
-        VLC_EXPORT( int, vlc_strncasecmp, ( const char *s1, const char *s2, size_t n ) );
 #   endif
 #elif !defined(__PLUGIN__)
 #   define vlc_strncasecmp NULL
 #endif
 
+#ifndef HAVE_STRCASESTR
+#   ifndef HAVE_STRISTR
+#       define strcasestr vlc_strcasestr
+        VLC_EXPORT( char *, vlc_strcasestr, ( const char *s1, const char *s2 ) );
+#   else
+#       define strcasestr stristr
+#       if !defined(__PLUGIN__)
+#           define vlc_strcasestr NULL
+#       endif
+#   endif
+#elif !defined(__PLUGIN__)
+#   define vlc_strcasestr NULL
+#endif
+
 /* Format type specifiers for 64 bits numbers */
 #if !defined(WIN32) && !defined(UNDER_CE)
 #   define I64Fd "%lld"
@@ -826,10 +919,18 @@ typedef __int64 off_t;
 #   define vlc_lseek NULL
 #endif
 
+VLC_EXPORT( vlc_bool_t, vlc_reduce, ( int *, int *, int64_t, int64_t, int64_t ) );
+
 /* vlc_wraptext (defined in src/extras/libc.c) */
 #define wraptext vlc_wraptext
 VLC_EXPORT( char *, vlc_wraptext, ( const char *, int, vlc_bool_t ) );
 
+/* iconv wrappers (defined in src/extras/libc.c) */
+typedef void *vlc_iconv_t;
+VLC_EXPORT( vlc_iconv_t, vlc_iconv_open, ( const char *, const char * ) );
+VLC_EXPORT( size_t, vlc_iconv, ( vlc_iconv_t, char **, size_t *, char **, size_t * ) );
+VLC_EXPORT( int, vlc_iconv_close, ( vlc_iconv_t ) );
+
 /*****************************************************************************
  * CPU capabilities
  *****************************************************************************/
@@ -856,17 +957,13 @@ VLC_EXPORT( char *, vlc_dgettext, ( const char *package, const char *msgid ) );
       defined(MODULE_NAME_IS_pda))
     /* Declare nothing: gnome.h will do it for us */
 #elif defined( ENABLE_NLS )
-#if defined( HAVE_INCLUDED_GETTEXT )
-#   include "libintl.h"
-#else
-#   include <libintl.h>
-#endif
+#   if defined( HAVE_INCLUDED_GETTEXT )
+#       include "libintl.h"
+#   else
+#       include <libintl.h>
+#   endif
 #   undef _
-#if defined( __BORLANDC__ )
-#define _(String) vlc_dgettext (PACKAGE_TARNAME, String)
-#else
-#   define _(String) vlc_dgettext (PACKAGE, String)
-#endif
+#   define _(String) vlc_dgettext (PACKAGE_NAME, String)
 #   define N_(String) ((char*)(String))
 #else
 #   define _(String) ((char*)(String))