Skip to content

Commit

Permalink
kodi (RPi4): add patch to enable PiSink
Browse files Browse the repository at this point in the history
Signed-off-by: Matthias Reichl <hias@horus.com>
  • Loading branch information
HiassofT committed Jun 23, 2019
1 parent 818afbc commit 3365ab2
Showing 1 changed file with 206 additions and 0 deletions.
206 changes: 206 additions & 0 deletions projects/RPi/devices/RPi4/patches/kodi/kodi-002-add-pisink.patch
@@ -0,0 +1,206 @@
From 8f0d283542fa8c55f2a9cdd520271b0b471e3393 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 10 Jun 2019 22:07:55 +0100
Subject: [PATCH] RBP: add PiSink

---
xbmc/cores/AudioEngine/CMakeLists.txt | 3 +++
xbmc/platform/linux/CMakeLists.txt | 10 +++++-----
xbmc/platform/linux/RBP.cpp | 24 ++++++++++++------------
xbmc/platform/linux/RBP.h | 22 +++++++++++-----------
xbmc/windowing/gbm/WinSystemGbm.cpp | 2 ++
5 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/xbmc/cores/AudioEngine/CMakeLists.txt b/xbmc/cores/AudioEngine/CMakeLists.txt
index 060c6a960d..e5b80cf54a 100644
--- a/xbmc/cores/AudioEngine/CMakeLists.txt
+++ b/xbmc/cores/AudioEngine/CMakeLists.txt
@@ -101,6 +101,9 @@ if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
Sinks/AESinkPi.h)
endif()

+ list(APPEND SOURCES Sinks/AESinkPi.cpp)
+ list(APPEND HEADERS Sinks/AESinkPi.h)
+
if(CORE_SYSTEM_NAME STREQUAL osx)
list(APPEND SOURCES Sinks/AESinkDARWINOSX.cpp
Sinks/osx/AEDeviceEnumerationOSX.cpp
diff --git a/xbmc/platform/linux/CMakeLists.txt b/xbmc/platform/linux/CMakeLists.txt
index 88076c3d5a..16cdd478be 100644
--- a/xbmc/platform/linux/CMakeLists.txt
+++ b/xbmc/platform/linux/CMakeLists.txt
@@ -39,7 +39,7 @@ if(DBUS_FOUND)
DBusUtil.h)
endif()

-if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
+#if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
list(APPEND SOURCES RBP.cpp
OMXClock.cpp
OMXCore.cpp)
@@ -48,10 +48,10 @@ if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
DllOMX.h
OMXClock.h
OMXCore.h)
-else()
- list(APPEND SOURCES RBP.cpp)
- list(APPEND HEADERS RBP.h)
-endif()
+#else()
+# list(APPEND SOURCES RBP.cpp)
+# list(APPEND HEADERS RBP.h)
+#endif()

