#endif
#include "vlc_config.h"
-#include "modules_inner.h"
/*****************************************************************************
* Required system headers
*****************************************************************************/
/* 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 */
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;
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;
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 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 device_t device_t;
typedef struct device_probe_t device_probe_t;
typedef struct probe_sys_t probe_sys_t;
-typedef struct localized_string_t localized_string_t;
-typedef struct i18n_string_t i18n_string_t;
/* block */
typedef struct block_t block_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;
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
*****************************************************************************/
/*****************************************************************************
* 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
# 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
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; \
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 */ \
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 ); }
-/* 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 *) );
+#define EMPTY_STR(str) (!str || !*str)
+#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. */
-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)
SetDWBE( p, ( i_qw >> 32)&0xffffffff );
}
-#if WORDS_BIGENDIAN
+#ifdef WORDS_BIGENDIAN
# define hton16(i) ( i )
# define hton32(i) ( i )
# define hton64(i) ( i )
# 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
/*****************************************************************************
# 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