X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_common.h;h=f829027432a5c5fc4043be6406d8268e2273fa5b;hb=955f1293277cd10ff24e60e7b73e95c16a4eaea3;hp=661f72c39dbd9574d2cc331bab0822a9610aa5a2;hpb=8f973a0b05db90ef8f602ca8863563e0724e8581;p=vlc diff --git a/include/vlc_common.h b/include/vlc_common.h index 661f72c39d..f829027432 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -58,7 +58,6 @@ #endif #include "vlc_config.h" -#include "modules_inner.h" /***************************************************************************** * Required system headers @@ -199,11 +198,12 @@ typedef uint32_t vlc_fourcc_t; *****************************************************************************/ /* Internal types */ -typedef struct libvlc_t libvlc_t; -typedef struct vlc_t vlc_t; +typedef struct libvlc_global_data_t libvlc_global_data_t; +typedef struct libvlc_int_t libvlc_int_t; typedef struct variable_t variable_t; typedef struct date_t date_t; -typedef struct hashtable_entry_t hashtable_entry_t; +typedef struct dict_entry_t dict_entry_t; +typedef struct dict_t dict_t; typedef struct gc_object_t gc_object_t ; /* Messages */ @@ -236,6 +236,7 @@ typedef struct services_discovery_t services_discovery_t; typedef struct services_discovery_sys_t services_discovery_sys_t; typedef struct playlist_add_t playlist_add_t; typedef struct playlist_preparse_t playlist_preparse_t; +typedef struct playlist_fetcher_t playlist_fetcher_t; /* Modules */ typedef struct module_bank_t module_bank_t; @@ -326,7 +327,7 @@ 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 config_chain_t config_chain_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; @@ -334,6 +335,18 @@ 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 sout_param_t sout_param_t; +typedef struct sout_pcat_t sout_pcat_t; +typedef struct sout_std_t sout_std_t; +typedef struct sout_display_t sout_display_t; +typedef struct sout_duplicate_t sout_duplicate_t; +typedef struct sout_transcode_t sout_transcode_t; +typedef struct sout_chain_t sout_chain_t; +typedef struct streaming_profile_t streaming_profile_t; +typedef struct sout_module_t sout_module_t; +typedef struct sout_gui_descr_t sout_gui_descr_t; +typedef struct profile_parser_t profile_parser_t; + /* Decoders */ typedef struct decoder_t decoder_t; typedef struct decoder_sys_t decoder_sys_t; @@ -355,6 +368,9 @@ typedef struct vlc_acl_t vlc_acl_t; /* Misc */ typedef struct iso639_lang_t iso639_lang_t; +typedef struct device_t device_t; +typedef struct device_probe_t device_probe_t; +typedef struct probe_sys_t probe_sys_t; /* block */ typedef struct block_t block_t; @@ -415,6 +431,7 @@ typedef struct vlm_schedule_t vlm_schedule_t; /* divers */ typedef struct vlc_meta_t vlc_meta_t; +typedef struct meta_export_t meta_export_t; /* Stats */ typedef struct counter_t counter_t; @@ -427,6 +444,16 @@ typedef struct global_stats_t global_stats_t; typedef struct update_t update_t; typedef struct update_iterator_t update_iterator_t; +/* Meta engine */ +typedef struct meta_engine_t meta_engine_t; + +/* stat/lstat/fstat */ +#ifdef WIN32 +struct _stati64; +#else +struct stat; +#endif + /***************************************************************************** * Variable callbacks *****************************************************************************/ @@ -439,6 +466,9 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ /***************************************************************************** * Plug-in stuff *****************************************************************************/ + +#include "modules_inner.h" + #if !defined (__PLUGIN__) || defined (HAVE_SHARED_LIBVLC) # ifdef __cplusplus # define VLC_EXPORT( type, name, args ) extern "C" type name args @@ -449,6 +479,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ # define VLC_EXPORT( type, name, args ) struct _u_n_u_s_e_d_ extern module_symbols_t* p_symbols; #endif +#define VLC_INTERNAL( type, name, args ) VLC_EXPORT (type, name, args) /***************************************************************************** * OS-specific headers and thread types @@ -478,7 +509,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ int i_object_id; \ int i_object_type; \ const char *psz_object_type; \ - char *psz_object_name; \ + const char *psz_object_name; \ \ /* Messages header */ \ char *psz_header; \ @@ -505,8 +536,8 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ variable_t * p_vars; \ \ /* Stuff related to the libvlc structure */ \ - libvlc_t * p_libvlc; /**< root of all evil */ \ - vlc_t * p_vlc; /**< (root of all evil) - 1 */ \ + libvlc_global_data_t *p_libvlc_global; /**< root of all evil */ \ + libvlc_int_t *p_libvlc; /**< (root of all evil) - 1 */ \ \ volatile int i_refcount; /**< usage count */ \ vlc_object_t * p_parent; /**< our parent */ \ @@ -593,149 +624,67 @@ static int64_t GCD( int64_t a, int64_t b ) else return a; } -/* Dynamic array handling: realloc array, move data, increment position */ -#if defined( _MSC_VER ) && _MSC_VER < 1300 && !defined( UNDER_CE ) -# define VLCCVP (void**) /* Work-around for broken compiler */ -#else -# define VLCCVP -#endif -#define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem ) \ - do \ - { \ - if( !i_oldsize ) (p_ar) = NULL; \ - (p_ar) = VLCCVP realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \ - if( (i_oldsize) - (i_pos) ) \ - { \ - memmove( (p_ar) + (i_pos) + 1, (p_ar) + (i_pos), \ - ((i_oldsize) - (i_pos)) * sizeof( *(p_ar) ) ); \ - } \ - (p_ar)[i_pos] = elem; \ - (i_oldsize)++; \ - } \ - while( 0 ) - -#define REMOVE_ELEM( p_ar, i_oldsize, i_pos ) \ - do \ - { \ - if( (i_oldsize) - (i_pos) - 1 ) \ - { \ - memmove( (p_ar) + (i_pos), \ - (p_ar) + (i_pos) + 1, \ - ((i_oldsize) - (i_pos) - 1) * sizeof( *(p_ar) ) ); \ - } \ - if( i_oldsize > 1 ) \ - { \ - (p_ar) = realloc( p_ar, ((i_oldsize) - 1) * sizeof( *(p_ar) ) ); \ - } \ - else \ - { \ - free( p_ar ); \ - (p_ar) = NULL; \ - } \ - (i_oldsize)--; \ - } \ - while( 0 ) - - -#define TAB_APPEND( count, tab, p ) \ - if( (count) > 0 ) \ - { \ - (tab) = realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \ - } \ - else \ - { \ - (tab) = malloc( sizeof( void ** ) ); \ - } \ - (tab)[count] = (p); \ - (count)++ - -#define TAB_FIND( count, tab, p, index ) \ - { \ - int _i_; \ - (index) = -1; \ - for( _i_ = 0; _i_ < (count); _i_++ ) \ - { \ - if( (tab)[_i_] == (p) ) \ - { \ - (index) = _i_; \ - break; \ - } \ - } \ - } - -#define TAB_REMOVE( count, tab, p ) \ - { \ - int _i_index_; \ - TAB_FIND( count, tab, p, _i_index_ ); \ - if( _i_index_ >= 0 ) \ - { \ - if( (count) > 1 ) \ - { \ - memmove( ((void**)(tab) + _i_index_), \ - ((void**)(tab) + _i_index_+1), \ - ( (count) - _i_index_ - 1 ) * sizeof( void* ) );\ - } \ - (count)--; \ - if( (count) == 0 ) \ - { \ - free( tab ); \ - (tab) = NULL; \ - } \ - } \ - } - -/* Hash tables handling */ -struct hashtable_entry_t -{ - int i_id; - char *psz_name; - uint64_t i_hash; - void *p_data; -}; - -VLC_EXPORT( void, vlc_HashInsert, (hashtable_entry_t **, int *, int, const char *, void *)); -VLC_EXPORT( void*, vlc_HashRetrieve, (hashtable_entry_t*, int, int, const char *) ); -VLC_EXPORT( int, vlc_HashLookup, (hashtable_entry_t *, int, int, const char *) ); - +/* Malloc with automatic error */ +#define MALLOC_VOID( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) return; } +#define MALLOC_NULL( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) return NULL; } +#define MALLOC_ERR( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) return VLC_ENOMEM; } +#define MALLOC_GOTOERR( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) goto error; } +#define DECMALLOC_VOID( var, type ) type* var = (type*)malloc( sizeof(type) );\ + if( !var ) return; +#define DECMALLOC_ERR( var, type ) type* var = (type*)malloc( sizeof(type) );\ + if( !var ) return VLC_ENOMEM; +#define DECMALLOC_NULL( var, type ) type* var = (type*)malloc( sizeof(type) );\ + if( !var ) return NULL; + +#define FREENULL(a) if( a ) { free( a ); a = NULL; } +#define FREE(a) if( a ) { free( a ); } + +#define EMPTY_STR(str) (!str || !*str) + +#include /* 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. */ -static inline uint16_t U16_AT( void const * _p ) +static inline uint16_t U16_AT( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint16_t)p[0] << 8) | p[1] ); } -static inline uint32_t U32_AT( void const * _p ) +static inline uint32_t U32_AT( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint32_t)p[0] << 24) | ((uint32_t)p[1] << 16) | ((uint32_t)p[2] << 8) | p[3] ); } -static inline uint64_t U64_AT( void const * _p ) +static inline uint64_t U64_AT( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint64_t)p[0] << 56) | ((uint64_t)p[1] << 48) | ((uint64_t)p[2] << 40) | ((uint64_t)p[3] << 32) | ((uint64_t)p[4] << 24) | ((uint64_t)p[5] << 16) | ((uint64_t)p[6] << 8) | p[7] ); } -static inline uint16_t GetWLE( void const * _p ) +static inline uint16_t GetWLE( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint16_t)p[1] << 8) | p[0] ); } -static inline uint32_t GetDWLE( void const * _p ) +static inline uint32_t GetDWLE( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint32_t)p[3] << 24) | ((uint32_t)p[2] << 16) | ((uint32_t)p[1] << 8) | p[0] ); } -static inline uint64_t GetQWLE( void const * _p ) +static inline uint64_t GetQWLE( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint64_t)p[7] << 56) | ((uint64_t)p[6] << 48) | ((uint64_t)p[5] << 40) | ((uint64_t)p[4] << 32) | ((uint64_t)p[3] << 24) | ((uint64_t)p[2] << 16) @@ -790,7 +739,7 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) SetDWBE( p, ( i_qw >> 32)&0xffffffff ); } -#if WORDS_BIGENDIAN +#ifdef WORDS_BIGENDIAN # define hton16(i) ( i ) # define hton32(i) ( i ) # define hton64(i) ( i ) @@ -1175,10 +1124,10 @@ VLC_EXPORT( char *, vlc_dgettext, ( const char *package, const char *msgid ) ); # else # define _(String) dgettext(PACKAGE_NAME, String) # endif -# define N_(String) ((char*)(String)) +# define N_(String) (String) #else -# define _(String) ((char*)(String)) -# define N_(String) ((char*)(String)) +# define _(String) (String) +# define N_(String) (String) #endif /***************************************************************************** @@ -1215,3 +1164,10 @@ VLC_EXPORT( const char *, VLC_Changeset, ( void ) ); # define PACKAGE #endif +#if defined( WIN32 ) || defined( UNDER_CE ) +# define DIR_SEP_CHAR '\\' +# define DIR_SEP "\\" +#else +# define DIR_SEP_CHAR '/' +# define DIR_SEP "/" +#endif