if(HAVE_SSE4_1)
add_subdirectory(sse4)
diff --git a/xbmc/platform/linux/RBP.cpp b/xbmc/platform/linux/RBP.cpp
index 6c045e9674..9ff4ed4e6f 100644
--- a/xbmc/platform/linux/RBP.cpp
+++ b/xbmc/platform/linux/RBP.cpp
@@ -68,13 +68,13 @@ typedef int vc_image_t_size_check[(sizeof(VC_IMAGE_T) == 64) * 2 - 1];
CRBP::CRBP()
{
m_initialized = false;
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
m_omx_initialized = false;
-#endif
+//#endif
m_DllBcmHost = new DllBcmHost();
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
m_OMX = new COMXCore();
-#endif
+//#endif
m_display = DISPMANX_NO_HANDLE;
m_mb = mbox_open();
vcsm_init();
@@ -103,11 +103,11 @@ bool CRBP::Initialize()

m_DllBcmHost->bcm_host_init();

-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
m_omx_initialized = m_OMX->Initialize();
if(!m_omx_initialized)
return false;
-#endif
+//#endif

char response[80] = "";
m_arm_mem = 0;
@@ -278,13 +278,13 @@ uint32_t CRBP::LastVsync()

void CRBP::Deinitialize()
{
-#ifdef TARGET_RASPBERRY_PI
- if (m_omx_image_init)
- g_OMXImage.Deinitialize();
+//#ifdef TARGET_RASPBERRY_PI
+// if (m_omx_image_init)
+// g_OMXImage.Deinitialize();

if(m_omx_initialized)
m_OMX->Deinitialize();
-#endif
+//#endif

m_DllBcmHost->bcm_host_deinit();

@@ -295,9 +295,9 @@ void CRBP::Deinitialize()
m_omx_image_init = false;
#endif
m_initialized = false;
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
m_omx_initialized = false;
-#endif
+//#endif
if (m_mb)
mbox_close(m_mb);
m_mb = 0;
diff --git a/xbmc/platform/linux/RBP.h b/xbmc/platform/linux/RBP.h
index 63e02a1826..d3f46d34a1 100644
--- a/xbmc/platform/linux/RBP.h
+++ b/xbmc/platform/linux/RBP.h
@@ -19,9 +19,9 @@
#endif

#include "DllBCM.h"
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
#include "OMXCore.h"
-#endif
+//#endif
#include "xbmc/utils/CPUInfo.h"
#include "threads/CriticalSection.h"
#include "threads/Event.h"
@@ -97,9 +97,9 @@ public:
int GetGUIResolutionLimit() { return m_gui_resolution_limit; }
// stride can be null for packed output
unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true);
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
DllOMX *GetDllOMX() { return m_OMX ? m_OMX->GetDll() : NULL; }
-#endif
+//#endif
uint32_t LastVsync(int64_t &time);
uint32_t LastVsync();
uint32_t WaitVsync(uint32_t target = ~0U);
@@ -110,26 +110,26 @@ public:
private:
DllBcmHost *m_DllBcmHost;
bool m_initialized;
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
bool m_omx_initialized;
- bool m_omx_image_init;
-#endif
+ //bool m_omx_image_init;
+//#endif
int m_arm_mem;
int m_gpu_mem;
int m_gui_resolution_limit;
bool m_codec_mpg2_enabled;
bool m_codec_wvc1_enabled;
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
COMXCore *m_OMX;
-#endif
+//#endif
DISPMANX_DISPLAY_HANDLE_T m_display;
CCriticalSection m_vsync_lock;
XbmcThreads::ConditionVariable m_vsync_cond;
uint32_t m_vsync_count;
int64_t m_vsync_time;
-#ifdef TARGET_RASPBERRY_PI
+//#ifdef TARGET_RASPBERRY_PI
class DllLibOMXCore;
-#endif
+//#endif
CCriticalSection m_critSection;

int m_mb;
diff --git a/xbmc/windowing/gbm/WinSystemGbm.cpp b/xbmc/windowing/gbm/WinSystemGbm.cpp
index 9ad1f2daf1..418e0cf8b1 100644
--- a/xbmc/windowing/gbm/WinSystemGbm.cpp
+++ b/xbmc/windowing/gbm/WinSystemGbm.cpp
@@ -25,6 +25,7 @@
#include "DRMLegacy.h"
#include "OffScreenModeSetting.h"
#include "messaging/ApplicationMessenger.h"
+#include "cores/AudioEngine/Sinks/AESinkPi.h"

using namespace KODI::WINDOWING::GBM;

@@ -33,6 +34,7 @@ CWinSystemGbm::CWinSystemGbm() :
m_GBM(new CGBMUtils),
m_libinput(new CLibInputHandler)
{
+ CAESinkPi::Register();
OPTIONALS::ALSARegister();
OPTIONALS::PulseAudioRegister();

--
2.20.1

0 comments on commit 3365ab2

Please sign in to comment.