diff -Nur xbmc-15.1-Isengard.orig/Makefile.in xbmc-15.1-Isengard.new/Makefile.in --- xbmc-15.1-Isengard.orig/Makefile.in 2015-08-16 16:37:32.000000000 +0200 +++ xbmc-15.1-Isengard.new/Makefile.in 2015-08-27 22:22:25.230203818 +0200 @@ -187,7 +187,6 @@ LIB_DIRS=\ lib/cximage-6.0 \ lib/libexif \ - lib/libhdhomerun \ lib/cpluff \ lib/xbmc-dll-symbols @@ -403,15 +402,13 @@ endif libexif: dllloader $(MAKE) -C lib/libexif -libhdhomerun: dllloader - $(MAKE) -C lib/libhdhomerun imagelib: dllloader $(MAKE) -C lib/cximage-6.0 codecs: dvdpcodecs dvdpextcodecs -libs: $(LIBSSE4) libhdhomerun imagelib libexif system/libcpluff-@ARCH@.so +libs: $(LIBSSE4) imagelib libexif system/libcpluff-@ARCH@.so externals: codecs libs visualizations screensavers libaddon diff -Nur xbmc-15.1-Isengard.orig/configure.ac xbmc-15.1-Isengard.new/configure.ac --- xbmc-15.1-Isengard.orig/configure.ac 2015-08-16 16:37:32.000000000 +0200 +++ xbmc-15.1-Isengard.new/configure.ac 2015-08-27 22:24:50.502819735 +0200 @@ -1312,6 +1312,7 @@ XB_FIND_SONAME([VORBISFILE], [vorbisfile]) XB_FIND_SONAME([ASS], [ass]) XB_FIND_SONAME([MPEG2], [mpeg2]) +XB_FIND_SONAME([HDHOMERUN], [hdhomerun]) # WebServer if test "$use_webserver" = "yes"; then @@ -2477,7 +2478,6 @@ xbmc/network/Makefile \ xbmc/network/upnp/Makefile \ lib/libexif/Makefile \ - lib/libhdhomerun/Makefile \ lib/cximage-6.0/Makefile \ lib/libUPnP/Makefile \ xbmc/DllPaths_generated.h \ diff -Nur xbmc-15.1-Isengard.orig/xbmc/DllPaths_generated.h.in xbmc-15.1-Isengard.new/xbmc/DllPaths_generated.h.in --- xbmc-15.1-Isengard.orig/xbmc/DllPaths_generated.h.in 2015-08-16 16:37:32.000000000 +0200 +++ xbmc-15.1-Isengard.new/xbmc/DllPaths_generated.h.in 2015-08-27 22:25:40.296767067 +0200 @@ -28,7 +28,7 @@ #define DLL_PATH_CPLUFF "special://xbmcbin/system/libcpluff-@ARCH@.so" #define DLL_PATH_IMAGELIB "special://xbmcbin/system/ImageLib-@ARCH@.so" #define DLL_PATH_LIBEXIF "special://xbmcbin/system/libexif-@ARCH@.so" -#define DLL_PATH_LIBHDHOMERUN "special://xbmcbin/system/hdhomerun-@ARCH@.so" +#define DLL_PATH_LIBHDHOMERUN "@HDHOMERUN_SONAME@" #define DLL_PATH_MEDIAINFO "special://xbmcbin/system/mediainfo-@ARCH@.so" #define DLL_PATH_LIBRTMP "@RTMP_SONAME@" diff -Nur xbmc-15.1-Isengard.orig/xbmc/filesystem/DllHDHomeRun.h xbmc-15.1-Isengard.new/xbmc/filesystem/DllHDHomeRun.h --- xbmc-15.1-Isengard.orig/xbmc/filesystem/DllHDHomeRun.h 2015-08-16 16:37:32.000000000 +0200 +++ xbmc-15.1-Isengard.new/xbmc/filesystem/DllHDHomeRun.h 2015-08-27 22:29:42.914369282 +0200 @@ -20,7 +20,7 @@ */ #include "DynamicDll.h" -#include "lib/libhdhomerun/hdhomerun.h" +#include class DllHdHomeRunInterface { @@ -41,30 +41,54 @@ class DllHdHomeRun : public DllDynamic, public DllHdHomeRunInterface { - DECLARE_DLL_WRAPPER(DllHdHomeRun, DLL_PATH_LIBHDHOMERUN) - DEFINE_METHOD5(int, discover_find_devices_custom, (uint32_t p1, uint32_t p2, uint32_t p3, struct hdhomerun_discover_device_t p4[], int p5)) - DEFINE_METHOD2(struct hdhomerun_device_t*, device_create_from_str, (const char* p1, struct hdhomerun_debug_t *p2)) - DEFINE_METHOD1(void, device_destroy, (struct hdhomerun_device_t* p1)) - DEFINE_METHOD1(int, device_stream_start, (struct hdhomerun_device_t* p1)) - DEFINE_METHOD3(uint8_t*, device_stream_recv, (struct hdhomerun_device_t* p1, size_t p2, size_t* p3)) - DEFINE_METHOD1(void, device_stream_stop, (struct hdhomerun_device_t* p1)) - DEFINE_METHOD2(int, device_set_tuner_channel, (struct hdhomerun_device_t *p1, const char *p2)) - DEFINE_METHOD2(int, device_set_tuner_program, (struct hdhomerun_device_t *p1, const char *p2)) - DEFINE_METHOD2(int, device_set_tuner_from_str, (struct hdhomerun_device_t *p1, const char *p2)) - DEFINE_METHOD2(void, device_set_tuner, (struct hdhomerun_device_t *p1, unsigned int p2)) - DEFINE_METHOD3(int, device_get_tuner_status, (struct hdhomerun_device_t *p1, char **p2, struct hdhomerun_tuner_status_t *p3)); - BEGIN_METHOD_RESOLVE() - RESOLVE_METHOD_RENAME(hdhomerun_discover_find_devices_custom, discover_find_devices_custom) - RESOLVE_METHOD_RENAME(hdhomerun_device_create_from_str, device_create_from_str) - RESOLVE_METHOD_RENAME(hdhomerun_device_destroy, device_destroy) - RESOLVE_METHOD_RENAME(hdhomerun_device_stream_start, device_stream_start) - RESOLVE_METHOD_RENAME(hdhomerun_device_stream_recv, device_stream_recv) - RESOLVE_METHOD_RENAME(hdhomerun_device_stream_stop, device_stream_stop) - RESOLVE_METHOD_RENAME(hdhomerun_device_set_tuner_channel, device_set_tuner_channel) - RESOLVE_METHOD_RENAME(hdhomerun_device_set_tuner_program, device_set_tuner_program) - RESOLVE_METHOD_RENAME(hdhomerun_device_set_tuner_from_str, device_set_tuner_from_str) - RESOLVE_METHOD_RENAME(hdhomerun_device_set_tuner, device_set_tuner) - RESOLVE_METHOD_RENAME(hdhomerun_device_get_tuner_status, device_get_tuner_status) - END_METHOD_RESOLVE() + virtual ~DllHdHomeRun () {}; + + virtual int discover_find_devices_custom (uint32_t p1, uint32_t p2, uint32_t p3, struct hdhomerun_discover_device_t p4[], int p5) + { return ::hdhomerun_discover_find_devices_custom (p1, p2, p3, p4, p5); } + + virtual struct hdhomerun_device_t *device_create_from_str (const char* p1, struct hdhomerun_debug_t *p2) + { return ::hdhomerun_device_create_from_str (p1, p2); } + + virtual void device_destroy (struct hdhomerun_device_t* p1) + { ::hdhomerun_device_destroy (p1); } + + virtual int device_stream_start (struct hdhomerun_device_t* p1) + { return ::hdhomerun_device_stream_start (p1); } + + + virtual uint8_t *device_stream_recv (struct hdhomerun_device_t* p1, size_t p2, size_t* p3) + { + uint8_t *retval; + + size_t tmp = *p3; + retval = ::hdhomerun_device_stream_recv (p1, p2, &tmp); + *p3 = tmp; + + return retval; + } + virtual void device_stream_stop (struct hdhomerun_device_t* p1) + { ::hdhomerun_device_stream_stop (p1); } + + virtual int device_set_tuner_channel (struct hdhomerun_device_t *p1, const char *p2) + { return ::hdhomerun_device_set_tuner_channel (p1, p2); } + + virtual int device_set_tuner_program (struct hdhomerun_device_t *p1, const char *p2) + { return ::hdhomerun_device_set_tuner_program (p1, p2); } + + + virtual int device_set_tuner_from_str (struct hdhomerun_device_t *p1, const char *p2) + { return ::hdhomerun_device_set_tuner_from_str (p1, p2); } + + + virtual void device_set_tuner (struct hdhomerun_device_t *p1, unsigned int p2) + { ::hdhomerun_device_set_tuner (p1, p2); } + + virtual int device_get_tuner_status (struct hdhomerun_device_t *p1, char **p2, struct hdhomerun_tuner_status_t *p3) + { return ::hdhomerun_device_get_tuner_status (p1, p2, p3); } + + // DLL faking. + virtual bool ResolveExports() { return true; } + virtual bool Load() { return true; } + virtual void Unload() {} };