]> git.sesse.net Git - vlc/blobdiff - include/vlc_common.h
Don't clutter REGISTRY on windows...
[vlc] / include / vlc_common.h
index d2db3d98443780ffa33b7e8850083091e4c08acd..1e7bbf16b622677f1cde6b7d65eede018a8b1594 100644 (file)
@@ -29,6 +29,9 @@
  * This file is a collection of common definitions and types
  */
 
+#ifndef VLC_COMMON_H
+# define VLC_COMMON_H 1
+
 /*****************************************************************************
  * Required vlc headers
  *****************************************************************************/
 #include <stdio.h>
 #include <inttypes.h>
 
+#ifndef __cplusplus
+# include <stdbool.h>
+#endif
+
 /*****************************************************************************
  * Basic types definitions
  *****************************************************************************/
 /* Counter for statistics and profiling */
 typedef unsigned long       count_t;
 
-/* DCT elements types */
-typedef int16_t             dctelem_t;
-
-/* Video buffer types */
-typedef uint8_t             yuv_data_t;
-
 /* Audio volume */
 typedef uint16_t            audio_volume_t;
 
@@ -89,17 +90,21 @@ typedef int64_t mtime_t;
  */
 typedef uint32_t vlc_fourcc_t;
 
-static inline uint32_t VLC_FOURCC (uint8_t a, uint8_t b, uint8_t c, uint8_t d)
-{
-    union { uint8_t b[4]; uint32_t dw; } v = { { a, b, c, d } };
-    return v.dw;
-}
+#ifdef WORDS_BIGENDIAN
+#   define VLC_FOURCC( a, b, c, d ) \
+        ( ((uint32_t)d) | ( ((uint32_t)c) << 8 ) \
+           | ( ((uint32_t)b) << 16 ) | ( ((uint32_t)a) << 24 ) )
+#   define VLC_TWOCC( a, b ) \
+        ( (uint16_t)(b) | ( (uint16_t)(a) << 8 ) )
 
