X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fcommon.h;h=423eeb9e6e91849c55206378530e09a74dec1fa5;hb=440f9992ee947ea5fd0debbf35fdd1011c6404b3;hp=fb4cb9b2ffd5cc5b9f5b3c11b9b174e14a3d8ea6;hpb=c6313a9b1b5765dd6d0d155505b7161e084c6d51;p=vlc diff --git a/include/common.h b/include/common.h index fb4cb9b2ff..423eeb9e6e 100644 --- a/include/common.h +++ b/include/common.h @@ -1,9 +1,29 @@ /***************************************************************************** * common.h: common definitions - * (c)1998 VideoLAN - ***************************************************************************** - * Collection of usefull common types and macros definitions + * Collection of useful common types and macros definitions ***************************************************************************** + * Copyright (C) 1998, 1999, 2000 VideoLAN + * $Id: common.h,v 1.32 2001/05/30 17:03:11 sam Exp $ + * + * Authors: Samuel Hocevar + * Vincent Seguin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + *****************************************************************************/ + +/***************************************************************************** * required headers: * config.h *****************************************************************************/ @@ -17,15 +37,57 @@ typedef u8 byte_t; /* Boolean type */ +#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 +# include +#else +# include +# 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 *****************************************************************************/ +/* Plugins */ +struct plugin_bank_s; +struct plugin_info_s; + +typedef struct plugin_bank_s * p_plugin_bank_t; +typedef struct plugin_info_s * p_plugin_info_t; + +/* 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; struct intf_sys_s; @@ -41,11 +103,11 @@ typedef struct intf_channel_s * p_intf_channel_t; /* Input */ struct input_thread_s; -struct input_vlan_s; +struct input_channel_s; struct input_cfg_s; typedef struct input_thread_s * p_input_thread_t; -typedef struct input_vlan_s * p_input_vlan_t; +typedef struct input_channel_s * p_input_channel_t; typedef struct input_cfg_s * p_input_cfg_t; /* Audio */ @@ -70,10 +132,22 @@ 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; +struct es_descriptor_s; + /***************************************************************************** * Macros and inline functions *****************************************************************************/ +#ifdef NTOHL_IN_SYS_PARAM_H +# include +#elif defined(WIN32) +#else +# include +#endif + /* CEIL: division with round to nearest greater integer */ #define CEIL(n, d) ( ((n) / (d)) + ( ((n) % (d)) ? 1 : 0) ) @@ -81,34 +155,38 @@ typedef struct video_parser_s * p_video_parser_t; #define PAD(n, d) ( ((n) % (d)) ? ((((n) / (d)) + 1) * (d)) : (n) ) /* MAX and MIN: self explanatory */ +#ifndef MAX #define MAX(a, b) ( ((a) > (b)) ? (a) : (b) ) +#endif +#ifndef MIN #define MIN(a, b) ( ((a) < (b)) ? (a) : (b) ) +#endif -/* MSB (big endian)/LSB (little endian) convertions - network order is always +/* 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 - 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 used by input to access the TS buffer */ -#define U32_AT(p) ( ntohl ( *( (u32 *)(p) ) ) ) -#define U16_AT(p) ( ntohs ( *( (u16 *)(p) ) ) ) +/* Macros with automatic casts */ +#define U64_AT(p) ( ntoh64 ( *( (u64 *)(p) ) ) ) +#define U32_AT(p) ( ntoh32 ( *( (u32 *)(p) ) ) ) +#define U16_AT(p) ( ntoh16 ( *( (u16 *)(p) ) ) ) +