From 6c05d16be3bae96479363c2117c28c4261374ab4 Mon Sep 17 00:00:00 2001 From: Ken Dreyer Date: Fri, 24 Aug 2012 19:34:47 -0600 Subject: [PATCH 2/3] Fedora: use external hdhomerun Original patch by Alex Lancaster (cherry picked from commit ef5c269992b32d67de7547e9f530b6c971381f45) --- Makefile.in | 5 +-- configure.in | 1 - xbmc/filesystem/DllHDHomeRun.h | 78 ++++++++++++++++++++++++++++-------------- 3 files changed, 53 insertions(+), 31 deletions(-) diff --git a/Makefile.in b/Makefile.in index 8eda3c4..fbb19bd 100644 --- a/Makefile.in +++ b/Makefile.in @@ -188,7 +188,6 @@ LIB_DIRS=\ lib/cximage-6.0 \ lib/libexif \ - lib/libhdhomerun \ lib/cpluff \ lib/xbmc-dll-symbols @@ -404,15 +403,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 --git a/configure.ac b/configure.ac index 343292e..2060e24 100644 --- a/configure.ac +++ b/configure.ac @@ -2478,7 +2478,6 @@ xbmc/network/httprequesthandler/python/Makefile \ xbmc/network/upnp/Makefile \ lib/libexif/Makefile \ - lib/libhdhomerun/Makefile \ lib/cximage-6.0/Makefile \ lib/libUPnP/Makefile \ xbmc/DllPaths_generated.h \ diff --git a/xbmc/filesystem/DllHDHomeRun.h b/xbmc/filesystem/DllHDHomeRun.h index 150b00f..57936be 100644 --- a/xbmc/filesystem/DllHDHomeRun.h +++ b/xbmc/filesystem/DllHDHomeRun.h @@ -20,7 +20,7 @@ */ #include "DynamicDll.h" -#include "lib/libhdhomerun/hdhomerun.h" +#include class DllHdHomeRunInterface { @@ -41,30 +41,56 @@ public: 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() +public: + 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() {} }; -- 1.8.5.3