summaryrefslogtreecommitdiffstats
path: root/libhb
diff options
context:
space:
mode:
Diffstat (limited to 'libhb')
-rw-r--r--libhb/common.h14
-rw-r--r--libhb/decavcodec.c4
-rw-r--r--libhb/decmetadata.c2
-rw-r--r--libhb/fifo.c2
-rw-r--r--libhb/module.defs33
-rw-r--r--libhb/module.rules12
-rw-r--r--libhb/ports.c29
-rw-r--r--libhb/ports.h3
-rw-r--r--libhb/reader.c2
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