-static inline uint16_t VLC_TWOCC (uint8_t a, uint8_t b)
-{
-    union { uint8_t b[2]; uint16_t w; } v = { { a, b } };
-    return v.w;
-}
+#else
+#   define VLC_FOURCC( a, b, c, d ) \
+        ( ((uint32_t)a) | ( ((uint32_t)b) << 8 ) \
+           | ( ((uint32_t)c) << 16 ) | ( ((uint32_t)d) << 24 ) )
+#   define VLC_TWOCC( a, b ) \
+        ( (uint16_t)(a) | ( (uint16_t)(b) << 8 ) )
+
+#endif
 
 static inline void __vlc_fourcc_to_char( vlc_fourcc_t fcc, char *psz_fourcc )
 {
@@ -114,6 +119,8 @@ static inline void __vlc_fourcc_to_char( vlc_fourcc_t fcc, char *psz_fourcc )
  *****************************************************************************/
 
 /* Internal types */
+typedef struct vlc_list_t vlc_list_t;
+typedef struct vlc_object_t vlc_object_t;
 typedef struct libvlc_int_t libvlc_int_t;
 typedef struct variable_t variable_t;
 typedef struct date_t date_t;
@@ -208,7 +215,6 @@ typedef struct aout_filter_t aout_filter_t;
 /* Video */
 typedef struct vout_thread_t vout_thread_t;
 typedef struct vout_sys_t vout_sys_t;
-typedef struct chroma_sys_t chroma_sys_t;
 
 typedef video_format_t video_frame_format_t;
 typedef struct picture_t picture_t;
@@ -370,6 +376,80 @@ struct _stati64;
 struct stat;
 #endif
 
+/**
+ * VLC value structure
+ */
+typedef union
+{
+    int             i_int;
+    bool            b_bool;
+    float           f_float;
+    char *          psz_string;
+    void *          p_address;
+    vlc_object_t *  p_object;
+    vlc_list_t *    p_list;
+    mtime_t         i_time;
+
+    struct { char *psz_name; int i_object_id; } var;
+
+   /* Make sure the structure is at least 64bits */
+    struct { char a, b, c, d, e, f, g, h; } padding;
+
+} vlc_value_t;
+
+/**
+ * VLC list structure
+ */
+struct vlc_list_t
+{
+    int             i_count;
+    vlc_value_t *   p_values;
+    int *           pi_types;
+
+};
+
+/**
+ * \defgroup var_type Variable types
+ * These are the different types a vlc variable can have.
+ * @{
+ */
+#define VLC_VAR_VOID      0x0010
+#define VLC_VAR_BOOL      0x0020
+#define VLC_VAR_INTEGER   0x0030
+#define VLC_VAR_HOTKEY    0x0031
+#define VLC_VAR_STRING    0x0040
+#define VLC_VAR_MODULE    0x0041
+#define VLC_VAR_FILE      0x0042
+#define VLC_VAR_DIRECTORY 0x0043
+#define VLC_VAR_VARIABLE  0x0044
+#define VLC_VAR_FLOAT     0x0050
+#define VLC_VAR_TIME      0x0060
+#define VLC_VAR_ADDRESS   0x0070
+#define VLC_VAR_MUTEX     0x0080
+#define VLC_VAR_LIST      0x0090
+/**@}*/
+
+/*****************************************************************************
+ * Error values (shouldn't be exposed)
+ *****************************************************************************/
+#define VLC_SUCCESS         -0                                   /* No error */
+#define VLC_ENOMEM          -1                          /* Not enough memory */
+#define VLC_ETHREAD         -2                               /* Thread error */
+#define VLC_ETIMEOUT        -3                                    /* Timeout */
+
+#define VLC_ENOMOD         -10                           /* Module not found */
+
+#define VLC_ENOOBJ         -20                           /* Object not found */
+
+#define VLC_ENOVAR         -30                         /* Variable not found */
+#define VLC_EBADVAR        -31                         /* Bad variable value */
+
+#define VLC_ENOITEM        -40                           /**< Item not found */
+
+#define VLC_EEXIT         -255                             /* Program exited */
+#define VLC_EEXITSUCCESS  -999                /* Program exited successfully */
+#define VLC_EGENERIC      -666                              /* Generic error */
+
 /*****************************************************************************
  * Variable callbacks
  *****************************************************************************/
@@ -393,8 +473,6 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
 #else
 # define LIBVLC_EXPORT
 #endif
-#define VLC_PUBLIC_API  LIBVLC_EXTERN LIBVLC_EXPORT
-#define VLC_PRIVATE_API LIBVLC_EXTERN LIBVLC_EXPORT /* FIXME: dubious! */
 #define VLC_EXPORT( type, name, args ) \
                         LIBVLC_EXTERN LIBVLC_EXPORT type name args
 
@@ -435,10 +513,6 @@ typedef struct vlc_object_internals_t vlc_object_internals_t;
     char *psz_header;                                                       \
     int  i_flags;                                                           \
                                                                             \
-    /* Object access lock */                                                \
-    vlc_mutex_t  object_lock;                                               \
-    vlc_cond_t   object_wait;                                               \
-                                                                            \
     /* Object properties */                                                 \
     volatile bool b_error;                  /**< set by the object */ \
     volatile bool b_die;                   /**< set by the outside */ \
@@ -473,35 +547,13 @@ typedef struct vlc_object_internals_t vlc_object_internals_t;
 
 struct gc_object_t
 {
-            VLC_GC_MEMBERS
+    VLC_GC_MEMBERS
 };
 
-static inline void __vlc_gc_incref( gc_object_t * p_gc )
-{
-    p_gc->i_gc_refcount ++;
-};
-
-static inline void __vlc_gc_decref( gc_object_t *p_gc )
-{
-    if( !p_gc ) return;
-
-    p_gc->i_gc_refcount -- ;
-
-    if( p_gc->i_gc_refcount == 0 )
-    {
-        p_gc->pf_destructor( p_gc );
-        /* Do not use the p_gc pointer from now on ! */
-    }
-}
-
-static inline void
-__vlc_gc_init( gc_object_t * p_gc, void (*pf_destructor)( gc_object_t * ),
-               void * arg)
-{
-    p_gc->i_gc_refcount = 1;
-    p_gc->pf_destructor = pf_destructor;
-    p_gc->p_destructor_arg = arg;
-}
+VLC_EXPORT(void, __vlc_gc_incref, ( gc_object_t * p_gc ));
+VLC_EXPORT(void, __vlc_gc_decref, ( gc_object_t * p_gc ));
+VLC_EXPORT(void, __vlc_gc_init, ( gc_object_t * p_gc,
+    void (*pf_destructor)( gc_object_t * ), void * arg));
 
 #define vlc_gc_incref( a ) __vlc_gc_incref( (gc_object_t *)a )
 #define vlc_gc_decref( a ) __vlc_gc_decref( (gc_object_t *)a )
@@ -569,9 +621,7 @@ VLC_EXPORT( char const *, vlc_error, ( int ) );
 #include <vlc_arrays.h>
 
 /* MSB (big endian)/LSB (little endian) conversions - network order is always
- * MSB, and should be used for both network communications and files. Note that
- * byte orders other than little and big endians are not supported, but only
- * the VAX seems to have such exotic properties. */
+ * MSB, and should be used for both network communications and files. */
 static inline uint16_t U16_AT( const void * _p )
 {
     const uint8_t * p = (const uint8_t *)_p;
@@ -771,6 +821,9 @@ VLC_EXPORT( int, vlc_iconv_close, ( vlc_iconv_t ) );
 VLC_EXPORT( int, __vlc_execve, ( vlc_object_t *p_object, int i_argc, char *const *pp_argv, char *const *pp_env, const char *psz_cwd, const char *p_in, size_t i_in, char **pp_data, size_t *pi_data ) );
 #define vlc_execve(a,b,c,d,e,f,g,h,i) __vlc_execve(VLC_OBJECT(a),b,c,d,e,f,g,h,i)
 
+/* dir wrappers (defined in src/extras/libc.c) */
+VLC_EXPORT(int, vlc_wclosedir, ( void *_p_dir ));
+
 /*****************************************************************************
  * CPU capabilities
  *****************************************************************************/
@@ -797,11 +850,6 @@ VLC_EXPORT( void *, vlc_memset, ( void *, int, size_t ) );
 /*****************************************************************************
  * I18n stuff
  *****************************************************************************/
-#ifdef WIN32
-VLC_EXPORT( char *, vlc_dgettext, ( const char *package, const char *msgid ) );
-VLC_EXPORT( int, vlc_wclosedir, (void *) );
-#endif
-
 VLC_EXPORT( char *, vlc_gettext, ( const char *msgid ) );
 
 /*****************************************************************************
@@ -836,3 +884,11 @@ VLC_EXPORT( const char *, VLC_Changeset, ( void ) );
 #   define PATH_SEP_CHAR ':'
 #   define PATH_SEP ":"
 #endif
+
+#define LICENSE_MSG \
+  _("This program comes with NO WARRANTY, to the extent permitted by " \
+    "law.\nYou may redistribute it under the terms of the GNU General " \
+    "Public License;\nsee the file named COPYING for details.\n" \
+    "Written by the VideoLAN team; see the AUTHORS file.\n")
+
+#endif /* !VLC_COMMON_H */