X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fcommon.h;h=7f90479644cd4ff52538c69627b7cd066718da3d;hb=0fee43a45c5c05c42ca8da004fc15eba9442970b;hp=4d64e1a759c287b34652c4faf41d3610e5085d91;hpb=9589dcb78b12905c70c766959ec762b5e660ef68;p=vlc diff --git a/include/common.h b/include/common.h index 4d64e1a759..7f90479644 100644 --- a/include/common.h +++ b/include/common.h @@ -3,7 +3,7 @@ * Collection of useful common types and macros definitions ***************************************************************************** * Copyright (C) 1998, 1999, 2000 VideoLAN - * $Id: common.h,v 1.19 2000/12/26 19:14:46 massiot Exp $ + * $Id: common.h,v 1.29 2001/03/16 22:37:06 massiot Exp $ * * Authors: Samuel Hocevar * Vincent Seguin @@ -37,31 +37,39 @@ typedef u8 byte_t; /* Boolean type */ -#ifndef SYS_SOLARIS -typedef int boolean_t; -#else +#ifdef BOOLEAN_T_IN_SYS_TYPES_H # include +#elif defined(BOOLEAN_T_IN_PTHREAD_H) +# include +#else +typedef int boolean_t; #endif #ifdef SYS_GNU # define _MACH_I386_BOOLEAN_H_ #endif /* ptrdiff_t definition */ -#ifdef _HAVE_STDDEF_H +#ifdef HAVE_STDDEF_H # include #else # include -#endif - -#ifndef _PTRDIFF_T -# define _PTRDIFF_T +# ifndef _PTRDIFF_T +# define _PTRDIFF_T /* Not portable in a 64-bit environment. */ typedef int ptrdiff_t; +# endif #endif /* Counter for statistics and profiling */ typedef unsigned long count_t; +/* DCT elements types */ +#ifndef VDEC_DFT +typedef short dctelem_t; +#else +typedef int dctelem_t; +#endif + /***************************************************************************** * Classes declaration *****************************************************************************/ @@ -73,10 +81,12 @@ struct plugin_info_s; typedef struct plugin_bank_s * p_plugin_bank_t; typedef struct plugin_info_s * p_plugin_info_t; -/* Playlist */ +/* Plugins */ struct playlist_s; +struct playlist_item_s; typedef struct playlist_s * p_playlist_t; +typedef struct playlist_item_s * p_playlist_item_t; /* Interface */ struct intf_thread_s; @@ -122,10 +132,20 @@ typedef struct vdec_thread_s * p_vdec_thread_t; typedef struct vpar_thread_s * p_vpar_thread_t; typedef struct video_parser_s * p_video_parser_t; +/* Misc */ +struct macroblock_s; +struct data_packet_s; + /***************************************************************************** * Macros and inline functions *****************************************************************************/ +#ifdef NTOHL_IN_SYS_PARAM_H +# include +#else +# include +#endif + /* CEIL: division with round to nearest greater integer */ #define CEIL(n, d) ( ((n) / (d)) + ( ((n) % (d)) ? 1 : 0) ) @@ -145,26 +165,26 @@ typedef struct video_parser_s * p_video_parser_t; * byte orders other than little and big endians are not supported, but only * the VAX seems to have such exotic properties - note that these 'functions' * needs or the local equivalent. */ -/* FIXME??: hton64 should be declared as an extern inline function to avoid border - * effects (see byteorder.h) */ -#if __BYTE_ORDER == __LITTLE_ENDIAN +/* FIXME: hton64 should be declared as an extern inline function to avoid + * border effects (see byteorder.h) */ +#if WORDS_BIGENDIAN #define hton16 htons #define hton32 htonl -#define hton64(i) ( ((u64)(htonl((i) & 0xffffffff)) << 32) | htonl(((i) >> 32) & 0xffffffff ) ) +#define hton64(i) ( i ) #define ntoh16 ntohs #define ntoh32 ntohl -#define ntoh64 hton64 -#elif __BYTE_ORDER == __BIG_ENDIAN +#define ntoh64(i) ( i ) +#else #define hton16 htons #define hton32 htonl -#define hton64(i) ( i ) +#define hton64(i) ( ((u64)(htonl((i) & 0xffffffff)) << 32) | htonl(((i) >> 32) & 0xffffffff ) ) #define ntoh16 ntohs #define ntoh32 ntohl -#define ntoh64(i) ( i ) -#else -/* XXX??: cause a compilation error */ +#define ntoh64 hton64 #endif /* Macros with automatic casts */ -#define U32_AT(p) ( ntohl ( *( (u32 *)(p) ) ) ) -#define U16_AT(p) ( ntohs ( *( (u16 *)(p) ) ) ) +#define U64_AT(p) ( ntoh64 ( *( (u64 *)(p) ) ) ) +#define U32_AT(p) ( ntoh32 ( *( (u32 *)(p) ) ) ) +#define U16_AT(p) ( ntoh16 ( *( (u16 *)(p) ) ) ) +