diff --git a/README.md b/README.md index 76580d07..8ab64997 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,10 @@ Copyright (C)2017 Michael G. Brehm **BUILD ENVIRONMENT** * Windows 10 x64 15063 -* Visual Studio 2015 (with Git for Windows) +* Visual Studio 2017 (with VC++ 2015.3 v140 toolset and Windows 8.1 SDK) * Bash on Ubuntu on Windows 16.04.1 LTS * Android NDK r12b for Windows 64-bit +* Raspberry Pi development tools * Optional: Android SDK tools r25.2.3 for Windows * Optional: Oracle Java SE Runtime Environment 8 @@ -25,6 +26,7 @@ sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install gcc-4.9 g++-4.9 libc6-dev:i386 libstdc++-4.9-dev:i386 lib32gcc-4.9-dev sudo apt-get install gcc-4.9-arm-linux-gnueabihf g++-4.9-arm-linux-gnueabihf gcc-4.9-arm-linux-gnueabi g++-4.9-arm-linux-gnueabi gcc-4.9-aarch64-linux-gnu g++-4.9-aarch64-linux-gnu +git clone https://github.com/raspberrypi/tools.git raspberrypi --depth=1 ``` **CONFIGURE ANDROID NDK** @@ -62,7 +64,7 @@ Download the latest jre-8xxx-windows-x64.tar.gz from Oracle: ``` **BUILD AND GENERATE KODI ADDON PACKAGES** -Open "Developer Command Prompt for VS2015" +Open "Developer Command Prompt for VS2017" ``` git clone https://github.com/djp952/pvr.hdhomerundvr -b Krypton cd pvr.hdhomerundvr @@ -79,6 +81,7 @@ msbuild msbuild.proj > out\zuki.pvr.hdhomerundvr-android-arm-krypton-x.x.x.x.zip (android-arm) > out\zuki.pvr.hdhomerundvr-android-aarch64-krypton-x.x.x.x.zip (android-aarch64) > out\zuki.pvr.hdhomerundvr-android-x86-krypton-x.x.x.x.zip (android-x86) +> out\zuki.pvr.hdhomerundvr-raspbian-armhf-krypton-x.x.x.x.zip (raspbian-armhf) ``` **BUILD AND GENERATE MODIFIED KODI ANDROID APKS** diff --git a/depends/libcurl-nossl b/depends/libcurl-nossl index 7bc46171..aeb8eac6 160000 --- a/depends/libcurl-nossl +++ b/depends/libcurl-nossl @@ -1 +1 @@ -Subproject commit 7bc4617131f5c30ef3b3b95775074dadcce27c85 +Subproject commit aeb8eac6b2ed4f2462ce018094192844dbd34cdc diff --git a/depends/libuuid b/depends/libuuid index 1aa991c5..99240428 160000 --- a/depends/libuuid +++ b/depends/libuuid @@ -1 +1 @@ -Subproject commit 1aa991c5a828ed7dd752a0b5bbf98d569efa2f07 +Subproject commit 99240428a1f5c1737337372e9aab104e8f533ced diff --git a/depends/libz b/depends/libz index ec9fd93f..7be08135 160000 --- a/depends/libz +++ b/depends/libz @@ -1 +1 @@ -Subproject commit ec9fd93f2ef4e9fcce09f92d3e8ccf0f6cdda129 +Subproject commit 7be08135d8eb83e273f3e8c894da0b8b5667a2d1 diff --git a/manifest/raspbian-armhf.manifest b/manifest/raspbian-armhf.manifest new file mode 100644 index 00000000..770652bd --- /dev/null +++ b/manifest/raspbian-armhf.manifest @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/msbuild.proj b/msbuild.proj index 8c756b22..2c562190 100644 --- a/msbuild.proj +++ b/msbuild.proj @@ -63,8 +63,9 @@ -Wall -Wno-unknown-pragmas -Idepends/kodi-addon-dev-kit/kodi -Idepends/libcurl-nossl/linux-armel/include/curl -Idepends/libuuid/linux-armel/include -Idepends/libhdhomerun -Idepends/sqlite -Itmp/version -Wall -Wno-unknown-pragmas -Idepends/kodi-addon-dev-kit/kodi -Idepends/libcurl-nossl/linux-armhf/include/curl -Idepends/libuuid/linux-armhf/include -Idepends/libhdhomerun -Idepends/sqlite -Itmp/version -Wall -Wno-unknown-pragmas -Idepends/kodi-addon-dev-kit/kodi -Idepends/libcurl-nossl/linux-aarch64/include/curl -Idepends/libuuid/linux-aarch64/include -Idepends/libhdhomerun -Idepends/sqlite -Itmp/version + -Wall -Wno-unknown-pragmas -Idepends/kodi-addon-dev-kit/kodi -Idepends/libcurl-nossl/raspbian-armhf/include/curl -Idepends/libuuid/raspbian-armhf/include -Idepends/libhdhomerun -Idepends/sqlite -Itmp/version -fPIC - -fPIC -std=c++14 + -fPIC -std=c++11 $([System.IO.File]::ReadAllText(tmp\version\version.txt)) @@ -208,6 +209,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -226,6 +253,7 @@ out\zuki.pvr.hdhomerundvr-linux-armel-$(KodiBaseline)-$(PackageVersion).zip out\zuki.pvr.hdhomerundvr-linux-armhf-$(KodiBaseline)-$(PackageVersion).zip out\zuki.pvr.hdhomerundvr-linux-aarch64-$(KodiBaseline)-$(PackageVersion).zip + out\zuki.pvr.hdhomerundvr-raspbian-armhf-$(KodiBaseline)-$(PackageVersion).zip out\zuki.pvr.hdhomerundvr-android-arm-$(KodiBaseline)-$(PackageVersion).zip out\zuki.pvr.hdhomerundvr-android-aarch64-$(KodiBaseline)-$(PackageVersion).zip out\zuki.pvr.hdhomerundvr-android-x86-$(KodiBaseline)-$(PackageVersion).zip @@ -238,6 +266,7 @@ + diff --git a/pvr.hdhomerundvr.sln b/pvr.hdhomerundvr.sln index 1732cf72..68aba12e 100644 --- a/pvr.hdhomerundvr.sln +++ b/pvr.hdhomerundvr.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio 15 +VisualStudioVersion = 15.0.26403.3 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hdhomerundvr", "src\hdhomerundvr.vcxproj", "{5B5A17F1-4312-4A64-A796-2818CE0906B4}" ProjectSection(ProjectDependencies) = postProject @@ -50,6 +50,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "manifest", "manifest", "{03 manifest\linux-armhf.manifest = manifest\linux-armhf.manifest manifest\linux-i686.manifest = manifest\linux-i686.manifest manifest\linux-x86_64.manifest = manifest\linux-x86_64.manifest + manifest\raspbian-armhf.manifest = manifest\raspbian-armhf.manifest manifest\windows-win32.manifest = manifest\windows-win32.manifest manifest\windows-x64.manifest = manifest\windows-x64.manifest EndProjectSection diff --git a/src/hdhomerundvr.vcxproj b/src/hdhomerundvr.vcxproj index 88a74930..524d02ab 100644 --- a/src/hdhomerundvr.vcxproj +++ b/src/hdhomerundvr.vcxproj @@ -315,23 +315,23 @@ Document - "$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" + "$(DevEnvDir)TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" - "$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" + "$(DevEnvDir)TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" $(SolutionDir)tmp\addon-windows.xml;$(SolutionDir)tmp\addon-linux.xml;$(SolutionDir)tmp\addon-android.xml;%(Outputs) $(SolutionDir)tmp\addon-windows.xml;$(SolutionDir)tmp\addon-linux.xml;$(SolutionDir)tmp\addon-android.xml;%(Outputs) - "$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" + "$(DevEnvDir)TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" - "$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" -"$(CommonProgramFiles)\Microsoft Shared\TextTemplating\14.0\TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" + "$(DevEnvDir)TextTransform.exe" -a !!platform!windx -a !!dllname!zuki.pvr.hdhomerundvr.dll -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-windows.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!linux -a !!dllname!zuki.pvr.hdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)\pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-linux.xml" "%(FullPath)" +"$(DevEnvDir)TextTransform.exe" -a !!platform!android -a !!dllname!libhdhomerundvr.so -a "!!changelogtxt!$(SolutionDir)pvr.hdhomerundvr\changelog.txt" -a "!!versiontxt!$(SolutionDir)tmp\version\version.txt" -out "$(SolutionDir)tmp\addon-android.xml" "%(FullPath)" $(SolutionDir)tmp\addon-windows.xml;$(SolutionDir)tmp\addon-linux.xml;$(SolutionDir)tmp\addon-android.xml;%(Outputs) $(SolutionDir)tmp\addon-windows.xml;$(SolutionDir)tmp\addon-linux.xml;$(SolutionDir)tmp\addon-android.xml;%(Outputs) diff --git a/src/hdhr.cpp b/src/hdhr.cpp index e1f7cc23..6ee6aee1 100644 --- a/src/hdhr.cpp +++ b/src/hdhr.cpp @@ -41,10 +41,8 @@ void enumerate_devices(enumerate_devices_callback callback) { - std::unique_ptr devices; - // Allocate enough heap storage to hold up to 64 enumerated devices on the network - devices = std::make_unique(64); + std::unique_ptr devices(new struct hdhomerun_discover_device_t[64]); // Use the libhdhomerun broadcast discovery mechanism to find all devices on the local network int result = hdhomerun_discover_find_devices_custom_v2(0, HDHOMERUN_DEVICE_TYPE_WILDCARD, diff --git a/src/livestream.cpp b/src/livestream.cpp index 715d56e2..62012a49 100644 --- a/src/livestream.cpp +++ b/src/livestream.cpp @@ -39,7 +39,7 @@ // // buffersize - Size in bytes of the stream ring buffer -livestream::livestream(size_t buffersize) : m_buffersize(buffersize), m_buffer(std::make_unique(buffersize)) +livestream::livestream(size_t buffersize) : m_buffersize(buffersize), m_buffer(new uint8_t[buffersize]) { if(!m_buffer) throw std::bad_alloc(); } @@ -82,7 +82,7 @@ size_t livestream::curl_responseheaders(char const* data, size_t size, size_t co unsigned long long rangestart = 0; // Copy the header data into a local buffer to ensure null termination, which is not guaranteed - std::unique_ptr buffer = std::make_unique(cb + 1); + std::unique_ptr buffer(new char[cb + 1]); memcpy(&buffer[0], data, cb); buffer[cb] = 0; diff --git a/src/pvr.cpp b/src/pvr.cpp index 38e4e72a..08eb391a 100644 --- a/src/pvr.cpp +++ b/src/pvr.cpp @@ -961,7 +961,7 @@ ADDON_STATUS ADDON_Create(void* handle, void* props) if(curl_global_init(CURL_GLOBAL_DEFAULT) != CURLE_OK) throw string_exception("curl_global_init(CURL_GLOBAL_DEFAULT) failed"); // Create the global addoncallbacks instance - g_addon = std::make_unique(handle); + g_addon.reset(new addoncallbacks(handle)); // Throw a banner out to the Kodi log indicating that the add-on is being loaded log_notice(VERSION_PRODUCTNAME_ANSI, " v", VERSION_VERSION3_ANSI, " loading"); @@ -996,7 +996,7 @@ ADDON_STATUS ADDON_Create(void* handle, void* props) if(g_addon->GetSetting("use_direct_tuning", &bvalue)) g_settings.use_direct_tuning = bvalue; // Create the global pvrcallbacks instance - g_pvr = std::make_unique(handle); + g_pvr.reset(new pvrcallbacks(handle)); try {