diff options
Diffstat (limited to 'libhb/handbrake/ports.h')
-rw-r--r-- | libhb/handbrake/ports.h | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/libhb/handbrake/ports.h b/libhb/handbrake/ports.h new file mode 100644 index 000000000..6b793da28 --- /dev/null +++ b/libhb/handbrake/ports.h @@ -0,0 +1,240 @@ +/* ports.h + + Copyright (c) 2003-2019 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#ifndef HB_PORTS_H +#define HB_PORTS_H + +#if ARCH_X86_64 || ARCH_X86_32 +#define ARCH_X86 +#endif + +#if defined(_WIN32) +#define DIR_SEP_STR "\\" +#define DIR_SEP_CHAR '\\' +#define IS_DIR_SEP(c) (c == '\\' || c == '/') +#else +#define DIR_SEP_STR "/" +#define DIR_SEP_CHAR '/' +#define IS_DIR_SEP(c) (c == '/') +#endif + +#include "handbrake/project.h" + +#if HB_PROJECT_FEATURE_QSV +#include "mfx/mfxstructures.h" +#ifdef SYS_LINUX +#include <va/va_drm.h> +#endif +#endif + +/************************************************************************ + * HW accel display + ***********************************************************************/ +#ifdef SYS_LINUX +extern const char* DRM_INTEL_DRIVER_NAME; +#endif // SYS_LINUX + +typedef struct +{ + void * handle; +#if HB_PROJECT_FEATURE_QSV + mfxHandleType mfxType; + +#ifdef SYS_LINUX + int vaFd; + VADisplay vaDisplay; +#endif // SYS_LINUX +#endif +} hb_display_t; + +hb_display_t * hb_display_init(const char * driver_name, + const char * const * interface_names); +void hb_display_close(hb_display_t ** _d); + +/************************************************************************ + * CPU info utilities + ***********************************************************************/ +enum hb_cpu_platform +{ + // list of microarchitecture codenames + HB_CPU_PLATFORM_UNSPECIFIED = 0, + HB_CPU_PLATFORM_INTEL_BNL, + HB_CPU_PLATFORM_INTEL_SNB, + HB_CPU_PLATFORM_INTEL_IVB, + HB_CPU_PLATFORM_INTEL_SLM, + HB_CPU_PLATFORM_INTEL_HSW, + HB_CPU_PLATFORM_INTEL_BDW, + HB_CPU_PLATFORM_INTEL_CHT, + HB_CPU_PLATFORM_INTEL_SKL, + HB_CPU_PLATFORM_INTEL_KBL, + HB_CPU_PLATFORM_INTEL_ICL, +}; +int hb_get_cpu_count(void); +int hb_get_cpu_platform(void); +const char* hb_get_cpu_name(void); +const char* hb_get_cpu_platform_name(void); + +/************************************************************************ + * Utils + ***********************************************************************/ +// provide time in ms +uint64_t hb_get_date(void); +// provide time in us +uint64_t hb_get_time_us(void); + +void hb_snooze( int delay ); +int hb_platform_init(void); + +#ifdef SYS_MINGW +typedef struct +{ + _WDIR *wdir; + struct dirent entry; +} HB_DIR; +#else +typedef DIR HB_DIR; +#endif + +#ifdef SYS_MINGW +typedef struct _stat64 hb_stat_t; +#else +typedef struct stat hb_stat_t; +#endif + +HB_DIR* hb_opendir(const char *path); +int hb_closedir(HB_DIR *dir); +void hb_rewinddir(HB_DIR *dir); +struct dirent * hb_readdir(HB_DIR *dir); +int hb_mkdir(char * name); +int hb_stat(const char *path, hb_stat_t *sb); +FILE * hb_fopen(const char *path, const char *mode); +char * hb_strr_dir_sep(const char *path); + +/************************************************************************ + * String utils + ***********************************************************************/ +char * hb_strndup(const char * src, size_t len); + +/************************************************************************ + * File utils + ***********************************************************************/ +char * hb_get_temporary_directory(void); +char * hb_get_temporary_filename( char *fmt, ... ); +size_t hb_getline(char **lineptr, size_t *n, FILE *fp); + +#ifdef __LIBHB__ + +// Convert utf8 string to current code page. +char * hb_utf8_to_cp(const char *src); + +/* Everything from now is only used internally and hidden to the UI */ + +/************************************************************************ + * DVD utils + ***********************************************************************/ +int hb_dvd_region(char *device, int *region_mask); + +#if defined( SYS_DARWIN ) +int osx_get_user_config_directory( char path[512] ); +#endif +void hb_get_user_config_directory( char path[512] ); +void hb_get_user_config_filename( char name[1024], char *fmt, ... ); +/************************************************************************ + * Threads + ***********************************************************************/ +typedef struct hb_thread_s hb_thread_t; + +#if defined( SYS_BEOS ) +# define HB_LOW_PRIORITY 5 +# define HB_NORMAL_PRIORITY 10 +#elif defined( SYS_DARWIN ) +# define HB_LOW_PRIORITY 31 +# define HB_NORMAL_PRIORITY 31 +#elif defined( SYS_CYGWIN ) +# define HB_LOW_PRIORITY 0 +# define HB_NORMAL_PRIORITY 1 +#elif defined( SYS_MINGW ) +# define HB_LOW_PRIORITY 0 +# define HB_NORMAL_PRIORITY 0 +#endif + +#ifndef HB_LOW_PRIORITY +#define HB_LOW_PRIORITY 0 +#endif + +#ifndef HB_NORMAL_PRIORITY +#define HB_NORMAL_PRIORITY 0 +#endif + +typedef void (thread_func_t)(void *); +hb_thread_t * hb_thread_init( const char * name, thread_func_t *function, + void * arg, int priority ); +void hb_thread_close( hb_thread_t ** ); +int hb_thread_has_exited( hb_thread_t * ); + +void hb_yield(void); + +/************************************************************************ + * Mutexes + ***********************************************************************/ + +hb_lock_t * hb_lock_init(); +void hb_lock_close( hb_lock_t ** ); +void hb_lock( hb_lock_t * ); +void hb_unlock( hb_lock_t * ); + +/************************************************************************ + * Condition variables + ***********************************************************************/ +typedef struct hb_cond_s hb_cond_t; + +hb_cond_t * hb_cond_init(); +void hb_cond_wait( hb_cond_t *, hb_lock_t * ); +void hb_cond_timedwait( hb_cond_t * c, hb_lock_t * lock, int msec ); +void hb_cond_signal( hb_cond_t * ); +void hb_cond_broadcast( hb_cond_t * c ); +void hb_cond_close( hb_cond_t ** ); + +/************************************************************************ + * Network + ***********************************************************************/ +typedef struct hb_net_s hb_net_t; + +hb_net_t * hb_net_open( char * address, int port ); +int hb_net_send( hb_net_t *, char * ); +int hb_net_recv( hb_net_t *, char *, int ); +void hb_net_close( hb_net_t ** ); + +/************************************************************************ +* OS Sleep Allow / Prevent +***********************************************************************/ +void* hb_system_sleep_opaque_init(); +void hb_system_sleep_opaque_close(void **opaque); +void hb_system_sleep_private_enable(void *opaque); +void hb_system_sleep_private_disable(void *opaque); + +/************************************************************************ +* Loadable Libraries +***********************************************************************/ +void * hb_dlopen(const char *name); +void * hb_dlsym(void *h, const char *name); +int hb_dlclose(void *h); + +#if defined( SYS_MINGW ) +#define HB_SO_EXT ".dll" +#elif defined( SYS_DARWIN ) +#define HB_SO_EXT ".dylib" +#else +#define HB_SO_EXT ".so" +#endif + +#endif /* __LIBHB__ */ + +#endif + |