diff options
Diffstat (limited to 'libhb')
-rw-r--r-- | libhb/common.h | 14 | ||||
-rw-r--r-- | libhb/decavcodec.c | 4 | ||||
-rw-r--r-- | libhb/decmetadata.c | 2 | ||||
-rw-r--r-- | libhb/fifo.c | 2 | ||||
-rw-r--r-- | libhb/module.defs | 33 | ||||
-rw-r--r-- | libhb/module.rules | 12 | ||||
-rw-r--r-- | libhb/ports.c | 29 | ||||
-rw-r--r-- | libhb/ports.h | 3 | ||||
-rw-r--r-- | libhb/reader.c | 2 |
9 files changed, 79 insertions, 22 deletions
diff --git a/libhb/common.h b/libhb/common.h index 1fa3d4fe1..b7c468672 100644 --- a/libhb/common.h +++ b/libhb/common.h @@ -18,6 +18,20 @@ #include <sys/stat.h> #include <dirent.h> +#if defined( SYS_MINGW ) +# define fseek fseeko64 +# define ftell ftello64 +# undef fseeko +# define fseeko fseeko64 +# undef ftello +# define ftello ftello64 +# define flockfile(...) +# define funlockfile(...) +# define getc_unlocked getc +# undef off_t +# define off_t off64_t +#endif + #ifndef MIN #define MIN( a, b ) ( (a) > (b) ? (b) : (a) ) #endif diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c index 532059706..8b09afcf7 100644 --- a/libhb/decavcodec.c +++ b/libhb/decavcodec.c @@ -401,7 +401,7 @@ static int decavcodecBSInfo( hb_work_object_t *w, const hb_buffer_t *buf, AVCodecParserContext *parser = av_parser_init( codec->id ); AVCodecContext *context = avcodec_alloc_context(); hb_avcodec_open( context, codec ); -#ifdef SYS_CYGWIN +#if defined( SYS_CYGWIN ) uint8_t *buffer = memalign(16, AVCODEC_MAX_AUDIO_FRAME_SIZE); #else uint8_t *buffer = malloc( AVCODEC_MAX_AUDIO_FRAME_SIZE ); @@ -1132,7 +1132,7 @@ static void decodeAudio( hb_work_private_t *pv, uint8_t *data, int size ) // complicated, machine dependent alignment here we use the // fact that malloc returns an aligned pointer on most architectures. - #ifdef SYS_CYGWIN + #if defined( SYS_CYGWIN ) // Cygwin's malloc doesn't appear to return 16-byte aligned memory so use memalign instead. pv->buffer = memalign(16, AVCODEC_MAX_AUDIO_FRAME_SIZE); #else diff --git a/libhb/decmetadata.c b/libhb/decmetadata.c index 235fc69fd..85c3cd28b 100644 --- a/libhb/decmetadata.c +++ b/libhb/decmetadata.c @@ -130,7 +130,7 @@ static void decmp4metadata( hb_title_t *title ) MP4ChapterTypeQt ); if( chapter_list && ( hb_list_count( title->list_chapter ) == 0 ) ) { - uint i = 1; + uint32_t i = 1; while( i <= chapter_count ) { hb_chapter_t * chapter; diff --git a/libhb/fifo.c b/libhb/fifo.c index 9441f7172..c756f5673 100644 --- a/libhb/fifo.c +++ b/libhb/fifo.c @@ -147,7 +147,7 @@ hb_buffer_t * hb_buffer_init( int size ) if (size) { -#if defined( SYS_DARWIN ) || defined( SYS_FREEBSD ) +#if defined( SYS_DARWIN ) || defined( SYS_FREEBSD ) || defined( SYS_MINGW ) b->data = malloc( b->alloc ); #elif defined( SYS_CYGWIN ) /* FIXME */ diff --git a/libhb/module.defs b/libhb/module.defs index e3942f781..dc2fb1ad5 100644 --- a/libhb/module.defs +++ b/libhb/module.defs @@ -1,6 +1,12 @@ -$(eval $(call import.MODULE.defs,LIBHB,libhb,A52DEC BZIP2 FAAC FAAD2 FFMPEG LAME LIBDCA LIBDVDREAD LIBMKV LIBMP4V2 LIBOGG LIBSAMPLERATE LIBTHEORA LIBVORBIS MPEG2DEC X264 XVIDCORE ZLIB LIBHB TEST DOC)) +__deps__ := A52DEC BZIP2 FAAC FAAD2 FFMPEG LAME LIBDCA \ + LIBDVDREAD LIBMKV LIBMP4V2 LIBOGG LIBSAMPLERATE LIBTHEORA \ + LIBVORBIS MPEG2DEC PTHREADW32 X264 XVIDCORE ZLIB + +$(eval $(call import.MODULE.defs,LIBHB,libhb,$(__deps__))) $(eval $(call import.GCC,LIBHB)) +############################################################################### + LIBHB.src/ = $(SRC/)libhb/ LIBHB.build/ = $(BUILD/)libhb/ @@ -10,10 +16,7 @@ LIBHB.m4.out = $(patsubst $(LIBHB.src/)%.m4,$(LIBHB.build/)%,$(LIBHB.m4.in)) LIBHB.c = $(wildcard $(LIBHB.src/)*.c) LIBHB.c.o = $(patsubst $(SRC/)%.c,$(BUILD/)%.o,$(LIBHB.c)) LIBHB.d = $(LIBHB.m4.out) $(LIBHB.h.out) \ - $(foreach n, \ - A52DEC BZIP2 FAAC FAAD2 FFMPEG LAME LIBDCA LIBDVDREAD LIBMKV LIBMP4V2 LIBOGG \ - LIBSAMPLERATE LIBTHEORA LIBVORBIS MPEG2DEC X264 XVIDCORE ZLIB, \ - $($n.INSTALL.target) ) + $(foreach n,$(LIBHB.prerequisites),$($n.INSTALL.target) ) LIBHB.h.in = $(wildcard $(LIBHB.src/)*.h) LIBHB.h.out = $(patsubst $(SRC/)%,$(BUILD/)%,$(LIBHB.h.in)) @@ -40,6 +43,8 @@ else ifeq ($(BUILD.system),darwin) LIBHB.GCC.D += SYS_DARWIN else ifeq ($(BUILD.system),linux) LIBHB.GCC.D += SYS_LINUX _LARGEFILE_SOURCE _FILE_OFFSET_BITS=64 +else ifeq ($(BUILD.system),mingw) + LIBHB.GCC.D += SYS_MINGW PTW32_STATIC_LIB else ifeq ($(BUILD.system),solaris) LIBHB.GCC.D += SYS_SunOS _LARGEFILE_SOURCE _FILE_OFFSET_BITS=64 else @@ -76,4 +81,22 @@ endif ############################################################################### +ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) + +LIBHB.dll = $(LIBHB.build/)hb.dll +LIBHB.lib = $(LIBHB.build/)hb.lib + +LIBHB.dll.libs = $(foreach n, \ + a52 bz2 avcodec avformat avutil dca dvdread faac faad mkv mpeg2 mp3lame mp4v2 \ + ogg pthreadGC2 samplerate swscale theora vorbis vorbisenc x264 xvidcore z, \ + $(CONTRIB.build/)lib/lib$(n).a ) + +LIBHB.GCC.args.extra.dylib++ = -Wl,--out-implib,$(LIBHB.lib) +LIBHB.GCC.l += iberty ws2_32 +LIBHB.out += $(LIBHB.dll) $(LIBHB.lib) + +endif + +############################################################################### + BUILD.out += $(LIBHB.out) diff --git a/libhb/module.rules b/libhb/module.rules index 8f63a143f..c92ababa2 100644 --- a/libhb/module.rules +++ b/libhb/module.rules @@ -36,5 +36,17 @@ endif ############################################################################### +ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) + +libhb.build: $(LIBHB.dll) + +$(LIBHB.dll): | $(dirname $(LIBHB.dll) $(LIBHB.lib)) +$(LIBHB.dll): $(LIBHB.c.o) $(LIBHB.yasm.o) + $(call LIBHB.GCC.DYLIB++,$@,$^ $(LIBHB.dll.libs)) + +endif + +############################################################################### + clean: libhb.clean build: libhb.build diff --git a/libhb/ports.c b/libhb/ports.c index 1d2c4923f..2e6b65329 100644 --- a/libhb/ports.c +++ b/libhb/ports.c @@ -31,6 +31,11 @@ #include <windows.h> #endif +#ifdef SYS_MINGW +#include <pthread.h> +#include <windows.h> +#endif + #ifdef SYS_SunOS #include <sys/processor.h> #endif @@ -39,15 +44,15 @@ #include <sys/time.h> -//#ifdef SYS_CYGWIN -//#include <winsock2.h> -//#include <ws2tcpip.h> -//#else +#ifdef SYS_MINGW +#include <winsock2.h> +#include <ws2tcpip.h> +#else #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> -//#endif +#endif #include "hb.h" @@ -97,7 +102,7 @@ void hb_snooze( int delay ) snooze( 1000 * delay ); #elif defined( SYS_DARWIN ) || defined( SYS_LINUX ) || defined( SYS_FREEBSD) || defined( SYS_SunOS ) usleep( 1000 * delay ); -#elif defined( SYS_CYGWIN ) +#elif defined( SYS_CYGWIN ) || defined( SYS_MINGW ) Sleep( delay ); #endif } @@ -119,7 +124,7 @@ int hb_get_cpu_count() } cpu_count = 1; -#if defined(SYS_CYGWIN) +#if defined(SYS_CYGWIN) || defined(SYS_MINGW) SYSTEM_INFO cpuinfo; GetSystemInfo( &cpuinfo ); cpu_count = cpuinfo.dwNumberOfProcessors; @@ -181,7 +186,7 @@ void hb_get_tempory_directory( hb_handle_t * h, char path[512] ) char base[512]; /* Create the base */ -#ifdef SYS_CYGWIN +#if defined( SYS_CYGWIN ) || defined( SYS_MINGW ) char *p; int i_size = GetTempPath( 512, base ); if( i_size <= 0 || i_size >= 512 ) @@ -227,11 +232,11 @@ void hb_get_tempory_filename( hb_handle_t * h, char name[1024], ***********************************************************************/ void hb_mkdir( char * name ) { -//#ifdef SYS_CYGWIN -// mkdir( name ); -//#else +#ifdef SYS_MINGW + mkdir( name ); +#else mkdir( name, 0755 ); -//#endif +#endif } /************************************************************************ diff --git a/libhb/ports.h b/libhb/ports.h index 9c2143944..c544f19a6 100644 --- a/libhb/ports.h +++ b/libhb/ports.h @@ -43,6 +43,9 @@ typedef struct hb_thread_s hb_thread_t; #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 hb_thread_t * hb_thread_init( char * name, void (* function)(void *), diff --git a/libhb/reader.c b/libhb/reader.c index 7b44a6500..8c5ecdd2a 100644 --- a/libhb/reader.c +++ b/libhb/reader.c @@ -27,7 +27,7 @@ typedef struct int64_t scr_offset; hb_psdemux_t demux; int scr_changes; - uint sequence; + uint32_t sequence; uint8_t st_slots; // size (in slots) of stream_timing array uint8_t saw_video; // != 0 if we've seen video uint8_t saw_audio; // != 0 if we've seen audio |