Merge pull request #98 from lrusak/kodi-17

Kodi 17 (redo)
This commit is contained in:
MilhouseVH 2016-04-18 15:25:02 +01:00
commit 1090f0d882
101 changed files with 1138 additions and 107804 deletions

View File

@ -2,8 +2,8 @@
LIBREELEC_VERSION="devel"
# OS_VERSION: OS Version
OS_VERSION="7.0"
OS_VERSION="8.0"
# ADDON_VERSION: Addon version
ADDON_VERSION="7.0"
ADDON_VERSION="8.0"

View File

@ -20,13 +20,13 @@
# Mediacenter to use (kodi / no)
MEDIACENTER="kodi"
# Skins to install (Confluence)
# Skins to install (Estuary)
# Space separated list is supported,
# e.g. SKINS="Confluence"
SKINS="Confluence"
# e.g. SKINS="Estuary"
SKINS="Estuary"
# Default Skin (Confluence)
SKIN_DEFAULT="Confluence"
# Default Skin (Estuary)
SKIN_DEFAULT="Estuary"
# install extra subtitle Fonts for KODI (yes / no)
KODI_EXTRA_FONTS="yes"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="asplib"
PKG_VERSION="2fac1bf"
PKG_VERSION="da66f51"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -1,20 +1,21 @@
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2016-01-12 22:24:43.000000000 +0100
+++ b/CMakeLists.txt 2016-01-12 22:47:16.624139358 +0100
@@ -1,64 +1,17 @@
--- a/CMakeLists.txt 2016-03-09 15:16:52.000000000 -0800
+++ b/CMakeLists.txt 2016-03-30 22:45:01.502582518 -0700
@@ -1,46 +1,15 @@
project(asplib)
cmake_minimum_required(VERSION 2.6)
-enable_language(CXX)
-
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR})
-
-include(UseMultiArch.cmake)
-include(cmake/UseMultiArch.cmake)
include(cmake/asplib_helpers.cmake)
set(asplib_NAME asplib)
set(asplib_DESCRIPTION "asplib (Achim's Signal Processing LIBrary), is a small and lightweight C++ library for digital signal processing.")
-set(asplib_VERSION_MAJOR ${APP_VERSION_MAJOR})
-set(asplib_VERSION_MINOR ${APP_VERSION_MINOR})
-set(asplib_VERSION_MAJOR 0)
-set(asplib_VERSION_MINOR 2)
-set(asplib_VERSION_PATCH 0)
-
-if(NOT WIN32)
@ -27,111 +28,65 @@ diff -Naur a/CMakeLists.txt b/CMakeLists.txt
-
-if(CMAKE_SYSTEM_NAME MATCHES "Windows")
- set(CMAKE_CXX_FLAGS "-DTARGET_WINDOWS")
- # Enable the orginization of projects with folders
- set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-endif()
-
-#set(asplib_INCLUDE_DIRS ${TINYXML_INCLUDE_DIR} "${CMAKE_INSTALL_PREFIX}/include/kodi")
-#set(asplib_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} ${TINYXML_LIBRARIES})
-
-if (NOT WIN32)
- add_definitions(-fPIC -g -O2)
-endif()
-
-include_directories(${PROJECT_SOURCE_DIR}
- ${PROJECT_SOURCE_DIR}/Biquads)
-set(asplib_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}
- ${PROJECT_SOURCE_DIR}/Biquads
- ${CMAKE_INSTALL_PREFIX}/include/asplib)
-
-include_directories(${asplib_INCLUDE_DIRS})
-set(SOURCES asplib_utils/computeDeviceInfo/cpuInfo.cpp
- Biquads/Biquad_Native/asplib_Biquad_Native.cpp
+set(SOURCES Biquads/Biquad_Native/asplib_Biquad_Native.cpp
set(SOURCES Biquads/Biquad_Native/asplib_Biquad_Native.cpp
Biquads/apslib_BiquadFactory.cpp)
-
+
set(HEADERS interfaces/asplib_IBaseBiquad.h
Biquads/apslib_BiquadFactory.h
Biquads/Biquad_Native/asplib_Biquad_Native.h
@@ -54,35 +23,13 @@
asplib_utils/os/linux/linux_definitions.h
asplib_utils/os/raspberry_pi/raspberry_pi_definitions.h
asplib_utils/os/windows/windows_definitions.h)
-
-asplib_source_group("${SOURCES}")
-asplib_source_group("${HEADERS}")
-set(HEADERS interfaces/asplib_IBaseBiquad.h
- asplib_utils/constants_typedefs/asplib_constants.h
- asplib_utils/constants_typedefs/asplib_typedefs.h
- asplib_utils/os/asplib_base_os.h
- asplib_utils/os/windows/windows_definitions.h
- asplib_utils/os/linux/linux_definitions.h
- asplib_utils/computeDeviceInfo/cpuInfo_types.h
- asplib_utils/computeDeviceInfo/cpuInfo.h
- Biquads/apslib_BiquadFactory.h
- Biquads/Biquad_Native/asplib_Biquad_Native.h)
-
-
-#include_directories(${TINYXML_INCLUDE_DIR} ${KODI_INCLUDE_DIR})
-
-add_library(asplib ${SOURCES} ${PLAT_SOURCES})
-add_library(asplib ${SOURCES} ${HEADERS})
-target_link_libraries(asplib ${asplib_LIBRARIES})
-#set_target_properties(asplib PROPERTIES VERSION ${asplib_VERSION_MAJOR}.${asplib_VERSION_MINOR}.${asplib_VERSION_PATCH}
-# SOVERSION ${asplib_VERSION_MAJOR}.0)
+add_library(asplib STATIC ${SOURCES})
-set_target_properties(asplib PROPERTIES VERSION ${asplib_VERSION_MAJOR}.${asplib_VERSION_MINOR}.${asplib_VERSION_PATCH}
- SOVERSION ${asplib_VERSION_MAJOR}.0)
+asplib_install_with_folder("${HEADERS}" ${CMAKE_INSTALL_PREFIX}/include/asplib)
+add_library(asplib STATIC ${SOURCES} ${HEADERS})
-install(TARGETS asplib DESTINATION ${CMAKE_INSTALL_LIBDIR})
+include_directories(${PROJECT_SOURCE_DIR}
+ ${PROJECT_SOURCE_DIR}/Biquads)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/interfaces/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/asplib/interfaces
FILES_MATCHING PATTERN "*.h")
@@ -66,8 +19,6 @@
FILES_MATCHING PATTERN "*.h")
install(DIRECTORY ${PROJECT_SOURCE_DIR}/asplib_utils/os/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/asplib/asplib_utils/os/
FILES_MATCHING PATTERN "*.h")
-install(DIRECTORY ${PROJECT_SOURCE_DIR}/asplib_utils/os/windows/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/asplib/asplib_utils/os/windows/
- FILES_MATCHING PATTERN "*.h")
install(DIRECTORY ${PROJECT_SOURCE_DIR}/asplib_utils/os/linux/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/asplib/asplib_utils/os/linux/
FILES_MATCHING PATTERN "*.h")
install(DIRECTORY ${PROJECT_SOURCE_DIR}/asplib_utils/computeDeviceInfo/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/asplib/asplib_utils/computeDeviceInfo/
@@ -77,54 +28,4 @@
install(DIRECTORY ${PROJECT_SOURCE_DIR}/Biquads/Biquad_Native/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/asplib/Biquads/Biquad_Native/
FILES_MATCHING PATTERN "*.h")
-
-# install(FILES interfaces/asplib_IBaseBiquad.h
- # asplib_utils/constants_typedefs/asplib_constants.h
- # asplib_utils/constants_typedefs/asplib_typedefs.h
-
- # DESTINATION include/asplib/asplib_utils/constants_typedefs/)
-
- # asplib_utils/os/asplib_base_os.h
- # asplib_utils/os/windows/windows_definitions.h
- # asplib_utils/os/linux/linux_definitions.h
- # utils/computeDeviceInfo/cpuInfo_types.h
- # utils/computeDeviceInfo/cpuInfo.h
- # Biquads/apslib_BiquadFactory.h
- # Biquads/Biquad_Native/asplib_Biquad_Native.h
- # )
-
-# install(FILES interfaces/asplib_IBaseBiquad.h
- # DESTINATION include/asplib/interfaces)
-# install(FILES constants_typedefs/asplib_constants.h
- # constants_typedefs/asplib_typedefs.h
- # DESTINATION include/asplib/constants_typedefs)
-# install(FILES utils/computeDeviceInfo/cpuInfo_types.h
- # utils/computeDeviceInfo/cpuInfo.h
- # DESTINATION include/asplib/utils)
-# install(FILES Biquads/apslib_BiquadFactory.h
- # Biquads/Biquad_Native/asplib_Biquad_Native.h
- # DESTINATION include/asplib/Biquads)
+install(TARGETS asplib DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
asplib_install_with_folder("${HEADERS}" ${CMAKE_INSTALL_PREFIX}/include/asplib)
-
-#install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/asplib)
-
-#IF(NOT WIN32)
-IF(NOT WIN32)
- # Pkgconfig
- #include(PkgConfigHandler.cmake)
- #configure_pc_file(kodiutilities kodiutilities.pc.in
- # kodiutilities.pc
- # ${CMAKE_INSTALL_PREFIX}
- # ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
- # ${CMAKE_INSTALL_PREFIX}/include)
- include(cmake/PkgConfigHandler.cmake)
- configure_pc_file(asplib asplib.pc.in
- asplib.pc
- ${CMAKE_INSTALL_PREFIX}
- ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
- ${CMAKE_INSTALL_PREFIX}/include)
-
-# install(FILES ${CMAKE_BINARY_DIR}/kodiutilities.pc
-# DESTINATION ${CMAKE_INSTALL_LIBDIR_NOARCH}/pkgconfig)
-#ENDIF(NOT WIN32)
- install(FILES ${CMAKE_BINARY_DIR}/asplib.pc
- DESTINATION ${CMAKE_INSTALL_LIBDIR_NOARCH}/pkgconfig)
-ENDIF(NOT WIN32)
-
-# config mode
-#configure_file (kodiutilities-config.cmake.in
-# kodiutilities-config.cmake @ONLY)
-#install(FILES ${CMAKE_BINARY_DIR}/kodiutilities-config.cmake
-# DESTINATION ${CMAKE_INSTALL_LIBDIR_NOARCH}/kodiutilities)
-
-# Quell warnings with in-tree builds
-#set(KODI_BUILD_DIR ${KODI_BUILD_DIR})
+install(TARGETS asplib DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
-configure_file(asplib-config.cmake.in
- asplib-config.cmake @ONLY)
-install(FILES ${CMAKE_BINARY_DIR}/asplib-config.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR_NOARCH}/asplib)

View File

@ -17,14 +17,13 @@
################################################################################
PKG_NAME="libcec"
PKG_VERSION="3.0.1"
PKG_VERSION="6d68d21"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://libcec.pulse-eight.com/"
PKG_URL="https://github.com/Pulse-Eight/libcec/archive/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_SOURCE_DIR="$PKG_NAME-$PKG_NAME-$PKG_VERSION"
PKG_DEPENDS_TARGET="toolchain systemd lockdev platform"
PKG_URL="https://github.com/Pulse-Eight/libcec/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain systemd lockdev p8-platform"
PKG_PRIORITY="optional"
PKG_SECTION="system"
PKG_SHORTDESC="libCEC is an open-source dual licensed library designed for communicating with the Pulse-Eight USB - CEC Adaptor"

View File

@ -820,13 +820,13 @@ index 828cdb2..8b47795 100644
--- a/src/libcec/cmake/CheckPlatformSupport.cmake
+++ b/src/libcec/cmake/CheckPlatformSupport.cmake
@@ -8,6 +8,7 @@
# HAVE_RANDR 1 if xrandr is supported
# HAVE_LIBUDEV 1 if udev is supported
# HAVE_RPI_API 1 if Raspberry Pi is supported
+# HAVE_IMX_API 1 if i.MX is supported
# HAVE_TDA995X_API 1 if TDA995X is supported
# HAVE_EXYNOS_API 1 if Exynos is supported
# HAVE_P8_USB_DETECT 1 if Pulse-Eight devices can be auto-detected
# HAVE_RANDR 1 if xrandr is supported
# HAVE_LIBUDEV 1 if udev is supported
# HAVE_RPI_API 1 if Raspberry Pi is supported
+# HAVE_IMX_API 1 if i.MX is supported
# HAVE_TDA995X_API 1 if TDA995X is supported
# HAVE_EXYNOS_API 1 if Exynos is supported
# HAVE_P8_USB_DETECT 1 if Pulse-Eight devices can be auto-detected
@@ -87,6 +88,15 @@ else()
list(APPEND CEC_SOURCES ${CEC_SOURCES_ADAPTER_RPI})
endif()

View File

@ -1,859 +0,0 @@
From ec982e9800ae312972d306b67779215a2add6cde Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 24 Oct 2014 13:45:21 +0100
Subject: [PATCH 1/6] Make released key polling wait for exact time until key
gets released
---
src/libcec/CECClient.cpp | 16 ++++++++++++++--
src/libcec/CECClient.h | 2 +-
src/libcec/CECProcessor.cpp | 8 +++++---
src/libcec/LibCEC.cpp | 10 ++++++++--
src/libcec/LibCEC.h | 4 +++-
5 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/src/libcec/CECClient.cpp b/src/libcec/CECClient.cpp
index 35c2d3e..e307c0e 100644
--- a/src/libcec/CECClient.cpp
+++ b/src/libcec/CECClient.cpp
@@ -1067,7 +1067,7 @@ void CCECClient::SetCurrentButton(const cec_user_control_code iButtonCode)
AddKey(key);
}
-void CCECClient::CheckKeypressTimeout(void)
+uint16_t CCECClient::CheckKeypressTimeout(void)
{
cec_keypress key;
@@ -1091,12 +1091,24 @@ void CCECClient::CheckKeypressTimeout(void)
}
else
{
- return;
+ // time when this keypress will be released and we'd like to be called again
+ unsigned int timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
+ if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton == comboKey && iTimeoutMs > 0)
+ timeout = iTimeoutMs - (iNow - m_buttontime) + 1;
+ else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton != comboKey)
+ timeout = CEC_BUTTON_TIMEOUT - (iNow - m_buttontime) + 1;
+ if (timeout > CEC_PROCESSOR_SIGNAL_WAIT_TIME)
+ {
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "Unexpected timeout: %d (%.3f %.3f %.3f) k:%02x", timeout, iNow*1e-3, m_buttontime*1e-3, CEC_BUTTON_TIMEOUT*1e-3, m_iCurrentButton);
+ timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
+ }
+ return timeout;
}
}
LIB_CEC->AddLog(CEC_LOG_DEBUG, "key auto-released: %s (%1x)", ToString(key.keycode), key.keycode);
QueueAddKey(key);
+ return CEC_PROCESSOR_SIGNAL_WAIT_TIME;
}
bool CCECClient::EnableCallbacks(void *cbParam, ICECCallbacks *callbacks)
diff --git a/src/libcec/CECClient.h b/src/libcec/CECClient.h
index 12f8a3b..c9ce5e3 100644
--- a/src/libcec/CECClient.h
+++ b/src/libcec/CECClient.h
@@ -272,7 +272,7 @@ namespace CEC
virtual void AddKey(bool bSendComboKey = false);
virtual void AddKey(const cec_keypress &key);
virtual void SetCurrentButton(const cec_user_control_code iButtonCode);
- virtual void CheckKeypressTimeout(void);
+ virtual uint16_t CheckKeypressTimeout(void);
virtual void SourceActivated(const cec_logical_address logicalAddress);
virtual void SourceDeactivated(const cec_logical_address logicalAddress);
diff --git a/src/libcec/CECProcessor.cpp b/src/libcec/CECProcessor.cpp
index 99f71aa..604b950 100644
--- a/src/libcec/CECProcessor.cpp
+++ b/src/libcec/CECProcessor.cpp
@@ -52,7 +52,6 @@
using namespace CEC;
using namespace PLATFORM;
-#define CEC_PROCESSOR_SIGNAL_WAIT_TIME 1000
#define ACTIVE_SOURCE_CHECK_INTERVAL 500
#define TV_PRESENT_CHECK_INTERVAL 30000
@@ -260,6 +259,7 @@ bool CCECProcessor::OnCommandReceived(const cec_command &command)
void *CCECProcessor::Process(void)
{
+ uint16_t timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
m_libcec->AddLog(CEC_LOG_DEBUG, "processor thread started");
if (!m_connCheck)
@@ -274,13 +274,13 @@ void *CCECProcessor::Process(void)
while (!IsStopped() && m_communication->IsOpen())
{
// wait for a new incoming command, and process it
- if (m_inBuffer.Pop(command, CEC_PROCESSOR_SIGNAL_WAIT_TIME))
+ if (m_inBuffer.Pop(command, timeout))
ProcessCommand(command);
if (CECInitialised() && !IsStopped())
{
// check clients for keypress timeouts
- m_libcec->CheckKeypressTimeout();
+ timeout = m_libcec->CheckKeypressTimeout();
// check if we need to replace handlers
ReplaceHandlers();
@@ -311,6 +311,8 @@ void *CCECProcessor::Process(void)
tvPresentCheck.Init(TV_PRESENT_CHECK_INTERVAL);
}
}
+ else
+ timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
}
return NULL;
diff --git a/src/libcec/LibCEC.cpp b/src/libcec/LibCEC.cpp
index af36b79..5ccb8dd 100644
--- a/src/libcec/LibCEC.cpp
+++ b/src/libcec/LibCEC.cpp
@@ -361,11 +361,17 @@ bool CLibCEC::IsValidPhysicalAddress(uint16_t iPhysicalAddress)
iPhysicalAddress <= CEC_MAX_PHYSICAL_ADDRESS;
}
-void CLibCEC::CheckKeypressTimeout(void)
+uint16_t CLibCEC::CheckKeypressTimeout(void)
{
+ uint16_t timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
// check all clients
for (std::vector<CECClientPtr>::iterator it = m_clients.begin(); it != m_clients.end(); it++)
- (*it)->CheckKeypressTimeout();
+ {
+ uint16_t t = (*it)->CheckKeypressTimeout();
+ if (t < timeout)
+ timeout = t;
+ }
+ return timeout;
}
void CLibCEC::AddLog(const cec_log_level level, const char *strFormat, ...)
diff --git a/src/libcec/LibCEC.h b/src/libcec/LibCEC.h
index 6d9a229..d9d1e7b 100644
--- a/src/libcec/LibCEC.h
+++ b/src/libcec/LibCEC.h
@@ -39,6 +39,8 @@
#include "CECTypeUtils.h"
#include <memory>
+#define CEC_PROCESSOR_SIGNAL_WAIT_TIME 1000
+
namespace CEC
{
class CAdapterCommunication;
@@ -125,7 +127,7 @@ namespace CEC
void AddLog(const cec_log_level level, const char *strFormat, ...);
void AddCommand(const cec_command &command);
- void CheckKeypressTimeout(void);
+ uint16_t CheckKeypressTimeout(void);
void Alert(const libcec_alert type, const libcec_parameter &param);
static bool IsValidPhysicalAddress(uint16_t iPhysicalAddress);
--
1.9.1
From 41f0f3ec9ac136da3565c96fd5a7075499f3938d Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 24 Oct 2014 13:51:34 +0100
Subject: [PATCH 2/6] Keep track of time since initial button press and last
button update
---
src/libcec/CECClient.cpp | 44 +++++++++++++++++++++++++++-----------------
src/libcec/CECClient.h | 3 ++-
2 files changed, 29 insertions(+), 18 deletions(-)
diff --git a/src/libcec/CECClient.cpp b/src/libcec/CECClient.cpp
index e307c0e..e7935b9 100644
--- a/src/libcec/CECClient.cpp
+++ b/src/libcec/CECClient.cpp
@@ -54,7 +54,8 @@ CCECClient::CCECClient(CCECProcessor *processor, const libcec_configuration &con
m_bInitialised(false),
m_bRegistered(false),
m_iCurrentButton(CEC_USER_CONTROL_CODE_UNKNOWN),
- m_buttontime(0),
+ m_initialButtontime(0),
+ m_updateButtontime(0),
m_iPreventForwardingPowerOffCommand(0),
m_iLastKeypressTime(0)
{
@@ -981,9 +982,10 @@ void CCECClient::AddKey(bool bSendComboKey /* = false */)
CLockObject lock(m_mutex);
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN)
{
- key.duration = (unsigned int) (GetTimeMs() - m_buttontime);
+ unsigned int duration = (unsigned int) (GetTimeMs() - m_updateButtontime);
+ key.duration = (unsigned int) (GetTimeMs() - m_initialButtontime);
- if (key.duration > m_configuration.iComboKeyTimeoutMs ||
+ if (duration > m_configuration.iComboKeyTimeoutMs ||
m_configuration.iComboKeyTimeoutMs == 0 ||
m_iCurrentButton != m_configuration.comboKey ||
bSendComboKey)
@@ -991,14 +993,15 @@ void CCECClient::AddKey(bool bSendComboKey /* = false */)
key.keycode = m_iCurrentButton;
m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
- m_buttontime = 0;
+ m_initialButtontime = 0;
+ m_updateButtontime = 0;
}
}
}
if (key.keycode != CEC_USER_CONTROL_CODE_UNKNOWN)
{
- LIB_CEC->AddLog(CEC_LOG_DEBUG, "key released: %s (%1x)", ToString(key.keycode), key.keycode);
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "key released: %s (%1x) D:%dms", ToString(key.keycode), key.keycode, key.duration);
QueueAddKey(key);
}
}
@@ -1012,7 +1015,7 @@ void CCECClient::AddKey(const cec_keypress &key)
AddKey();
return;
}
-
+ bool isrepeat = false;
cec_keypress transmitKey(key);
cec_user_control_code comboKey(m_configuration.clientVersion >= LIBCEC_VERSION_TO_UINT(2, 0, 5) ?
m_configuration.comboKey : CEC_USER_CONTROL_CODE_STOP);
@@ -1035,22 +1038,27 @@ void CCECClient::AddKey(const cec_keypress &key)
AddKey(true);
}
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "key pressed: %s (%1x) current(%lx) duration(%d)", ToString(transmitKey.keycode), transmitKey.keycode, m_iCurrentButton, key.duration);
+
if (m_iCurrentButton == key.keycode)
{
- m_buttontime = GetTimeMs();
+ m_updateButtontime = GetTimeMs();
+ isrepeat = true;
}
else
{
- AddKey();
+ if (m_iCurrentButton != transmitKey.keycode)
+ AddKey();
if (key.duration == 0)
{
m_iCurrentButton = transmitKey.keycode;
- m_buttontime = m_iCurrentButton == CEC_USER_CONTROL_CODE_UNKNOWN || key.duration > 0 ? 0 : GetTimeMs();
+ m_initialButtontime = m_iCurrentButton == CEC_USER_CONTROL_CODE_UNKNOWN || key.duration > 0 ? 0 : GetTimeMs();
+ m_updateButtontime = m_initialButtontime;
}
}
}
- if (key.keycode != comboKey || key.duration > 0)
+ if (!isrepeat && (key.keycode != comboKey || key.duration > 0))
{
LIB_CEC->AddLog(CEC_LOG_DEBUG, "key pressed: %s (%1x)", ToString(transmitKey.keycode), transmitKey.keycode);
QueueAddKey(transmitKey);
@@ -1074,32 +1082,34 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
{
CLockObject lock(m_mutex);
uint64_t iNow = GetTimeMs();
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s T:%.3f", __FUNCTION__, iNow*1e-3);
cec_user_control_code comboKey(m_configuration.clientVersion >= LIBCEC_VERSION_TO_UINT(2, 0, 5) ?
m_configuration.comboKey : CEC_USER_CONTROL_CODE_STOP);
uint32_t iTimeoutMs(m_configuration.clientVersion >= LIBCEC_VERSION_TO_UINT(2, 0, 5) ?
m_configuration.iComboKeyTimeoutMs : CEC_DEFAULT_COMBO_TIMEOUT_MS);
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
- ((m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_buttontime > iTimeoutMs) ||
- (m_iCurrentButton != comboKey && iNow - m_buttontime > CEC_BUTTON_TIMEOUT)))
+ ((m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_updateButtontime > iTimeoutMs) ||
+ (m_iCurrentButton != comboKey && iNow - m_updateButtontime > CEC_BUTTON_TIMEOUT)))
{
- key.duration = (unsigned int) (iNow - m_buttontime);
+ key.duration = (unsigned int) (iNow - m_initialButtontime);
key.keycode = m_iCurrentButton;
m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
- m_buttontime = 0;
+ m_initialButtontime = 0;
+ m_updateButtontime = 0;
}
else
{
// time when this keypress will be released and we'd like to be called again
unsigned int timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton == comboKey && iTimeoutMs > 0)
- timeout = iTimeoutMs - (iNow - m_buttontime) + 1;
+ timeout = iTimeoutMs - (iNow - m_updateButtontime) + 1;
else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton != comboKey)
- timeout = CEC_BUTTON_TIMEOUT - (iNow - m_buttontime) + 1;
+ timeout = CEC_BUTTON_TIMEOUT - (iNow - m_updateButtontime) + 1;
if (timeout > CEC_PROCESSOR_SIGNAL_WAIT_TIME)
{
- LIB_CEC->AddLog(CEC_LOG_ERROR, "Unexpected timeout: %d (%.3f %.3f %.3f) k:%02x", timeout, iNow*1e-3, m_buttontime*1e-3, CEC_BUTTON_TIMEOUT*1e-3, m_iCurrentButton);
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "Unexpected timeout: %d (%.3f %.3f %.3f) k:%02x", timeout, iNow*1e-3, m_updateButtontime*1e-3, CEC_BUTTON_TIMEOUT*1e-3, m_iCurrentButton);
timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
}
return timeout;
diff --git a/src/libcec/CECClient.h b/src/libcec/CECClient.h
index c9ce5e3..611c68b 100644
--- a/src/libcec/CECClient.h
+++ b/src/libcec/CECClient.h
@@ -404,7 +404,8 @@ namespace CEC
PLATFORM::CMutex m_mutex; /**< mutex for changes to this instance */
PLATFORM::CMutex m_cbMutex; /**< mutex that is held when doing anything with callbacks */
cec_user_control_code m_iCurrentButton; /**< the control code of the button that's currently held down (if any) */
- int64_t m_buttontime; /**< the timestamp when the button was pressed (in seconds since epoch), or 0 if none was pressed. */
+ int64_t m_initialButtontime; /**< the timestamp when the button was initially pressed (in seconds since epoch), or 0 if none was pressed. */
+ int64_t m_updateButtontime; /**< the timestamp when the button was updated (in seconds since epoch), or 0 if none was pressed. */
int64_t m_iPreventForwardingPowerOffCommand; /**< prevent forwarding standby commands until this time */
int64_t m_iLastKeypressTime; /**< last time a key press was sent to the client */
cec_keypress m_lastKeypress; /**< the last key press that was sent to the client */
--
1.9.1
From 273ead6980b69eddf98810eb1eb33d94a7d74fce Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 28 Oct 2014 00:09:18 +0000
Subject: [PATCH 3/6] Support repeating button presses with configurable repeat
rate
---
include/cectypes.h | 6 ++
src/libcec/CECClient.cpp | 100 +++++++++++++++++++----
src/libcec/CECClient.h | 6 +-
src/libcec/implementations/CECCommandHandler.cpp | 2 +-
4 files changed, 96 insertions(+), 18 deletions(-)
diff --git a/include/cectypes.h b/include/cectypes.h
index acff259..8f098ef 100644
--- a/include/cectypes.h
+++ b/include/cectypes.h
@@ -1493,6 +1493,8 @@ struct libcec_configuration
XXX changed meaning in 2.2.0 to not break binary compatibility. next major (3.0) release will fix it in a nicer way */
cec_user_control_code comboKey; /*!< key code that initiates combo keys. defaults to CEC_USER_CONTROL_CODE_F1_BLUE. CEC_USER_CONTROL_CODE_UNKNOWN to disable. added in 2.0.5 */
uint32_t iComboKeyTimeoutMs; /*!< timeout until the combo key is sent as normal keypress */
+ uint32_t iButtonRepeatRateMs; /*!< rate at which buttons autorepeat. 0 means rely on CEC device */
+ uint32_t iButtonReleaseDelayMs;/*!< duration after last update until a button is considered released */
#ifdef __cplusplus
libcec_configuration(void) { Clear(); }
@@ -1527,6 +1529,8 @@ struct libcec_configuration
cecVersion == other.cecVersion &&
adapterType == other.adapterType &&
iDoubleTapTimeout50Ms == other.iDoubleTapTimeout50Ms &&
+ iButtonRepeatRateMs == other.iButtonRepeatRateMs &&
+ iButtonReleaseDelayMs == other.iButtonReleaseDelayMs &&
(other.clientVersion <= LIBCEC_VERSION_TO_UINT(2, 0, 4) || comboKey == other.comboKey) &&
(other.clientVersion <= LIBCEC_VERSION_TO_UINT(2, 0, 4) || iComboKeyTimeoutMs == other.iComboKeyTimeoutMs) &&
(other.clientVersion < LIBCEC_VERSION_TO_UINT(2, 1, 0) || bPowerOnScreensaver == other.bPowerOnScreensaver));
@@ -1567,6 +1571,8 @@ struct libcec_configuration
iDoubleTapTimeout50Ms = CEC_DOUBLE_TAP_TIMEOUT_50_MS;
comboKey = CEC_USER_CONTROL_CODE_STOP;
iComboKeyTimeoutMs = CEC_DEFAULT_COMBO_TIMEOUT_MS;
+ iButtonRepeatRateMs = 0;
+ iButtonReleaseDelayMs = CEC_BUTTON_TIMEOUT;
memset(strDeviceName, 0, 13);
deviceTypes.Clear();
diff --git a/src/libcec/CECClient.cpp b/src/libcec/CECClient.cpp
index e7935b9..598628d 100644
--- a/src/libcec/CECClient.cpp
+++ b/src/libcec/CECClient.cpp
@@ -56,6 +56,10 @@ CCECClient::CCECClient(CCECProcessor *processor, const libcec_configuration &con
m_iCurrentButton(CEC_USER_CONTROL_CODE_UNKNOWN),
m_initialButtontime(0),
m_updateButtontime(0),
+ m_repeatButtontime(0),
+ m_releaseButtontime(0),
+ m_pressedButtoncount(0),
+ m_releasedButtoncount(0),
m_iPreventForwardingPowerOffCommand(0),
m_iLastKeypressTime(0)
{
@@ -851,6 +855,9 @@ bool CCECClient::GetCurrentConfiguration(libcec_configuration &configuration)
configuration.bMonitorOnly = m_configuration.bMonitorOnly;
configuration.cecVersion = m_configuration.cecVersion;
configuration.adapterType = m_configuration.adapterType;
+ configuration.iDoubleTapTimeout50Ms = m_configuration.iDoubleTapTimeout50Ms;
+ configuration.iButtonRepeatRateMs = m_configuration.iButtonRepeatRateMs;
+ configuration.iButtonReleaseDelayMs = m_configuration.iButtonReleaseDelayMs;
return true;
}
@@ -894,6 +901,9 @@ bool CCECClient::SetConfiguration(const libcec_configuration &configuration)
m_configuration.cecVersion = configuration.cecVersion;
m_configuration.adapterType = configuration.adapterType;
m_configuration.iDoubleTapTimeout50Ms = configuration.iDoubleTapTimeout50Ms;
+ m_configuration.iButtonRepeatRateMs = configuration.iButtonRepeatRateMs;
+ m_configuration.iButtonReleaseDelayMs = configuration.iButtonReleaseDelayMs;
+
m_configuration.deviceTypes.Add(configuration.deviceTypes[0]);
if (m_configuration.clientVersion >= LIBCEC_VERSION_TO_UINT(2, 0, 5))
@@ -950,6 +960,7 @@ bool CCECClient::SetConfiguration(const libcec_configuration &configuration)
primary->ActivateSource();
}
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: %d:%d:%d", __FUNCTION__, DoubleTapTimeoutMS(), m_configuration.iButtonRepeatRateMs, m_configuration.iButtonReleaseDelayMs);
return true;
}
@@ -973,11 +984,15 @@ void CCECClient::AddCommand(const cec_command &command)
}
}
-void CCECClient::AddKey(bool bSendComboKey /* = false */)
+void CCECClient::AddKey(bool bSendComboKey /* = false */, bool bButtonRelease /* = false */)
{
cec_keypress key;
key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
+ // we ignore button releases when supporting repeating keys
+ if (bButtonRelease && m_configuration.iButtonRepeatRateMs && m_configuration.iButtonReleaseDelayMs)
+ return;
+
{
CLockObject lock(m_mutex);
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN)
@@ -995,6 +1010,10 @@ void CCECClient::AddKey(bool bSendComboKey /* = false */)
m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
m_initialButtontime = 0;
m_updateButtontime = 0;
+ m_repeatButtontime = 0;
+ m_releaseButtontime = 0;
+ m_pressedButtoncount = 0;
+ m_releasedButtoncount = 0;
}
}
}
@@ -1012,6 +1031,7 @@ void CCECClient::AddKey(const cec_keypress &key)
key.keycode < CEC_USER_CONTROL_CODE_SELECT)
{
// send back the previous key if there is one
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "Unexpected key %s (%1x) D:%dms", ToString(key.keycode), key.keycode, key.duration);
AddKey();
return;
}
@@ -1035,7 +1055,10 @@ void CCECClient::AddKey(const cec_keypress &key)
transmitKey.keycode = CEC_USER_CONTROL_CODE_DOT;
// default, send back the previous key
else
+ {
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "Combo key %s (%1x) D%dms:", ToString(key.keycode), key.keycode, key.duration);
AddKey(true);
+ }
}
LIB_CEC->AddLog(CEC_LOG_DEBUG, "key pressed: %s (%1x) current(%lx) duration(%d)", ToString(transmitKey.keycode), transmitKey.keycode, m_iCurrentButton, key.duration);
@@ -1043,17 +1066,44 @@ void CCECClient::AddKey(const cec_keypress &key)
if (m_iCurrentButton == key.keycode)
{
m_updateButtontime = GetTimeMs();
- isrepeat = true;
+ m_releaseButtontime = m_updateButtontime + (m_configuration.iButtonReleaseDelayMs ? m_configuration.iButtonReleaseDelayMs : CEC_BUTTON_TIMEOUT);
+ // want to have seen some updated before considering a repeat
+ if (m_configuration.iButtonRepeatRateMs)
+ {
+ if (!m_repeatButtontime && m_pressedButtoncount > 1)
+ m_repeatButtontime = m_initialButtontime + DoubleTapTimeoutMS();
+ isrepeat = true;
+ }
+ m_pressedButtoncount++;
}
else
{
if (m_iCurrentButton != transmitKey.keycode)
+ {
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "Changed key %s (%1x) D:%dms cur:%lx", ToString(transmitKey.keycode), transmitKey.keycode, transmitKey.duration, m_iCurrentButton);
AddKey();
+ }
if (key.duration == 0)
{
m_iCurrentButton = transmitKey.keycode;
- m_initialButtontime = m_iCurrentButton == CEC_USER_CONTROL_CODE_UNKNOWN || key.duration > 0 ? 0 : GetTimeMs();
- m_updateButtontime = m_initialButtontime;
+ if (m_iCurrentButton == CEC_USER_CONTROL_CODE_UNKNOWN)
+ {
+ m_initialButtontime = 0;
+ m_updateButtontime = 0;
+ m_repeatButtontime = 0;
+ m_releaseButtontime = 0;
+ m_pressedButtoncount = 0;
+ m_releasedButtoncount = 0;
+ }
+ else
+ {
+ m_initialButtontime = GetTimeMs();
+ m_updateButtontime = m_initialButtontime;
+ m_repeatButtontime = 0; // set this on next update
+ m_releaseButtontime = m_initialButtontime + (m_configuration.iButtonReleaseDelayMs ? m_configuration.iButtonReleaseDelayMs : CEC_BUTTON_TIMEOUT);
+ m_pressedButtoncount = 1;
+ m_releasedButtoncount = 0;
+ }
}
}
}
@@ -1072,12 +1122,16 @@ void CCECClient::SetCurrentButton(const cec_user_control_code iButtonCode)
key.duration = 0;
key.keycode = iButtonCode;
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "SetCurrentButton %s (%1x) D:%dms cur:%lx", ToString(key.keycode), key.keycode, key.duration);
AddKey(key);
}
uint16_t CCECClient::CheckKeypressTimeout(void)
{
+ // time when we'd like to be called again
+ unsigned int timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
cec_keypress key;
+ key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
{
CLockObject lock(m_mutex);
@@ -1089,8 +1143,8 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
m_configuration.iComboKeyTimeoutMs : CEC_DEFAULT_COMBO_TIMEOUT_MS);
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
- ((m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_updateButtontime > iTimeoutMs) ||
- (m_iCurrentButton != comboKey && iNow - m_updateButtontime > CEC_BUTTON_TIMEOUT)))
+ ((m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_updateButtontime >= iTimeoutMs) ||
+ (m_iCurrentButton != comboKey && m_releaseButtontime && iNow >= (uint64_t)m_releaseButtontime)))
{
key.duration = (unsigned int) (iNow - m_initialButtontime);
key.keycode = m_iCurrentButton;
@@ -1098,27 +1152,41 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
m_initialButtontime = 0;
m_updateButtontime = 0;
+ m_repeatButtontime = 0;
+ m_releaseButtontime = 0;
+ m_pressedButtoncount = 0;
+ m_releasedButtoncount = 0;
+ }
+ else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
+ (m_iCurrentButton != comboKey && m_repeatButtontime && iNow >= (uint64_t)m_repeatButtontime))
+ {
+ key.duration = 0;
+ key.keycode = m_iCurrentButton;
+ m_repeatButtontime = iNow + m_configuration.iButtonRepeatRateMs;
+ timeout = std::min((uint64_t)timeout, m_repeatButtontime - iNow);
}
else
{
- // time when this keypress will be released and we'd like to be called again
- unsigned int timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton == comboKey && iTimeoutMs > 0)
- timeout = iTimeoutMs - (iNow - m_updateButtontime) + 1;
- else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton != comboKey)
- timeout = CEC_BUTTON_TIMEOUT - (iNow - m_updateButtontime) + 1;
+ timeout = std::min((uint64_t)timeout, m_updateButtontime - iNow + iTimeoutMs);
+ if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton != comboKey && m_releaseButtontime)
+ timeout = std::min((uint64_t)timeout, m_releaseButtontime - iNow);
+ if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton != comboKey && m_repeatButtontime)
+ timeout = std::min((uint64_t)timeout, m_repeatButtontime - iNow);
if (timeout > CEC_PROCESSOR_SIGNAL_WAIT_TIME)
{
- LIB_CEC->AddLog(CEC_LOG_ERROR, "Unexpected timeout: %d (%.3f %.3f %.3f) k:%02x", timeout, iNow*1e-3, m_updateButtontime*1e-3, CEC_BUTTON_TIMEOUT*1e-3, m_iCurrentButton);
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "Unexpected timeout: %d (%.3f %.3f %.3f) k:%02x", timeout, iNow*1e-3, m_updateButtontime*1e-3, m_releaseButtontime*1e-3, m_iCurrentButton);
timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
}
- return timeout;
}
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "key %s: %s (%1x) timeout:%dms (rel:%d,rep:%d,prs:%d,rel:%d)", key.keycode == CEC_USER_CONTROL_CODE_UNKNOWN ? "idle" : key.duration ? "released" : "repeated",
+ ToString(m_iCurrentButton), m_iCurrentButton, timeout, (int)(m_releaseButtontime ? m_releaseButtontime - iNow : 0), (int)(m_repeatButtontime ? m_repeatButtontime - iNow : 0), m_pressedButtoncount, m_releasedButtoncount);
}
- LIB_CEC->AddLog(CEC_LOG_DEBUG, "key auto-released: %s (%1x)", ToString(key.keycode), key.keycode);
- QueueAddKey(key);
- return CEC_PROCESSOR_SIGNAL_WAIT_TIME;
+ if (key.keycode != CEC_USER_CONTROL_CODE_UNKNOWN)
+ QueueAddKey(key);
+
+ return timeout;
}
bool CCECClient::EnableCallbacks(void *cbParam, ICECCallbacks *callbacks)
diff --git a/src/libcec/CECClient.h b/src/libcec/CECClient.h
index 611c68b..adeb5af 100644
--- a/src/libcec/CECClient.h
+++ b/src/libcec/CECClient.h
@@ -269,7 +269,7 @@ namespace CEC
// callbacks
virtual void Alert(const libcec_alert type, const libcec_parameter &param) { QueueAlert(type, param); }
virtual void AddLog(const cec_log_message &message) { QueueAddLog(message); }
- virtual void AddKey(bool bSendComboKey = false);
+ virtual void AddKey(bool bSendComboKey = false, bool bButtonRelease = false);
virtual void AddKey(const cec_keypress &key);
virtual void SetCurrentButton(const cec_user_control_code iButtonCode);
virtual uint16_t CheckKeypressTimeout(void);
@@ -406,6 +406,10 @@ namespace CEC
cec_user_control_code m_iCurrentButton; /**< the control code of the button that's currently held down (if any) */
int64_t m_initialButtontime; /**< the timestamp when the button was initially pressed (in seconds since epoch), or 0 if none was pressed. */
int64_t m_updateButtontime; /**< the timestamp when the button was updated (in seconds since epoch), or 0 if none was pressed. */
+ int64_t m_repeatButtontime; /**< the timestamp when the button will next repeat (in seconds since epoch), or 0 if repeat is disabled. */
+ int64_t m_releaseButtontime; /**< the timestamp when the button will be released (in seconds since epoch), or 0 if none was pressed. */
+ int32_t m_pressedButtoncount; /**< the number of times a button released message has been seen for this press. */
+ int32_t m_releasedButtoncount; /**< the number of times a button pressed message has been seen for this press. */
int64_t m_iPreventForwardingPowerOffCommand; /**< prevent forwarding standby commands until this time */
int64_t m_iLastKeypressTime; /**< last time a key press was sent to the client */
cec_keypress m_lastKeypress; /**< the last key press that was sent to the client */
diff --git a/src/libcec/implementations/CECCommandHandler.cpp b/src/libcec/implementations/CECCommandHandler.cpp
index 6d6244e..d64186f 100644
--- a/src/libcec/implementations/CECCommandHandler.cpp
+++ b/src/libcec/implementations/CECCommandHandler.cpp
@@ -770,7 +770,7 @@ int CCECCommandHandler::HandleUserControlRelease(const cec_command &command)
CECClientPtr client = m_processor->GetClient(command.destination);
if (client)
- client->AddKey();
+ client->AddKey(false, true);
return COMMAND_HANDLED;
}
--
1.9.1
From 3336d0827f7fd159430f3431642b07090c06c869 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 28 Oct 2014 01:21:35 +0000
Subject: [PATCH 4/6] Skip double press removal. It is handled through other
means.
---
src/libcec/CECClient.cpp | 18 +-----------------
src/libcec/CECClient.h | 2 --
2 files changed, 1 insertion(+), 19 deletions(-)
diff --git a/src/libcec/CECClient.cpp b/src/libcec/CECClient.cpp
index 598628d..dccd874 100644
--- a/src/libcec/CECClient.cpp
+++ b/src/libcec/CECClient.cpp
@@ -60,11 +60,8 @@ CCECClient::CCECClient(CCECProcessor *processor, const libcec_configuration &con
m_releaseButtontime(0),
m_pressedButtoncount(0),
m_releasedButtoncount(0),
- m_iPreventForwardingPowerOffCommand(0),
- m_iLastKeypressTime(0)
+ m_iPreventForwardingPowerOffCommand(0)
{
- m_lastKeypress.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
- m_lastKeypress.duration = 0;
m_configuration.Clear();
// set the initial configuration
SetConfiguration(configuration);
@@ -1647,20 +1644,7 @@ void CCECClient::CallbackAddKey(const cec_keypress &key)
{
CLockObject lock(m_cbMutex);
if (m_configuration.callbacks && m_configuration.callbacks->CBCecKeyPress)
- {
- // prevent double taps
- int64_t now = GetTimeMs();
- if (m_lastKeypress.keycode != key.keycode ||
- key.duration > 0 ||
- now - m_iLastKeypressTime >= DoubleTapTimeoutMS())
- {
- // no double tap
- if (key.duration == 0)
- m_iLastKeypressTime = now;
- m_lastKeypress = key;
m_configuration.callbacks->CBCecKeyPress(m_configuration.callbackParam, key);
- }
- }
}
void CCECClient::CallbackAddLog(const cec_log_message &message)
diff --git a/src/libcec/CECClient.h b/src/libcec/CECClient.h
index adeb5af..43a713b 100644
--- a/src/libcec/CECClient.h
+++ b/src/libcec/CECClient.h
@@ -411,8 +411,6 @@ namespace CEC
int32_t m_pressedButtoncount; /**< the number of times a button released message has been seen for this press. */
int32_t m_releasedButtoncount; /**< the number of times a button pressed message has been seen for this press. */
int64_t m_iPreventForwardingPowerOffCommand; /**< prevent forwarding standby commands until this time */
- int64_t m_iLastKeypressTime; /**< last time a key press was sent to the client */
- cec_keypress m_lastKeypress; /**< the last key press that was sent to the client */
PLATFORM::SyncedBuffer<CCallbackWrap*> m_callbackCalls;
};
}
--
1.9.1
From 0dd0234f620a546bfa843172648383f83d88088c Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 3 Nov 2014 23:28:04 +0000
Subject: [PATCH 5/6] Pass through duration on all button repeats
---
src/libcec/CECClient.cpp | 34 ++++++++++++++++++++++++----------
1 file changed, 24 insertions(+), 10 deletions(-)
diff --git a/src/libcec/CECClient.cpp b/src/libcec/CECClient.cpp
index dccd874..1946148 100644
--- a/src/libcec/CECClient.cpp
+++ b/src/libcec/CECClient.cpp
@@ -986,10 +986,6 @@ void CCECClient::AddKey(bool bSendComboKey /* = false */, bool bButtonRelease /*
cec_keypress key;
key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
- // we ignore button releases when supporting repeating keys
- if (bButtonRelease && m_configuration.iButtonRepeatRateMs && m_configuration.iButtonReleaseDelayMs)
- return;
-
{
CLockObject lock(m_mutex);
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN)
@@ -1015,6 +1011,10 @@ void CCECClient::AddKey(bool bSendComboKey /* = false */, bool bButtonRelease /*
}
}
+ // we don't forward releases when supporting repeating keys
+ if (bButtonRelease && m_configuration.iButtonRepeatRateMs)
+ return;
+
if (key.keycode != CEC_USER_CONTROL_CODE_UNKNOWN)
{
LIB_CEC->AddLog(CEC_LOG_DEBUG, "key released: %s (%1x) D:%dms", ToString(key.keycode), key.keycode, key.duration);
@@ -1107,7 +1107,7 @@ void CCECClient::AddKey(const cec_keypress &key)
if (!isrepeat && (key.keycode != comboKey || key.duration > 0))
{
- LIB_CEC->AddLog(CEC_LOG_DEBUG, "key pressed: %s (%1x)", ToString(transmitKey.keycode), transmitKey.keycode);
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "key pressed: %s (%1x, %d)", ToString(transmitKey.keycode), transmitKey.keycode, transmitKey.duration);
QueueAddKey(transmitKey);
}
}
@@ -1129,6 +1129,7 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
unsigned int timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
cec_keypress key;
key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
+ key.duration = 0;
{
CLockObject lock(m_mutex);
@@ -1140,8 +1141,7 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
m_configuration.iComboKeyTimeoutMs : CEC_DEFAULT_COMBO_TIMEOUT_MS);
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
- ((m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_updateButtontime >= iTimeoutMs) ||
- (m_iCurrentButton != comboKey && m_releaseButtontime && iNow >= (uint64_t)m_releaseButtontime)))
+ m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_updateButtontime >= iTimeoutMs)
{
key.duration = (unsigned int) (iNow - m_initialButtontime);
key.keycode = m_iCurrentButton;
@@ -1155,9 +1155,23 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
m_releasedButtoncount = 0;
}
else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
+ m_iCurrentButton != comboKey && m_releaseButtontime && iNow >= (uint64_t)m_releaseButtontime)
+ {
+ key.duration = (unsigned int) (iNow - m_initialButtontime);
+ key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
+
+ m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
+ m_initialButtontime = 0;
+ m_updateButtontime = 0;
+ m_repeatButtontime = 0;
+ m_releaseButtontime = 0;
+ m_pressedButtoncount = 0;
+ m_releasedButtoncount = 0;
+ }
+ else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
(m_iCurrentButton != comboKey && m_repeatButtontime && iNow >= (uint64_t)m_repeatButtontime))
{
- key.duration = 0;
+ key.duration = (unsigned int) (iNow - m_initialButtontime);
key.keycode = m_iCurrentButton;
m_repeatButtontime = iNow + m_configuration.iButtonRepeatRateMs;
timeout = std::min((uint64_t)timeout, m_repeatButtontime - iNow);
@@ -1176,8 +1190,8 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
timeout = CEC_PROCESSOR_SIGNAL_WAIT_TIME;
}
}
- LIB_CEC->AddLog(CEC_LOG_DEBUG, "key %s: %s (%1x) timeout:%dms (rel:%d,rep:%d,prs:%d,rel:%d)", key.keycode == CEC_USER_CONTROL_CODE_UNKNOWN ? "idle" : key.duration ? "released" : "repeated",
- ToString(m_iCurrentButton), m_iCurrentButton, timeout, (int)(m_releaseButtontime ? m_releaseButtontime - iNow : 0), (int)(m_repeatButtontime ? m_repeatButtontime - iNow : 0), m_pressedButtoncount, m_releasedButtoncount);
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "Key %s: %s (duration:%d) (%1x) timeout:%dms (rel:%d,rep:%d,prs:%d,rel:%d)", ToString(m_iCurrentButton), key.keycode == CEC_USER_CONTROL_CODE_UNKNOWN ? "idle" : m_repeatButtontime ? "repeated" : "released", key.duration,
+ m_iCurrentButton, timeout, (int)(m_releaseButtontime ? m_releaseButtontime - iNow : 0), (int)(m_repeatButtontime ? m_repeatButtontime - iNow : 0), m_pressedButtoncount, m_releasedButtoncount);
}
if (key.keycode != CEC_USER_CONTROL_CODE_UNKNOWN)
--
1.9.1
From 1ea01f59d8186d4d53af41961aaccbbc11651115 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 5 Nov 2014 21:04:25 +0000
Subject: [PATCH 6/6] squash: Fix for stop needing to be pressed twice
---
src/libcec/CECClient.cpp | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/libcec/CECClient.cpp b/src/libcec/CECClient.cpp
index 1946148..f4f114b 100644
--- a/src/libcec/CECClient.cpp
+++ b/src/libcec/CECClient.cpp
@@ -1131,6 +1131,8 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
key.duration = 0;
+ if (m_iCurrentButton == CEC_USER_CONTROL_CODE_UNKNOWN)
+ return timeout;
{
CLockObject lock(m_mutex);
uint64_t iNow = GetTimeMs();
@@ -1140,8 +1142,7 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
uint32_t iTimeoutMs(m_configuration.clientVersion >= LIBCEC_VERSION_TO_UINT(2, 0, 5) ?
m_configuration.iComboKeyTimeoutMs : CEC_DEFAULT_COMBO_TIMEOUT_MS);
- if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
- m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_updateButtontime >= iTimeoutMs)
+ if (m_iCurrentButton == comboKey && iTimeoutMs > 0 && iNow - m_updateButtontime >= iTimeoutMs)
{
key.duration = (unsigned int) (iNow - m_initialButtontime);
key.keycode = m_iCurrentButton;
@@ -1154,8 +1155,7 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
m_pressedButtoncount = 0;
m_releasedButtoncount = 0;
}
- else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
- m_iCurrentButton != comboKey && m_releaseButtontime && iNow >= (uint64_t)m_releaseButtontime)
+ else if (m_iCurrentButton != comboKey && m_releaseButtontime && iNow >= (uint64_t)m_releaseButtontime)
{
key.duration = (unsigned int) (iNow - m_initialButtontime);
key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
@@ -1168,8 +1168,7 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
m_pressedButtoncount = 0;
m_releasedButtoncount = 0;
}
- else if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN &&
- (m_iCurrentButton != comboKey && m_repeatButtontime && iNow >= (uint64_t)m_repeatButtontime))
+ else if (m_iCurrentButton != comboKey && m_repeatButtontime && iNow >= (uint64_t)m_repeatButtontime)
{
key.duration = (unsigned int) (iNow - m_initialButtontime);
key.keycode = m_iCurrentButton;
@@ -1178,11 +1177,11 @@ uint16_t CCECClient::CheckKeypressTimeout(void)
}
else
{
- if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton == comboKey && iTimeoutMs > 0)
+ if (m_iCurrentButton == comboKey && iTimeoutMs > 0)
timeout = std::min((uint64_t)timeout, m_updateButtontime - iNow + iTimeoutMs);
- if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton != comboKey && m_releaseButtontime)
+ if (m_iCurrentButton != comboKey && m_releaseButtontime)
timeout = std::min((uint64_t)timeout, m_releaseButtontime - iNow);
- if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && m_iCurrentButton != comboKey && m_repeatButtontime)
+ if (m_iCurrentButton != comboKey && m_repeatButtontime)
timeout = std::min((uint64_t)timeout, m_repeatButtontime - iNow);
if (timeout > CEC_PROCESSOR_SIGNAL_WAIT_TIME)
{
--
1.9.1

View File

@ -1,18 +0,0 @@
# see upstream commit, https://github.com/Pulse-Eight/libcec/commit/678739a0d8aa5897fa1906a8fdeeb67b83f7d1e9
diff -Naur a/src/libcec/platform/drm/drm-edid.cpp b/src/libcec/platform/drm/drm-edid.cpp
--- a/src/libcec/platform/drm/drm-edid.cpp 2015-07-03 10:20:49.000000000 -0700
+++ b/src/libcec/platform/drm/drm-edid.cpp 2015-11-10 13:09:14.902629922 -0800
@@ -51,6 +51,12 @@
DIR *dir = opendir(baseDir.c_str());
+ // DRM subfolder may not exist on some systems
+ if (dir == NULL)
+ {
+ return iPA;
+ }
+
struct dirent *entry = readdir(dir);
std::string enablededid;
std::string line;

View File

@ -1,8 +1,33 @@
From 111381e98e7a2544c052a12211349346ed2b47d6 Mon Sep 17 00:00:00 2001
From: Gerald Dachs <gda@dachsweb.de>
Date: Thu, 3 Mar 2016 09:38:44 +0100
Subject: [PATCH] new adapter for amlogic devices
---
README.md | 6 +
include/cectypes.h | 13 +-
src/libcec/CMakeLists.txt | 3 +
src/libcec/adapter/AdapterFactory.cpp | 24 +-
src/libcec/adapter/Amlogic/AmlogicCEC.h | 41 +++
.../Amlogic/AmlogicCECAdapterCommunication.cpp | 305 +++++++++++++++++++++
.../Amlogic/AmlogicCECAdapterCommunication.h | 105 +++++++
.../adapter/Amlogic/AmlogicCECAdapterDetection.cpp | 50 ++++
.../adapter/Amlogic/AmlogicCECAdapterDetection.h | 46 ++++
src/libcec/cmake/CheckPlatformSupport.cmake | 13 +
src/libcec/cmake/DisplayPlatformSupport.cmake | 6 +
src/libcec/env.h.in | 3 +
12 files changed, 613 insertions(+), 2 deletions(-)
create mode 100644 src/libcec/adapter/Amlogic/AmlogicCEC.h
create mode 100644 src/libcec/adapter/Amlogic/AmlogicCECAdapterCommunication.cpp
create mode 100644 src/libcec/adapter/Amlogic/AmlogicCECAdapterCommunication.h
create mode 100644 src/libcec/adapter/Amlogic/AmlogicCECAdapterDetection.cpp
create mode 100644 src/libcec/adapter/Amlogic/AmlogicCECAdapterDetection.h
diff --git a/README.md b/README.md
index dfaf4d6..0dffdcf 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,12 @@
@@ -93,6 +93,12 @@ To compile in support for Exynos devices, you have to pass the argument -DHAVE_E
cmake -DHAVE_EXYNOS_API=1 ..
```
@ -12,18 +37,17 @@ index dfaf4d6..0dffdcf 100644
+cmake -DHAVE_AMLOGIC_API=1 ..
+```
+
## TDA995x ##
### TDA995x
To compile in support for TDA995x devices, you have to pass the argument -DHAVE_TDA995X_API=1 to cmake:
```
diff --git a/include/cectypes.h b/include/cectypes.h
index e28c8df..c0b9476 100644
index 0fdd48e..b7e1932 100644
--- a/include/cectypes.h
+++ b/include/cectypes.h
@@ -318,6 +318,15 @@ namespace CEC {
*/
#define CEC_IMX_VIRTUAL_COM "i.MX"
@@ -309,6 +309,16 @@ namespace CEC {
#define CEC_EXYNOS_VIRTUAL_COM "Exynos"
+/*!
/*!
+ * the path to use for the Amlogic HDMI CEC device
+ */
+#define CEC_AMLOGIC_PATH "/dev/AmlogicCEC"
@ -32,10 +56,12 @@ index e28c8df..c0b9476 100644
+ * the name of the virtual COM port to use for the AMLOGIC' CEC wire
+ */
+#define CEC_AMLOGIC_VIRTUAL_COM "Amlogic"
/*!
+
+/*!
* Mimimum client version
@@ -889,7 +898,8 @@ typedef enum cec_adapter_type
*/
#define CEC_MIN_LIB_VERSION 3
@@ -899,7 +899,8 @@
ADAPTERTYPE_RPI = 0x100,
ADAPTERTYPE_TDA995x = 0x200,
ADAPTERTYPE_EXYNOS = 0x300,
@ -60,11 +86,11 @@ index a494533..e94b094 100644
adapter/Pulse-Eight/USBCECAdapterCommunication.h
adapter/Pulse-Eight/USBCECAdapterCommands.h
diff --git a/src/libcec/adapter/AdapterFactory.cpp b/src/libcec/adapter/AdapterFactory.cpp
index 92e378b..55703b9 100644
index da05725..824c5ff 100644
--- a/src/libcec/adapter/AdapterFactory.cpp
+++ b/src/libcec/adapter/AdapterFactory.cpp
@@ -63,6 +63,11 @@
#include "IMX/IMXCECAdapterCommunication.h"
@@ -58,6 +58,11 @@
#include "Exynos/ExynosCECAdapterCommunication.h"
#endif
+#if defined(HAVE_AMLOGIC_API)
@ -75,16 +101,7 @@ index 92e378b..55703b9 100644
using namespace CEC;
int8_t CAdapterFactory::FindAdapters(cec_adapter *deviceList, uint8_t iBufSize, const char *strDevicePath /* = NULL */)
@@ -131,8 +136,6 @@ int8_t CAdapterFactory::DetectAdapters(cec_adapter_descriptor *deviceList, uint8
}
#endif
-
-
#if defined(HAVE_IMX_API)
if (iAdaptersFound < iBufSize && CIMXCECAdapterDetection::FindAdapter() &&
(!strDevicePath || !strcmp(strDevicePath, CEC_IMX_VIRTUAL_COM)))
@@ -146,8 +149,20 @@ int8_t CAdapterFactory::DetectAdapters(cec_adapter_descriptor *deviceList, uint8
@@ -151,8 +151,19 @@
}
#endif
@ -101,13 +118,12 @@ index 92e378b..55703b9 100644
+#endif
-#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_IMX_API)
+
+#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_IMX_API) && !defined(HAVE_AMLOGIC_API)
#error "libCEC doesn't have support for any type of adapter. please check your build system or configuration"
#endif
@@ -176,11 +191,16 @@ IAdapterCommunication *CAdapterFactory::GetInstance(const char *strPort, uint16_
return new CIMXCECAdapterCommunication(m_lib->m_cec);
@@ -146,6 +163,11 @@ IAdapterCommunication *CAdapterFactory::GetInstance(const char *strPort, uint16_
return new CExynosCECAdapterCommunication(m_lib->m_cec);
#endif
+#if defined(HAVE_AMLOGIC_API)
@ -115,15 +131,9 @@ index 92e378b..55703b9 100644
+ return new CAmlogicCECAdapterCommunication(m_lib->m_cec);
+#endif
+
#if defined(HAVE_P8_USB)
return new CUSBCECAdapterCommunication(m_lib->m_cec, strPort, iBaudRate);
#endif
-#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_EXYNOS_API) && !defined(HAVE_IMX_API)
+#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_EXYNOS_API) && !defined(HAVE_IMX_API) && !defined(HAVE_AMLOGIC_API)
return NULL;
#endif
}
#if defined(HAVE_RPI_API)
if (!strcmp(strPort, CEC_RPI_VIRTUAL_COM))
return new CRPiCECAdapterCommunication(m_lib->m_cec);
diff --git a/src/libcec/adapter/Amlogic/AmlogicCEC.h b/src/libcec/adapter/Amlogic/AmlogicCEC.h
new file mode 100644
index 0000000..7b86982
@ -223,10 +233,10 @@ index 0000000..5aeddda
+
+#include "CECTypeUtils.h"
+#include "LibCEC.h"
+#include <platform/util/buffer.h>
+#include <p8-platform/util/buffer.h>
+
+using namespace CEC;
+using namespace PLATFORM;
+using namespace P8PLATFORM;
+
+#define LIB_CEC m_callback->GetLib()
+
@ -528,14 +538,14 @@ index 0000000..0e99cf8
+
+#if defined(HAVE_AMLOGIC_API)
+
+#include <platform/threads/mutex.h>
+#include <platform/threads/threads.h>
+#include <p8-platform/threads/mutex.h>
+#include <p8-platform/threads/threads.h>
+#include "../AdapterCommunication.h"
+#include <map>
+
+namespace CEC
+{
+ class CAmlogicCECAdapterCommunication : public IAdapterCommunication, public PLATFORM::CThread
+ class CAmlogicCECAdapterCommunication : public IAdapterCommunication, public P8PLATFORM::CThread
+ {
+ public:
+ /*!
@ -575,7 +585,7 @@ index 0000000..0e99cf8
+ void SetActiveSource(bool UNUSED(bSetTo), bool UNUSED(bClientUnregistered)) {}
+ ///}
+
+ /** @name PLATFORM::CThread implementation */
+ /** @name P8PLATFORM::CThread implementation */
+ ///{
+ void *Process(void);
+ ///}
@ -588,7 +598,7 @@ index 0000000..0e99cf8
+
+ bool m_bLogicalAddressChanged;
+ cec_logical_addresses m_logicalAddresses;
+ PLATFORM::CMutex m_mutex;
+ P8PLATFORM::CMutex m_mutex;
+ int m_fd;
+ };
+};
@ -702,18 +712,18 @@ index 0000000..8a7418d
+ };
+}
diff --git a/src/libcec/cmake/CheckPlatformSupport.cmake b/src/libcec/cmake/CheckPlatformSupport.cmake
index dc5bc25..64003d9 100644
index b8a16c8..311cb52 100644
--- a/src/libcec/cmake/CheckPlatformSupport.cmake
+++ b/src/libcec/cmake/CheckPlatformSupport.cmake
@@ -11,6 +11,7 @@
# HAVE_IMX_API 1 if i.MX is supported
# HAVE_TDA995X_API 1 if TDA995X is supported
# HAVE_EXYNOS_API 1 if Exynos is supported
+# HAVE_AMLOGIC_API 1 if Amlogic is supported
@@ -9,6 +9,7 @@
# HAVE_RPI_API 1 if Raspberry Pi is supported
# HAVE_TDA995X_API 1 if TDA995X is supported
# HAVE_EXYNOS_API 1 if Exynos is supported
+# HAVE_AMLOGIC_API 1 if Amlogic is supported
# HAVE_P8_USB 1 if Pulse-Eight devices are supported
# HAVE_P8_USB_DETECT 1 if Pulse-Eight devices can be auto-detected
#
@@ -142,6 +143,18 @@ else()
# HAVE_DRM_EDID_PARSER 1 if DRM EDID parsing is supported
@@ -132,6 +133,18 @@ else()
else()
set(HAVE_EXYNOS_API 0)
endif()
@ -733,10 +743,10 @@ index dc5bc25..64003d9 100644
# rt
diff --git a/src/libcec/cmake/DisplayPlatformSupport.cmake b/src/libcec/cmake/DisplayPlatformSupport.cmake
index 4e24def..1890cac 100644
index 9dcaacf..464252e 100644
--- a/src/libcec/cmake/DisplayPlatformSupport.cmake
+++ b/src/libcec/cmake/DisplayPlatformSupport.cmake
@@ -50,6 +50,12 @@ else()
@@ -44,6 +44,12 @@ else()
message(STATUS "DRM support: no")
endif()
@ -750,10 +760,10 @@ index 4e24def..1890cac 100644
message(STATUS "Python support: version ${PYTHONLIBS_VERSION_STRING} (${PYTHON_VERSION})")
else()
diff --git a/src/libcec/env.h.in b/src/libcec/env.h.in
index 384f1c7..c3f00bc 100644
index 0496aa0..971f769 100644
--- a/src/libcec/env.h.in
+++ b/src/libcec/env.h.in
@@ -75,6 +75,9 @@
@@ -72,6 +72,9 @@
/* Define to 1 for Exynos support */
#cmakedefine HAVE_EXYNOS_API @HAVE_EXYNOS_API@

View File

@ -1,43 +0,0 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="jasper"
PKG_VERSION="1.900.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="OpenSource"
PKG_SITE="http://www.ece.uvic.ca/~mdadams/jasper/"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS_TARGET="toolchain libjpeg-turbo"
PKG_PRIORITY="optional"
PKG_SECTION="graphics"
PKG_SHORTDESC="jasper: JPEG-2000 Part-1 standard (i.e., ISO/IEC 15444-1) implementation"
PKG_LONGDESC="This distribution contains the public release of the an open-source implementation of the ISO/IEC 15444-1 also known as JPEG-2000 standard for image compression."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"
PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static"
pre_configure_target() {
export CFLAGS="$CFLAGS -fPIC -DPIC"
}
post_makeinstall_target() {
rm -rf $INSTALL/usr/bin
}

View File

@ -17,30 +17,26 @@
################################################################################
PKG_NAME="soil"
PKG_VERSION="1.07"
PKG_VERSION="1.16"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="PD"
PKG_LICENSE="CCPL"
PKG_SITE="http://www.lonesock.net/soil.html"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="mesa"
PKG_DEPENDS_TARGET="toolchain mesa"
PKG_PRIORITY="optional"
PKG_SECTION="graphics"
PKG_SHORTDESC="libsoil: Simple OpenGL Image Library"
PKG_LONGDESC="libsoil: Simple OpenGL Image Library"
PKG_SHORTDESC="A tiny C lib primarily for loading textures into OpenGL"
PKG_LONGDESC="A tiny C lib primarily for loading textures into OpenGL"
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
make_target() {
mkdir projects/makefile/obj
make CXX="$CXX" CC="$CC" LD="$CC" AR="$AR" CFLAGS="-fPIC -O2" CXXFLAGS="-fPIC -O2" -C projects/makefile
pre_make_target() {
sed "s/1.07-20071110/$PKG_VERSION/" -i Makefile
export CFLAGS="$CFLAGS -fPIC"
}
makeinstall_target() {
mkdir -p $SYSROOT_PREFIX/usr/lib
cp -PR lib/libSOIL.a $SYSROOT_PREFIX/usr/lib
mkdir -p $SYSROOT_PREFIX/usr/include/SOIL
cp -P src/SOIL.h $SYSROOT_PREFIX/usr/include/SOIL
pre_makeinstall_target() {
export DESTDIR=$SYSROOT_PREFIX
}

View File

@ -0,0 +1,47 @@
--- /dev/null 2015-06-05 20:37:04.396503995 +0200
+++ b/Makefile 2016-01-27 22:47:09.795982961 +0100
@@ -0,0 +1,44 @@
+CC ?= gcc
+INSTALL_FILE = install -p -m 644
+INSTALL_DIR = install -p -d
+LN = ln -s
+RM = rm -fv
+CFLAGS += -c -O2 -Wall
+LDFLAGS +=
+
+SRC = src
+CFILES = $(SRC)/image_DXT.c $(SRC)/image_helper.c $(SRC)/SOIL.c $(SRC)/stb_image_aug.c
+OFILES = $(CFILES:.c=.o)
+LIBNAME = libSOIL
+VERSION = 1.07-20071110
+MAJOR = 1
+
+HFILES = $(SRC)/SOIL.h $(SRC)/image_DXT.h $(SRC)/image_helper.h \
+ $(SRC)/stbi_DDS_aug.h $(SRC)/stbi_DDS_aug_c.h $(SRC)/stb_image_aug.h
+AFILE = libSOIL.a
+INCLUDEDIR = /usr/include/SOIL
+LIBDIR = /usr/lib
+
+all: $(OFILES) lib
+
+%.o: %.c
+ $(CC) $(CFLAGS) $< -o $@
+
+lib: $(OFILES)
+ # create static library
+ $(AR) -cvq $(LIBNAME).a $(OFILES)
+
+install:
+ $(INSTALL_DIR) $(DESTDIR)/$(INCLUDEDIR)
+ $(INSTALL_FILE) $(HFILES) $(DESTDIR)/$(INCLUDEDIR)
+ $(INSTALL_DIR) $(DESTDIR)/$(LIBDIR)
+ $(INSTALL_FILE) $(AFILE) $(DESTDIR)/$(LIBDIR)
+
+clean:
+ $(RM) *.o
+ $(RM) *~
+
+distclean:
+ $(RM) $(AFILE) $(SOFILE)
+
+.PHONY: all lib clean distclean

View File

@ -0,0 +1,49 @@
diff --git a/skins/Default/720p/mainWindow.xml b/skins/Default/720p/mainWindow.xml
index 19c7676..c63f688 100644
--- a/skins/Default/720p/mainWindow.xml
+++ b/skins/Default/720p/mainWindow.xml
@@ -75,7 +75,7 @@
<width>220</width>
<height>80</height>
<aspectratio>keep</aspectratio>
- <texture>$INFO[Container(5533).Property(DIST_MEDIA)]/Logo.png</texture>
+ <texture>$INFO[Window.Property(DIST_MEDIA)]/Logo.png</texture>
</control>
<control type="image">
<left>268</left>
@@ -267,7 +267,7 @@
<textcolor>white</textcolor>
<align>left</align>
<aligny>center</aligny>
- <label>$INFO[Container(5533).Property(Distri)] ($INFO[Container(5533).Property(build)])</label>
+ <label>$INFO[Window.Property(Distri)] ($INFO[Window.Property(build)])</label>
</control>
<control type="label">
<left>20</left>
@@ -289,7 +289,7 @@
<textcolor>white</textcolor>
<align>left</align>
<aligny>center</aligny>
- <label>$INFO[Container(5533).Property(Version)]</label>
+ <label>$INFO[Window.Property(Version)]</label>
</control>
<control type="label">
<left>20</left>
@@ -311,7 +311,7 @@
<textcolor>white</textcolor>
<align>left</align>
<aligny>center</aligny>
- <label>$INFO[Container(5533).Property(Arch)]</label>
+ <label>$INFO[Window.Property(Arch)]</label>
</control>
<control type="textbox">
<left>20</left>
@@ -1246,7 +1246,7 @@
<width>740</width>
<height>100</height>
<font>font12</font>
- <label>$INFO[Container(5533).Property(InfoText)]</label>
+ <label>$INFO[Window.Property(InfoText)]</label>
<align>left</align>
<textcolor>white</textcolor>
<shadowcolor>black</shadowcolor>

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="adsp.basic"
PKG_VERSION="cb56e0e"
PKG_VERSION="5cf12e8"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="adsp.biquad.filters"
PKG_VERSION="d63d8ac"
PKG_VERSION="af575f3"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="adsp.freesurround"
PKG_VERSION="08b691d"
PKG_VERSION="6dc533b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.modplug"
PKG_VERSION="03b772d"
PKG_VERSION="3faec25"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.ncsf"
PKG_VERSION="b452778"
PKG_VERSION="db9517f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.nosefart"
PKG_VERSION="bfab543"
PKG_VERSION="646a7cb"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.organya"
PKG_VERSION="ed0d3a5"
PKG_VERSION="88d8a0f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.qsf"
PKG_VERSION="83b18d7"
PKG_VERSION="4330729"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.sidplay"
PKG_VERSION="d832f05"
PKG_VERSION="4631114"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.snesapu"
PKG_VERSION="db62e88"
PKG_VERSION="c5a182b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.stsound"
PKG_VERSION="759ae7e"
PKG_VERSION="65f0e06"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.timidity"
PKG_VERSION="1aa2378"
PKG_VERSION="f649d32"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.vgmstream"
PKG_VERSION="cb2892a"
PKG_VERSION="6695178"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audioencoder.flac"
PKG_VERSION="f8a9cd0"
PKG_VERSION="176288b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audioencoder.lame"
PKG_VERSION="52f84dd"
PKG_VERSION="ffaf9cb"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audioencoder.vorbis"
PKG_VERSION="42620de"
PKG_VERSION="47a0676"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audioencoder.wav"
PKG_VERSION="0c6ec77"
PKG_VERSION="a12bcd1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -0,0 +1,60 @@
################################################################################
# This file is part of LibreELEC - http://www.libreelec.tv
# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="inputstream.mpd"
PKG_VERSION="4323ce6"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/liberty-developer/inputstream.mpd/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain kodi-platform"
PKG_SECTION=""
PKG_SHORTDESC="inputstream.mpd"
PKG_LONGDESC="inputstream.mpd"
PKG_IS_ADDON="yes"
configure_target() {
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \
-DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \
..
}
post_make_target() {
mkdir -p wv && cd wv
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \
-DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \
$ROOT/$PKG_BUILD/wvdecrypter
make
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/
cp -R $PKG_BUILD/.install_pkg/usr/share/kodi/addons/$PKG_NAME/* $ADDON_BUILD/$PKG_ADDON_ID/
ADDONSO=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml)
cp -L $PKG_BUILD/.install_pkg/usr/lib/kodi/addons/$PKG_NAME/$ADDONSO $ADDON_BUILD/$PKG_ADDON_ID/
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/decrypter/
cp -P $PKG_BUILD/.$TARGET_NAME/wv/libssd_wv.so $ADDON_BUILD/$PKG_ADDON_ID/lib/
ln -sf /storage/decrypters/libwidevinecdm.so $ADDON_BUILD/$PKG_ADDON_ID/decrypter/libwidevinecdm.so
}

View File

@ -0,0 +1,45 @@
################################################################################
# This file is part of LibreELEC - http://www.libreelec.tv
# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="inputstream.smoothstream"
PKG_VERSION="1813bbb"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/mapfau/inputstream.smoothstream/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain kodi-platform"
PKG_SECTION=""
PKG_SHORTDESC="inputstream.smoothstream"
PKG_LONGDESC="inputstream.smoothstream"
PKG_IS_ADDON="yes"
configure_target() {
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \
-DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \
..
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/
cp -R $PKG_BUILD/.install_pkg/usr/share/kodi/addons/$PKG_NAME/* $ADDON_BUILD/$PKG_ADDON_ID/
ADDONSO=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml)
cp -L $PKG_BUILD/.install_pkg/usr/lib/kodi/addons/$PKG_NAME/$ADDONSO $ADDON_BUILD/$PKG_ADDON_ID/
}

View File

@ -0,0 +1,50 @@
################################################################################
# This file is part of LibreELEC - http://www.libreelec.tv
# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="peripheral.joystick"
PKG_VERSION="76b7c40"
PKG_REV="0"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/kodi-game/peripheral.joystick"
PKG_URL="https://github.com/kodi-game/peripheral.joystick/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain kodi-platform p8-platform"
PKG_PRIORITY="optional"
PKG_SECTION=""
PKG_SHORTDESC="peripheral.joystick: Joystick support in Kodi"
PKG_LONGDESC="peripheral.joystick provides joystick support and button mapping"
PKG_AUTORECONF="no"
PKG_IS_ADDON="yes"
PKG_ADDON_TYPE="kodi.peripheral"
configure_target() {
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \
-DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \
..
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/
cp -R $PKG_BUILD/.install_pkg/usr/share/kodi/addons/$PKG_NAME/* $ADDON_BUILD/$PKG_ADDON_ID/
ADDONSO=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml)
cp -L $PKG_BUILD/.install_pkg/usr/lib/kodi/addons/$PKG_NAME/$ADDONSO $ADDON_BUILD/$PKG_ADDON_ID/
}

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.argustv"
PKG_VERSION="654715b"
PKG_VERSION="974820a"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.demo"
PKG_VERSION="46d7bfb"
PKG_VERSION="e74822f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.dvblink"
PKG_VERSION="88849a2"
PKG_VERSION="82c7b4d"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.dvbviewer"
PKG_VERSION="21423d4"
PKG_VERSION="6ab861f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.filmon"
PKG_VERSION="54ae595"
PKG_VERSION="0d8dd5b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.hdhomerun"
PKG_VERSION="ae94e4c"
PKG_VERSION="fd9daf4"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.hts"
PKG_VERSION="3c673b5"
PKG_VERSION="0f88a35"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.iptvsimple"
PKG_VERSION="1d95cd0"
PKG_VERSION="b741cac"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.mediaportal.tvserver"
PKG_VERSION="330d90b"
PKG_VERSION="96f415e"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.mythtv"
PKG_VERSION="f6b0483"
PKG_VERSION="f8d25fd"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.nextpvr"
PKG_VERSION="9214bc0"
PKG_VERSION="d445c5a"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.njoy"
PKG_VERSION="480c159"
PKG_VERSION="b9b0ae4"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.pctv"
PKG_VERSION="0096770"
PKG_VERSION="f188048"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.stalker"
PKG_VERSION="92893c7"
PKG_VERSION="14a7c70"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.vbox"
PKG_VERSION="15e864d"
PKG_VERSION="e70146d"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.vdr.vnsi"
PKG_VERSION="76652c2"
PKG_VERSION="1236405"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.vuplus"
PKG_VERSION="815ea2f"
PKG_VERSION="d8c6f9b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.wmc"
PKG_VERSION="6c8d668"
PKG_VERSION="898e2da"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -0,0 +1,54 @@
################################################################################
# This file is part of LibreELEC - http://www.libreelec.tv
# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="screensaver.asterwave"
PKG_VERSION="0dc2c48"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/notspiff/screensaver.asterwave"
PKG_URL="https://github.com/notspiff/screensaver.asterwave/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain kodi-platform soil"
PKG_PRIORITY="optional"
PKG_SECTION=""
PKG_SHORTDESC="screensaver.asterwave"
PKG_LONGDESC="screensaver.asterwave"
PKG_AUTORECONF="no"
PKG_IS_ADDON="yes"
PKG_ADDON_TYPE="xbmc.ui.screensaver"
if [ "$OPENGL" = "no" ] ; then
exit 0
fi
configure_target() {
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \
-DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \
..
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/
cp -R $PKG_BUILD/.install_pkg/usr/share/kodi/addons/$PKG_NAME/* $ADDON_BUILD/$PKG_ADDON_ID/
ADDONSO=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml)
cp -L $PKG_BUILD/.install_pkg/usr/lib/kodi/addons/$PKG_NAME/$ADDONSO $ADDON_BUILD/$PKG_ADDON_ID/
}

View File

@ -0,0 +1,54 @@
################################################################################
# This file is part of LibreELEC - http://www.libreelec.tv
# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="screensaver.cpblobs"
PKG_VERSION="87a3abf"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/notspiff/screensaver.cpblobs"
PKG_URL="https://github.com/notspiff/screensaver.cpblobs/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain kodi-platform soil"
PKG_PRIORITY="optional"
PKG_SECTION=""
PKG_SHORTDESC="screensaver.cpblobs"
PKG_LONGDESC="screensaver.cpblobs"
PKG_AUTORECONF="no"
PKG_IS_ADDON="yes"
PKG_ADDON_TYPE="xbmc.ui.screensaver"
if [ "$OPENGL" = "no" ] ; then
exit 0
fi
configure_target() {
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \
-DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \
..
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/
cp -R $PKG_BUILD/.install_pkg/usr/share/kodi/addons/$PKG_NAME/* $ADDON_BUILD/$PKG_ADDON_ID/
ADDONSO=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml)
cp -L $PKG_BUILD/.install_pkg/usr/lib/kodi/addons/$PKG_NAME/$ADDONSO $ADDON_BUILD/$PKG_ADDON_ID/
}

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="screensaver.shadertoy"
PKG_VERSION="7a6f6fe"
PKG_VERSION="394de3d"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -0,0 +1,50 @@
################################################################################
# This file is part of LibreELEC - http://www.libreelec.tv
# Copyright (C) 2009-2016 Lukas Rusak (lrusak@libreelec.tv)
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="visualization.pictureit"
PKG_VERSION="e11d577"
PKG_REV="1"
PKG_ARCH="x86_64"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/linuxwhatelse/visualization.pictureit/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain kodi-platform"
PKG_PRIORITY="optional"
PKG_SECTION=""
PKG_SHORTDESC="visualization.pictureit"
PKG_LONGDESC="visualization.pictureit"
PKG_AUTORECONF="no"
PKG_IS_ADDON="yes"
PKG_ADDON_TYPE="xbmc.player.musicviz"
configure_target() {
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_MODULE_PATH=$SYSROOT_PREFIX/usr/lib/kodi \
-DCMAKE_PREFIX_PATH=$SYSROOT_PREFIX/usr \
..
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/
cp -R $PKG_BUILD/.install_pkg/usr/share/kodi/addons/$PKG_NAME/* $ADDON_BUILD/$PKG_ADDON_ID/
ADDONSO=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml)
cp -L $PKG_BUILD/.install_pkg/usr/lib/kodi/addons/$PKG_NAME/$ADDONSO $ADDON_BUILD/$PKG_ADDON_ID/
}

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="visualization.shadertoy"
PKG_VERSION="f998800"
PKG_VERSION="5b64785"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="visualization.spectrum"
PKG_VERSION="9dbe53a"
PKG_VERSION="d662ffe"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -1,39 +0,0 @@
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2016-03-03 12:18:48.000000000 -0800
+++ b/CMakeLists.txt 2016-04-11 12:38:06.499927119 -0700
@@ -6,8 +6,8 @@
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
find_package(kodi REQUIRED)
-#find_package(platform REQUIRED)
-find_package(p8-platform REQUIRED)
+find_package(platform REQUIRED)
+#find_package(p8-platform REQUIRED)
find_package(kodiplatform REQUIRED)
find_package(CURL REQUIRED)
#find_package(yajl REQUIRED) #why is it so damn difficult to include Kodi's libraries???
@@ -94,9 +94,9 @@
endif()
include_directories(${INCLUDES}
- ${CURL_INCLUDE_DIR}
+ ${CURL_INCLUDE_DIR}
${KODI_INCLUDE_DIR}
- ${p8-platform_INCLUDE_DIRS}
+ ${platform_INCLUDE_DIRS}
${kodiplatform_INCLUDE_DIRS})
# ${YAJL_INCLUDE_DIR}
# ${platform_INCLUDE_DIRS}
diff -Naur a/src/WavforHue_Kodi.h b/src/WavforHue_Kodi.h
--- a/src/WavforHue_Kodi.h 2016-03-03 12:18:48.000000000 -0800
+++ b/src/WavforHue_Kodi.h 2016-04-11 12:38:06.500927127 -0700
@@ -23,6 +23,6 @@
// Is this worth it?
//#include <libKODI_guilib.h>
#include <libXBMC_addon.h>
-#include "p8-platform/util/util.h"
+#include "platform/util/util.h"
extern ADDON::CHelper_libXBMC_addon *XBMC;
-#endif
+#endif
\ No newline at end of file

View File

@ -17,13 +17,13 @@
################################################################################
PKG_NAME="kodi-platform"
PKG_VERSION="15edaf7"
PKG_VERSION="fed924e"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/xbmc/kodi-platform/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain tinyxml kodi platform"
PKG_DEPENDS_TARGET="toolchain tinyxml kodi p8-platform"
PKG_PRIORITY="optional"
PKG_SECTION="multimedia"
PKG_SHORTDESC="kodi-platform:"

View File

@ -1,10 +1,10 @@
diff -Naur kodi-platform-15edaf7.orig/CMakeLists.txt kodi-platform-15edaf7/CMakeLists.txt
--- kodi-platform-15edaf7.orig/CMakeLists.txt 2015-10-22 17:44:43.034540766 -0700
+++ kodi-platform-15edaf7/CMakeLists.txt 2015-10-22 17:46:38.851326343 -0700
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2016-01-06 00:56:44.616186365 +0100
+++ b/CMakeLists.txt 2016-01-06 00:59:03.502490684 +0100
@@ -9,7 +9,6 @@
find_package(TinyXML REQUIRED)
find_package(Threads REQUIRED)
find_package(platform REQUIRED)
find_package(p8-platform REQUIRED)
-include(UseMultiArch.cmake)
include(CheckAtomic.cmake)

View File

@ -1,14 +0,0 @@
--- a/720p/IncludesHomeMenuItems.xml 2012-07-22 21:56:07.000000000 +0400
+++ b/720p/IncludesHomeMenuItems.xml 2012-09-13 23:34:16.975470148 +0400
@@ -189,6 +189,11 @@
<label>5</label>
<onclick>ActivateWindow(Settings)</onclick>
</control>
+ <control type="button" id="90120">
+ <include>ButtonHomeSubCommonValues</include>
+ <label>@DISTRONAME@</label>
+ <onclick>RunAddon(service.libreelec.settings)</onclick>
+ </control>
<control type="button" id="90123">
<include>ButtonHomeSubCommonValues</include>
<label>7</label>

View File

@ -16,8 +16,8 @@
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="kodi-theme-Confluence"
PKG_VERSION="16.1-rc2-a7caa16"
PKG_NAME="kodi-theme-Estuary"
PKG_VERSION="17.0-alpha1-2c72ac9"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
@ -26,7 +26,7 @@ PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain kodi:host"
PKG_PRIORITY="optional"
PKG_SECTION="mediacenter"
PKG_SHORTDESC="kodi-theme-Confluence: Kodi Mediacenter default theme"
PKG_SHORTDESC="kodi-theme-Estuary: Kodi Mediacenter default theme"
PKG_LONGDESC="Kodi Media Center (which was formerly named Xbox Media Center and XBMC) is a free and open source cross-platform media player and home entertainment system software with a 10-foot user interface designed for the living-room TV. Its graphical user interface allows the user to easily manage video, photos, podcasts, and music from a computer, optical disk, local network, and the internet using a remote control."
PKG_IS_ADDON="no"
@ -37,19 +37,28 @@ make_target() {
-output Textures.xbt \
-dupecheck \
-use_none
for theme in themes/*; do
TexturePacker -input $theme \
-output $(basename $theme).xbt \
-dupecheck
done
}
makeinstall_target() {
mkdir -p $INSTALL/usr/share/kodi/addons/skin.confluence
cp -R */ $INSTALL/usr/share/kodi/addons/skin.confluence
cp *.txt $INSTALL/usr/share/kodi/addons/skin.confluence
cp *.xml $INSTALL/usr/share/kodi/addons/skin.confluence
cp *.png $INSTALL/usr/share/kodi/addons/skin.confluence
rm -rf $INSTALL/usr/share/kodi/addons/skin.confluence/media
mkdir -p $INSTALL/usr/share/kodi/addons/skin.estuary
cp -R */ $INSTALL/usr/share/kodi/addons/skin.estuary
cp *.txt $INSTALL/usr/share/kodi/addons/skin.estuary
cp *.xml $INSTALL/usr/share/kodi/addons/skin.estuary
cp *.png $INSTALL/usr/share/kodi/addons/skin.estuary
rm -rf $INSTALL/usr/share/kodi/addons/skin.estuary/media
mkdir -p $INSTALL/usr/share/kodi/addons/skin.confluence/media
cp Textures.xbt $INSTALL/usr/share/kodi/addons/skin.confluence/media
mkdir -p $INSTALL/usr/share/kodi/addons/skin.estuary/media
cp Textures.xbt $INSTALL/usr/share/kodi/addons/skin.estuary/media
for theme in themes/*; do
cp $(basename $theme).xbt $INSTALL/usr/share/kodi/addons/skin.estuary/media
done
# Rebrand
sed -e "s,@DISTRONAME@,$DISTRONAME,g" -i $INSTALL/usr/share/kodi/addons/skin.confluence/720p/IncludesHomeMenuItems.xml
sed -e "s,@DISTRONAME@,$DISTRONAME,g" -i $INSTALL/usr/share/kodi/addons/skin.estuary/1080i/Home.xml
}

View File

@ -0,0 +1,16 @@
diff -Naur a/1080i/Home.xml b/1080i/Home.xml
--- a/1080i/Home.xml 2016-03-29 23:29:42.616607010 +0100
+++ b/1080i/Home.xml 2016-03-29 23:30:49.205150336 +0100
@@ -1090,6 +1090,12 @@
<property name="id">weather</property>
<visible>!Skin.HasSetting(HomeMenuNoWeatherButton)</visible>
</item>
+ <item>
+ <label>@DISTRONAME@</label>
+ <onclick>RunAddon(service.libreelec.settings)</onclick>
+ <thumb>icons/home/libreelec.png</thumb>
+ <property name="id">libreelec</property>
+ </item>
</content>
</control>
</control>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="repository.libreelec.tv"
name="LibreELEC Add-ons"
version="7.0.0"
version="8.0.0"
provider-name="Team LibreELEC">
<extension point="xbmc.addon.repository"
name="LibreELEC Add-ons">

View File

@ -17,13 +17,13 @@
################################################################################
PKG_NAME="kodi"
PKG_VERSION="16.1-rc2-a7caa16"
PKG_VERSION="17.0-alpha1-2c72ac9"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain kodi:host xmlstarlet:host libsquish boost Python zlib bzip2 systemd pciutils lzo pcre swig:host libass curl rtmpdump fontconfig fribidi tinyxml libjpeg-turbo libpng tiff freetype jasper libogg libcdio libmpeg2 taglib libxml2 libxslt yajl sqlite libvorbis ffmpeg crossguid giflib"
PKG_DEPENDS_TARGET="toolchain kodi:host xmlstarlet:host Python zlib bzip2 systemd pciutils lzo pcre swig:host libass curl rtmpdump fontconfig fribidi tinyxml libjpeg-turbo libpng freetype libogg libcdio taglib libxml2 libxslt yajl sqlite libvorbis ffmpeg crossguid giflib"
PKG_DEPENDS_HOST="lzo:host libpng:host libjpeg-turbo:host giflib:host"
PKG_PRIORITY="optional"
PKG_SECTION="mediacenter"
@ -49,7 +49,7 @@ fi
if [ ! "$OPENGL" = "no" ]; then
# for OpenGL (GLX) support
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $OPENGL glu glew"
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $OPENGL glu"
KODI_OPENGL="--enable-gl"
else
KODI_OPENGL="--disable-gl"
@ -228,14 +228,14 @@ export CXXFLAGS_FOR_BUILD="$HOST_CXXFLAGS"
export CFLAGS_FOR_BUILD="$HOST_CFLAGS"
export LDFLAGS_FOR_BUILD="$HOST_LDFLAGS"
export PYTHON_VERSION="2.7"
export PYTHON_VERSION=2.7
export PYTHON_CPPFLAGS="-I$SYSROOT_PREFIX/usr/include/python$PYTHON_VERSION"
export PYTHON_LDFLAGS="-L$SYSROOT_PREFIX/usr/lib/python$PYTHON_VERSION -lpython$PYTHON_VERSION"
export PYTHON_SITE_PKG="$SYSROOT_PREFIX/usr/lib/python$PYTHON_VERSION/site-packages"
export ac_python_version="$PYTHON_VERSION"
PKG_CONFIGURE_OPTS_TARGET="gl_cv_func_gettimeofday_clobber=no \
ac_cv_lib_bluetooth_hci_devid=no \
ac_python_version=$PYTHON_VERSION \
--disable-libbluetooth \
--disable-debug \
--disable-optimizations \
$KODI_OPENGL \
@ -279,34 +279,41 @@ PKG_CONFIGURE_OPTS_TARGET="gl_cv_func_gettimeofday_clobber=no \
pre_configure_host() {
# kodi fails to build in subdirs
cd $ROOT/$PKG_BUILD
rm -rf .$HOST_NAME
rm -rf $ROOT/$PKG_BUILD/.$HOST_NAME
}
configure_host() {
: # not needed
}
make_host() {
make -C tools/depends/native/JsonSchemaBuilder
make -C tools/depends/native/TexturePacker
mkdir -p $ROOT/$PKG_BUILD/tools/depends/native/JsonSchemaBuilder/bin && cd $_
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
..
make
mkdir -p $ROOT/$PKG_BUILD/tools/depends/native/TexturePacker/bin && cd $_
cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCORE_SOURCE_DIR=$ROOT/$PKG_BUILD \
-DCMAKE_CXX_FLAGS="-std=c++11 -DTARGET_POSIX -DTARGET_LINUX -D_LINUX -I$ROOT/$PKG_BUILD/xbmc/linux" \
..
make
}
makeinstall_host() {
cp -PR tools/depends/native/JsonSchemaBuilder/native/JsonSchemaBuilder $ROOT/$TOOLCHAIN/bin
rm -f $ROOT/$TOOLCHAIN/bin/TexturePacker
cp -PR tools/depends/native/TexturePacker/native/TexturePacker $ROOT/$TOOLCHAIN/bin
cp -P $ROOT/$PKG_BUILD/tools/depends/native/TexturePacker/bin/TexturePacker $ROOT/$TOOLCHAIN/bin
}
pre_build_target() {
# adding fake Makefile for stripped skin
mkdir -p $PKG_BUILD/addons/skin.confluence/media
touch $PKG_BUILD/addons/skin.confluence/media/Makefile.in
# autoreconf
BOOTSTRAP_STANDALONE=1 make -C $PKG_BUILD -f bootstrap.mk
mkdir -p $ROOT/$PKG_BUILD/addons/skin.estuary/media
touch $ROOT/$PKG_BUILD/addons/skin.estuary/media/Makefile.in
}
pre_configure_target() {
# kodi fails to build in subdirs
cd $ROOT/$PKG_BUILD
rm -rf .$TARGET_NAME
rm -rf $ROOT/$PKG_BUILD/.$TARGET_NAME
# kodi should never be built with lto
strip_lto
@ -316,6 +323,9 @@ pre_configure_target() {
export LIBS="$LIBS -lz"
export JSON_BUILDER=$ROOT/$TOOLCHAIN/bin/JsonSchemaBuilder
# autoreconf
BOOTSTRAP_STANDALONE=1 make -f $ROOT/$PKG_BUILD/bootstrap.mk
}
make_target() {
@ -323,8 +333,8 @@ make_target() {
SKIN_DIR="skin.`tolower $SKIN_DEFAULT`"
# setup default skin inside the sources
sed -i -e "s|skin.confluence|$SKIN_DIR|g" $ROOT/$PKG_BUILD/xbmc/settings/Settings.h
sed -i -e "s|skin.confluence|$SKIN_DIR|g" $ROOT/$PKG_BUILD/system/settings/settings.xml
sed -i -e "s|skin.estuary|$SKIN_DIR|g" $ROOT/$PKG_BUILD/xbmc/system.h
sed -i -e "s|skin.estuary|$SKIN_DIR|g" $ROOT/$PKG_BUILD/system/settings/settings.xml
make externals
make kodi.bin
@ -340,9 +350,12 @@ post_makeinstall_target() {
rm -rf $INSTALL/usr/bin/xbmc
rm -rf $INSTALL/usr/bin/xbmc-standalone
rm -rf $INSTALL/usr/lib/kodi/*.cmake
# more binaddons cross compile badness meh
sed -i -e "s:INCLUDE_DIR /usr/include/kodi:INCLUDE_DIR $SYSROOT_PREFIX/usr/include/kodi:g" $SYSROOT_PREFIX/usr/lib/kodi/kodi-config.cmake
rm -rf $INSTALL/usr/share/applications
rm -rf $INSTALL/usr/share/icons
rm -rf $INSTALL/usr/share/kodi/addons/skin.estouchy
rm -rf $INSTALL/usr/share/kodi/addons/service.xbmc.versioncheck
rm -rf $INSTALL/usr/share/kodi/addons/visualization.vortex
rm -rf $INSTALL/usr/share/xsessions
mkdir -p $INSTALL/usr/lib/kodi
cp $PKG_DIR/scripts/kodi-config $INSTALL/usr/lib/kodi
@ -361,12 +374,6 @@ post_makeinstall_target() {
rm -rf $INSTALL/usr/lib/kodi/kodi-xrandr
fi
rm -rf $INSTALL/usr/share/applications
rm -rf $INSTALL/usr/share/icons
rm -rf $INSTALL/usr/share/kodi/addons/service.xbmc.versioncheck
rm -rf $INSTALL/usr/share/kodi/addons/visualization.vortex
rm -rf $INSTALL/usr/share/xsessions
mkdir -p $INSTALL/usr/share/kodi/addons
cp -R $PKG_DIR/config/os.openelec.tv $INSTALL/usr/share/kodi/addons
$SED "s|@OS_VERSION@|$OS_VERSION|g" -i $INSTALL/usr/share/kodi/addons/os.openelec.tv/addon.xml
@ -375,8 +382,8 @@ post_makeinstall_target() {
cp -R $PKG_DIR/config/repository.libreelec.tv $INSTALL/usr/share/kodi/addons
$SED "s|@ADDON_URL@|$ADDON_URL|g" -i $INSTALL/usr/share/kodi/addons/repository.libreelec.tv/addon.xml
mkdir -p $INSTALL/usr/lib/python"$PYTHON_VERSION"/site-packages/kodi
cp -R tools/EventClients/lib/python/* $INSTALL/usr/lib/python"$PYTHON_VERSION"/site-packages/kodi
mkdir -p $INSTALL/usr/lib/python$PYTHON_VERSION/site-packages/kodi
cp -R tools/EventClients/lib/python/* $INSTALL/usr/lib/python$PYTHON_VERSION/site-packages/kodi
mkdir -p $INSTALL/usr/share/kodi/config
cp $PKG_DIR/config/guisettings.xml $INSTALL/usr/share/kodi/config
@ -405,6 +412,19 @@ post_makeinstall_target() {
cp $PKG_DIR/config/appliance.xml $INSTALL/usr/share/kodi/system/settings
fi
# update addon manifest
ADDON_MANIFEST=$INSTALL/usr/share/kodi/system/addon-manifest.xml
xmlstarlet ed -L -d "/addons/addon[text()='service.xbmc.versioncheck']" $ADDON_MANIFEST
xmlstarlet ed -L -d "/addons/addon[text()='skin.estouchy']" $ADDON_MANIFEST
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "peripheral.joystick" $ADDON_MANIFEST
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "os.libreelec.tv" $ADDON_MANIFEST
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "repository.libreelec.tv" $ADDON_MANIFEST
xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "service.libreelec.settings" $ADDON_MANIFEST
# more binaddons cross compile badness meh
sed -i -e "s:INCLUDE_DIR /usr/include/kodi:INCLUDE_DIR $SYSROOT_PREFIX/usr/include/kodi:g" $SYSROOT_PREFIX/usr/lib/kodi/kodi-config.cmake
if [ "$KODI_EXTRA_FONTS" = yes ]; then
mkdir -p $INSTALL/usr/share/kodi/media/Fonts
cp $PKG_DIR/fonts/*.ttf $INSTALL/usr/share/kodi/media/Fonts

View File

@ -121,14 +121,14 @@ index c46cba1..ed3f35f 100644
bool m_AppFocused;
bool m_renderGUI;
diff --git a/xbmc/main/main.cpp b/xbmc/main/main.cpp
diff --git a/xbmc/platform/posix/main.cpp b/xbmc/platform/posix/main.cpp
index 01027f8..4cfb04e 100644
--- a/xbmc/main/main.cpp
+++ b/xbmc/main/main.cpp
--- a/xbmc/platform/posix/main.cpp
+++ b/xbmc/platform/posix/main.cpp
@@ -41,12 +41,27 @@
#include "input/linux/LIRC.h"
#endif
#include "XbmcContext.h"
#include "platform/XbmcContext.h"
+#include "Application.h"
+
+void xbmc_term_handler(int signum)

View File

@ -12,13 +12,13 @@ index 5ac2482..cb84940 100644
--- a/xbmc/windowing/X11/WinSystemX11.h
+++ b/xbmc/windowing/X11/WinSystemX11.h
@@ -54,6 +54,7 @@ public:
virtual bool ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop);
virtual bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays);
virtual void UpdateResolutions();
+ virtual bool CanDoWindowed() { return false; }
virtual int GetNumScreens() { return 1; }
virtual int GetCurrentScreen() { return m_nScreen; }
virtual void ShowOSMouse(bool show);
bool ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop) override;
bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) override;
void UpdateResolutions() override;
+ bool CanDoWindowed() override { return false; }
int GetNumScreens() override { return 1; }
int GetCurrentScreen() override { return m_nScreen; }
void ShowOSMouse(bool show) override;
--
2.5.0

View File

@ -1,17 +1,18 @@
From b70f963a0963735e627b12cf361e4e30d6c2a799 Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Tue, 26 Jan 2016 08:31:52 +0100
Subject: [PATCH] change pulseaudio default device name to Bluetooth Audio
From cd60daafb0c6b1e1de94dbc944bb247a8f810b50 Mon Sep 17 00:00:00 2001
From: fritsch <peter.fruehberger@gmail.com>
Date: Fri, 29 Jan 2016 16:32:06 +0100
Subject: [PATCH] [PATCH] change pulseaudio default device name to Bluetooth
Audio
---
xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp
index 67b7b90..8537163 100644
index 7c669b7..043d0d5 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp
@@ -362,12 +362,14 @@ static void SinkInfoRequestCallback(pa_context *c, const pa_sink_info *i, int eo
@@ -394,13 +394,15 @@ static void SinkInfoRequestCallback(pa_context *c, const pa_sink_info *i, int eo
CAEDeviceInfo defaultDevice;
defaultDevice.m_deviceName = std::string("Default");
defaultDevice.m_displayName = std::string("Default");
@ -21,6 +22,7 @@ index 67b7b90..8537163 100644
defaultDevice.m_channels = CAEChannelInfo(AE_CH_LAYOUT_2_0);
defaultDevice.m_sampleRates.assign(defaultSampleRates, defaultSampleRates + ARRAY_SIZE(defaultSampleRates));
defaultDevice.m_deviceType = AE_DEVTYPE_PCM;
defaultDevice.m_wantsIECPassthrough = true;
sinkStruct->list->push_back(defaultDevice);
+ // OE only wants the default device - so we are done here
+ return;
@ -28,5 +30,5 @@ index 67b7b90..8537163 100644
if (i && i->name)
{
--
1.9.3
2.5.0

View File

@ -0,0 +1,19 @@
diff -Naur a/Makefile.in b/Makefile.in
--- a/Makefile.in 2016-02-25 15:54:54.305799646 +0000
+++ b/Makefile.in 2016-02-25 15:55:30.609990228 +0000
@@ -11,7 +11,6 @@
DVDPCODECS_DIRS= \
lib \
- lib/libdvd
VideoPlayer_ARCHIVES=xbmc/cores/VideoPlayer/VideoPlayer.a \
xbmc/cores/VideoPlayer/DVDCodecs/DVDCodecs.a \
@@ -332,7 +331,6 @@
$(MAKE) -C lib/addons/library.kodi.peripheral
$(MAKE) -C lib/addons/library.xbmc.pvr
dvdpcodecs: dllloader
- $(MAKE) -C lib/libdvd
dvdpextcodecs:

View File

@ -1,40 +1,8 @@
From ae4e63aa165583ef5eaab4759e7af24eeffbb197 Mon Sep 17 00:00:00 2001
From: croniccorey <cronmod.dev@gmail.com>
Date: Sun, 13 Dec 2015 16:37:05 -0500
Subject: [PATCH] KODI: Add support for aarch64 platform
---
addons/library.xbmc.addon/libXBMC_addon.h | 2 ++
configure.ac | 12 ++++++++++++
m4/xbmc_arch.m4 | 2 +-
xbmc/cores/DllLoader/DllLoader.h | 2 +-
xbmc/cores/DllLoader/ldt_keeper.c | 2 +-
xbmc/cores/VideoRenderers/LinuxRendererGL.h | 2 +-
xbmc/linux/PlatformDefs.h | 2 +-
xbmc/threads/Atomics.cpp | 2 +-
xbmc/utils/CPUInfo.cpp | 2 +-
xbmc/utils/MathUtils.h | 3 ++-
10 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/addons/library.xbmc.addon/libXBMC_addon.h b/addons/library.xbmc.addon/libXBMC_addon.h
index c3ed54f..76190b6 100644
--- a/addons/library.xbmc.addon/libXBMC_addon.h
+++ b/addons/library.xbmc.addon/libXBMC_addon.h
@@ -55,6 +55,8 @@ typedef intptr_t ssize_t;
#define ADDON_HELPER_ARCH "powerpc64-linux"
#elif defined(__ARMEL__)
#define ADDON_HELPER_ARCH "arm"
+#elif defined(__aarch64__)
+#define ADDON_HELPER_ARCH "aarch64"
#elif defined(__mips__)
#define ADDON_HELPER_ARCH "mips"
#else
diff --git a/configure.ac b/configure.ac
index c767357..80f3807 100644
--- a/configure.ac
+++ b/configure.ac
@@ -691,6 +691,18 @@ case $host in
use_wayland=no
diff -Naur a/configure.ac b/configure.ac
--- a/configure.ac 2016-02-14 00:19:36.000000000 +0100
+++ b/configure.ac 2016-03-02 09:15:52.504860258 +0100
@@ -641,6 +641,18 @@
use_gl=no
USE_STATIC_FFMPEG=1
;;
+ aarch64*-*-linux-gnu*)
@ -52,11 +20,10 @@ index c767357..80f3807 100644
arm*-*linux-android*)
target_platform=target_android
use_arch="arm"
diff --git a/m4/xbmc_arch.m4 b/m4/xbmc_arch.m4
index 0b66a82..fa08537 100644
--- a/m4/xbmc_arch.m4
+++ b/m4/xbmc_arch.m4
@@ -60,7 +60,7 @@ case $host in
diff -Naur a/m4/xbmc_arch.m4 b/m4/xbmc_arch.m4
--- a/m4/xbmc_arch.m4 2016-02-14 00:19:42.000000000 +0100
+++ b/m4/xbmc_arch.m4 2016-03-02 09:16:33.341943374 +0100
@@ -60,7 +60,7 @@
powerpc64-*-linux-gnu*|powerpc64-*-linux-uclibc*)
AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -D_POWERPC64")
;;
@ -65,95 +32,3 @@ index 0b66a82..fa08537 100644
AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX")
;;
mips*-*-linux-gnu*|mips*-*-linux-uclibc*)
diff --git a/xbmc/cores/DllLoader/DllLoader.h b/xbmc/cores/DllLoader/DllLoader.h
index 070aee6..e669203 100644
--- a/xbmc/cores/DllLoader/DllLoader.h
+++ b/xbmc/cores/DllLoader/DllLoader.h
@@ -23,7 +23,7 @@
#include "coffldr.h"
#include "LibraryLoader.h"
-#if defined(__linux__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__mips__)
+#if defined(__linux__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__mips__) && !defined(__aarch64__)
#define USE_LDT_KEEPER
#include "ldt_keeper.h"
#endif
diff --git a/xbmc/cores/DllLoader/ldt_keeper.c b/xbmc/cores/DllLoader/ldt_keeper.c
index 8af9a86..1c0cdb2 100644
--- a/xbmc/cores/DllLoader/ldt_keeper.c
+++ b/xbmc/cores/DllLoader/ldt_keeper.c
@@ -19,7 +19,7 @@
*/
//#ifndef __powerpc__
-#if !defined(__powerpc__) && !defined(__ppc__) && !defined(__arm__) && !defined(__mips__)
+#if !defined(__powerpc__) && !defined(__ppc__) && !defined(__arm__) && !defined(__mips__) && !defined(__aarch64__)
#include "ldt_keeper.h"
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h
index fcdea8d..5a3e3df 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h
@@ -323,7 +323,7 @@ class CLinuxRendererGL : public CBaseRenderer
inline int NP2( unsigned x ) {
-#if defined(TARGET_POSIX) && !defined(__POWERPC__) && !defined(__PPC__) && !defined(__arm__) && !defined(__mips__)
+#if defined(TARGET_POSIX) && !defined(__POWERPC__) && !defined(__PPC__) && !defined(__arm__) && !defined(__mips__) && !defined(__aarch64__)
// If there are any issues compiling this, just append a ' && 0'
// to the above to make it '#if defined(TARGET_POSIX) && 0'
diff --git a/xbmc/linux/PlatformDefs.h b/xbmc/linux/PlatformDefs.h
index 4350075..2c6fff4 100644
--- a/xbmc/linux/PlatformDefs.h
+++ b/xbmc/linux/PlatformDefs.h
@@ -161,7 +161,7 @@
#define __int64 long long
#define __uint64 unsigned long long
-#if defined(__x86_64__) || defined(__powerpc__) || defined(__ppc__) || defined (__arm__) || defined(__mips__) // should this be powerpc64 only?
+#if defined(__x86_64__) || defined(__powerpc__) || defined(__ppc__) || defined (__arm__) || defined(__mips__) || defined(__aarch64__)
#define __stdcall
#else /* !__x86_64__ */
#define __stdcall __attribute__((__stdcall__))
diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
index 417b2b6..c172867 100644
--- a/xbmc/threads/Atomics.cpp
+++ b/xbmc/threads/Atomics.cpp
@@ -106,7 +106,7 @@ long cas(volatile long *pAddr, long expectedVal, long swapVal)
///////////////////////////////////////////////////////////////////////////
long long cas2(volatile long long* pAddr, long long expectedVal, long long swapVal)
{
-#if defined(__ppc__) || defined(__powerpc__) || defined(__arm__)// PowerPC and ARM
+#if defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || defined(__aarch64__) // PowerPC and ARM
// Not available/required
// Hack to allow compilation
throw "cas2 is not implemented";
diff --git a/xbmc/utils/CPUInfo.cpp b/xbmc/utils/CPUInfo.cpp
index 9e709e7..d7fef37 100644
--- a/xbmc/utils/CPUInfo.cpp
+++ b/xbmc/utils/CPUInfo.cpp
@@ -914,7 +914,7 @@ void CCPUInfo::ReadCPUFeatures()
#endif
#elif defined(LINUX)
// empty on purpose, the implementation is in the constructor
-#elif !defined(__powerpc__) && !defined(__ppc__) && !defined(__arm__)
+#elif !defined(__powerpc__) && !defined(__ppc__) && !defined(__arm__) && !defined(__aarch64__)
m_cpuFeatures |= CPU_FEATURE_MMX;
#elif defined(__powerpc__) || defined(__ppc__)
m_cpuFeatures |= CPU_FEATURE_ALTIVEC;
diff --git a/xbmc/utils/MathUtils.h b/xbmc/utils/MathUtils.h
index 08140b7..249b4dd 100644
--- a/xbmc/utils/MathUtils.h
+++ b/xbmc/utils/MathUtils.h
@@ -35,7 +35,8 @@
#if defined(__ppc__) || \
defined(__powerpc__) || \
defined(__mips__) || \
- defined(__arm__)
+ defined(__arm__) || \
+ defined(__aarch64__)
#define DISABLE_MATHUTILS_ASM_ROUND_INT
#endif

View File

@ -1,7 +1,7 @@
diff -Naur a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp 2016-02-02 23:09:39.000000000 +0100
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp 2016-02-10 07:01:28.941399058 +0100
@@ -1598,7 +1598,7 @@
diff -Naur a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp 2016-02-14 00:19:32.000000000 +0100
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp 2016-03-02 09:36:04.503330833 +0100
@@ -1601,7 +1601,7 @@
am_private->gcodec.param = (void*)(EXTERNAL_PTS | SYNC_OUTSIDE);
break;
}
@ -10,15 +10,3 @@ diff -Naur a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdp
// translate from generic to firemware version dependent
m_dll->codec_init_para(&am_private->gcodec, &am_private->vcodec);
diff -Naur a/xbmc/guilib/GUIFontTTFGL.cpp b/xbmc/guilib/GUIFontTTFGL.cpp
--- a/xbmc/guilib/GUIFontTTFGL.cpp 2016-02-02 23:09:39.000000000 +0100
+++ b/xbmc/guilib/GUIFontTTFGL.cpp 2016-02-10 06:59:49.261293006 +0100
@@ -232,7 +232,7 @@
glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glMatrixModview.Get());
// Bind the buffer to the OpenGL context's GL_ARRAY_BUFFER binding point
- glBindBuffer(GL_ARRAY_BUFFER, (GLuint) m_vertexTrans[i].vertexBuffer->bufferHandle);
+ glBindBuffer(GL_ARRAY_BUFFER, (unsigned long) m_vertexTrans[i].vertexBuffer->bufferHandle);
// Do the actual drawing operation, split into groups of characters no
// larger than the pre-determined size of the element array

View File

@ -1,35 +0,0 @@
From ee014b442eac3e85178c89d04691f4fc73cf89e4 Mon Sep 17 00:00:00 2001
From: "Chris \"Koying\" Browet" <cbro@semperpax.com>
Date: Sun, 18 Oct 2015 11:24:00 +0200
Subject: [PATCH] FIX: Only handle 3D bitmap subs in TAB
3D bitmap subs cannot be detected in SBS, and there is always the option
to play with Kodi 3D disabled
---
xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
index dca4bdf..c9a0008 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
@@ -257,18 +257,13 @@ CDVDOverlay* CDVDOverlayCodecFFmpeg::GetOverlay()
}
RENDER_STEREO_MODE render_stereo_mode = g_graphicsContext.GetStereoMode();
- if (render_stereo_mode != RENDER_STEREO_MODE_OFF)
+ if (render_stereo_mode == RENDER_STEREO_MODE_SPLIT_HORIZONTAL)
{
if (rect.h > m_height / 2)
{
m_height /= 2;
rect.h /= 2;
}
- else if (rect.w > m_width / 2)
- {
- m_width /= 2;
- rect.w /= 2;
- }
}
CDVDOverlayImage* overlay = new CDVDOverlayImage();

View File

@ -1,63 +0,0 @@
diff -Naur kodi-16.0-beta5-19fc4fa/system/keymaps/keyboard.xml kodi-16.0-beta5-19fc4fa.patch/system/keymaps/keyboard.xml
--- kodi-16.0-beta5-19fc4fa/system/keymaps/keyboard.xml 2015-12-15 00:07:12.000000000 +0100
+++ kodi-16.0-beta5-19fc4fa.patch/system/keymaps/keyboard.xml 2016-01-05 06:41:50.857902588 +0100
@@ -113,6 +113,7 @@
<sleep>ActivateWindow(shutdownmenu)</sleep>
<!-- PVR windows -->
<e>ActivateWindow(TVGuide)</e>
+ <epg>ActivateWindow(TVGuide)</epg>
<h>ActivateWindow(TVChannels)</h>
<j>ActivateWindow(RadioChannels)</j>
<k>ActivateWindow(TVRecordings)</k>
@@ -268,6 +269,7 @@
<TVGuide>
<keyboard>
<e>PreviousMenu</e>
+ <epg>PreviousMenu</epg>
</keyboard>
</TVGuide>
<MyFiles>
diff -Naur kodi-16.0-beta5-19fc4fa/xbmc/input/linux/LinuxInputDevices.cpp kodi-16.0-beta5-19fc4fa.patch/xbmc/input/linux/LinuxInputDevices.cpp
--- kodi-16.0-beta5-19fc4fa/xbmc/input/linux/LinuxInputDevices.cpp 2015-12-15 00:07:12.000000000 +0100
+++ kodi-16.0-beta5-19fc4fa.patch/xbmc/input/linux/LinuxInputDevices.cpp 2016-01-05 06:41:13.847846527 +0100
@@ -268,6 +268,7 @@
{ KEY_FILE , XBMCK_LAUNCH_FILE_BROWSER},
{ KEY_SELECT , XBMCK_RETURN },
{ KEY_CONFIG , XBMCK_CONFIG },
+ { KEY_EPG , XBMCK_EPG },
// The Little Black Box Remote Additions
{ 384 , XBMCK_LEFT }, // Red
{ 378 , XBMCK_RIGHT }, // Green
diff -Naur kodi-16.0-beta5-19fc4fa/xbmc/input/XBMC_keysym.h kodi-16.0-beta5-19fc4fa.patch/xbmc/input/XBMC_keysym.h
--- kodi-16.0-beta5-19fc4fa/xbmc/input/XBMC_keysym.h 2015-12-15 00:07:12.000000000 +0100
+++ kodi-16.0-beta5-19fc4fa.patch/xbmc/input/XBMC_keysym.h 2016-01-05 06:41:13.847846527 +0100
@@ -229,6 +229,7 @@
XBMCK_FAVORITES = 0x14d,
XBMCK_HOMEPAGE = 0x14e,
XBMCK_CONFIG = 0x14f,
+ XBMCK_EPG = 0x150,
// Add any other keys here
diff -Naur kodi-16.0-beta5-19fc4fa/xbmc/input/XBMC_keytable.cpp kodi-16.0-beta5-19fc4fa.patch/xbmc/input/XBMC_keytable.cpp
--- kodi-16.0-beta5-19fc4fa/xbmc/input/XBMC_keytable.cpp 2015-12-15 00:07:12.000000000 +0100
+++ kodi-16.0-beta5-19fc4fa.patch/xbmc/input/XBMC_keytable.cpp 2016-01-05 06:41:13.848846528 +0100
@@ -243,6 +243,7 @@
, { XBMCK_FAVORITES, 0, 0, XBMCVK_FAVORITES, "favorites" }
, { XBMCK_HOMEPAGE , 0, 0, XBMCVK_HOMEPAGE, "homepage" }
, { XBMCK_CONFIG, 0, 0, XBMCVK_CONFIG, "config" }
+, { XBMCK_EPG , 0, 0, XBMCVK_EPG, "epg" }
};
static int XBMCKeyTableSize = sizeof(XBMCKeyTable)/sizeof(XBMCKEYTABLE);
diff -Naur kodi-16.0-beta5-19fc4fa/xbmc/input/XBMC_vkeys.h kodi-16.0-beta5-19fc4fa.patch/xbmc/input/XBMC_vkeys.h
--- kodi-16.0-beta5-19fc4fa/xbmc/input/XBMC_vkeys.h 2015-12-15 00:07:12.000000000 +0100
+++ kodi-16.0-beta5-19fc4fa.patch/xbmc/input/XBMC_vkeys.h 2016-01-05 06:41:13.848846528 +0100
@@ -221,6 +221,7 @@
XBMCVK_FAVORITES = 0xE9,
XBMCVK_HOMEPAGE = 0xEA,
XBMCVK_CONFIG = 0xEB,
+ XBMCVK_EPG = 0xEC,
XBMCVK_LAST = 0xFF
} XBMCVKey;

View File

@ -23,7 +23,7 @@
chmod +x /storage/.kodi/addons/*/bin/*
# Nasty hack to work around OE to LE migration - Addons*.db needs to forget all about OE addons
ADDONSDB=$(ls -1 /storage/.kodi/userdata/Database/Addons20.db 2>/dev/null)
ADDONSDB=$(ls -1 /storage/.kodi/userdata/Database/Addons23.db 2>/dev/null)
if [ -n "${ADDONSDB}" ]; then
OEREPO="'repository.openelec.tv'"

View File

@ -16,18 +16,19 @@
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="platform"
PKG_VERSION="081032f"
PKG_NAME="p8-platform"
PKG_VERSION="38343e0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/Pulse-Eight/platform/archive/$PKG_VERSION.tar.gz"
PKG_SOURCE_DIR="platform-$PKG_VERSION*"
PKG_DEPENDS_TARGET="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="multimedia"
PKG_SHORTDESC="platform:"
PKG_LONGDESC="platform:"
PKG_SHORTDESC="Platform support library used by libCEC and binary add-ons for Kodi"
PKG_LONGDESC="Platform support library used by libCEC and binary add-ons for Kodi"
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"

View File

@ -0,0 +1,28 @@
From f91594676d1f75530addd87363ccbc6510efb84e Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Fri, 8 May 2015 11:19:42 +0300
Subject: [PATCH] revert cc badness
this reverts upstream commit 68f8418
---
CMakeLists.txt | 6 ------
1 file changed, 6 deletions(-)
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2016-01-05 23:58:40.000000000 +0100
+++ b/CMakeLists.txt 2016-01-06 01:26:52.004076744 +0100
@@ -22,12 +22,6 @@
src/windows/os-threads.cpp)
endif()
-set(p8-platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/p8-platform")
-IF(WIN32)
- LIST(APPEND p8-platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/p8-platform/windows")
-ENDIF(WIN32)
-set(p8-platform_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-
if(NOT ${CORE_SYSTEM_NAME} STREQUAL "")
if(${CORE_SYSTEM_NAME} STREQUAL "osx" OR ${CORE_SYSTEM_NAME} STREQUAL "ios")
list(APPEND p8-platform_LIBRARIES "-framework CoreVideo -framework IOKit")
--
1.7.10.4

View File

@ -1,30 +0,0 @@
From f91594676d1f75530addd87363ccbc6510efb84e Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Fri, 8 May 2015 11:19:42 +0300
Subject: [PATCH] revert cc badness
this reverts upstream commit 68f8418
---
CMakeLists.txt | 6 ------
1 file changed, 6 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 73fae2e..dc3e1b5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,12 +22,6 @@ if(WIN32)
src/windows/os-threads.cpp)
endif()
-set(platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/platform")
-IF(WIN32)
- LIST(APPEND platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/platform/windows")
-ENDIF(WIN32)
-set(platform_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-
if(NOT ${CORE_SYSTEM_NAME} STREQUAL "")
if(${CORE_SYSTEM_NAME} STREQUAL "darwin" OR ${CORE_SYSTEM_NAME} STREQUAL "ios")
list(APPEND platform_LIBRARIES "-framework CoreVideo -framework IOKit")
--
1.7.10.4

View File

@ -37,7 +37,7 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-silent-rules \
--enable-drm \
--enable-x11 \
--enable-glx \
--disable-egl \
--enable-egl \
--disable-wayland \
--disable-dummy-driver \
--with-drivers-path=/usr/lib/va"

View File

@ -1,117 +0,0 @@
From 01759c5adfb050b1ba0c8a8fc4e20a875a98c0e5 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 10 Aug 2014 18:58:37 +0100
Subject: [PATCH 1/2] confluence: Remove media-overlay.jpg for when video is
backgrounded
---
720p/IncludesBackgroundBuilding.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/720p/IncludesBackgroundBuilding.xml b/720p/IncludesBackgroundBuilding.xml
index cc996da..d6aa595 100644
--- a/720p/IncludesBackgroundBuilding.xml
+++ b/720p/IncludesBackgroundBuilding.xml
@@ -32,7 +32,7 @@
</control>
<control type="image">
<include>BackgroundDimensions</include>
- <texture>special://skin/backgrounds/media-overlay.jpg</texture>
+ <!--texture>special://skin/backgrounds/media-overlay.jpg</texture-->
<visible>[Player.HasVideo + !Skin.HasSetting(ShowBackgroundVideo)] + !Window.IsVisible(TVChannels) + !Window.IsVisible(RadioChannels)</visible>
<include>VisibleFadeEffect</include>
</control>
--
2.5.0
From d99f70c094006144f07bdf739f5847b733030245 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 22 Jul 2013 23:19:15 +0100
Subject: [PATCH 2/2] [confluence] Use animated gif as a cheaper working
spinner
---
720p/DialogBusy.xml | 4 ++--
media/busy.gif | Bin 0 -> 3199 bytes
2 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 media/busy.gif
diff --git a/720p/DialogBusy.xml b/720p/DialogBusy.xml
index b5df91f..8e84fed 100644
--- a/720p/DialogBusy.xml
+++ b/720p/DialogBusy.xml
@@ -25,9 +25,9 @@
<top>20</top>
<width>32</width>
<height>32</height>
- <texture>busy.png</texture>
+ <texture>busy.gif</texture>
<aspectratio>keep</aspectratio>
- <animation effect="rotate" start="0" end="360" center="36,36" time="900" loop="true" condition="true">conditional</animation>
+ <!--animation effect="rotate" start="0" end="360" center="36,36" time="900" loop="true" condition="true">conditional</animation-->
</control>
<control type="label">
<description>Busy label</description>
diff --git a/media/busy.gif b/media/busy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f856ed0b44fdc7e9b0520c7e39a9bebc04136897
GIT binary patch
literal 3199
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
literal 0
HcmV?d00001
--
2.5.0

File diff suppressed because it is too large Load Diff

View File

@ -1,117 +0,0 @@
From 01759c5adfb050b1ba0c8a8fc4e20a875a98c0e5 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 10 Aug 2014 18:58:37 +0100
Subject: [PATCH 1/2] confluence: Remove media-overlay.jpg for when video is
backgrounded
---
720p/IncludesBackgroundBuilding.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/720p/IncludesBackgroundBuilding.xml b/720p/IncludesBackgroundBuilding.xml
index cc996da..d6aa595 100644
--- a/720p/IncludesBackgroundBuilding.xml
+++ b/720p/IncludesBackgroundBuilding.xml
@@ -32,7 +32,7 @@
</control>
<control type="image">
<include>BackgroundDimensions</include>
- <texture>special://skin/backgrounds/media-overlay.jpg</texture>
+ <!--texture>special://skin/backgrounds/media-overlay.jpg</texture-->
<visible>[Player.HasVideo + !Skin.HasSetting(ShowBackgroundVideo)] + !Window.IsVisible(TVChannels) + !Window.IsVisible(RadioChannels)</visible>
<include>VisibleFadeEffect</include>
</control>
--
2.5.0
From d99f70c094006144f07bdf739f5847b733030245 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 22 Jul 2013 23:19:15 +0100
Subject: [PATCH 2/2] [confluence] Use animated gif as a cheaper working
spinner
---
720p/DialogBusy.xml | 4 ++--
media/busy.gif | Bin 0 -> 3199 bytes
2 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 media/busy.gif
diff --git a/720p/DialogBusy.xml b/720p/DialogBusy.xml
index b5df91f..8e84fed 100644
--- a/720p/DialogBusy.xml
+++ b/720p/DialogBusy.xml
@@ -25,9 +25,9 @@
<top>20</top>
<width>32</width>
<height>32</height>
- <texture>busy.png</texture>
+ <texture>busy.gif</texture>
<aspectratio>keep</aspectratio>
- <animation effect="rotate" start="0" end="360" center="36,36" time="900" loop="true" condition="true">conditional</animation>
+ <!--animation effect="rotate" start="0" end="360" center="36,36" time="900" loop="true" condition="true">conditional</animation-->
</control>
<control type="label">
<description>Busy label</description>
diff --git a/media/busy.gif b/media/busy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f856ed0b44fdc7e9b0520c7e39a9bebc04136897
GIT binary patch
literal 3199
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
literal 0
HcmV?d00001
--
2.5.0

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,17 @@
From 5e5453322e71c16b8b96b471a9e5c32b96d6b1af Mon Sep 17 00:00:00 2001
From fde3d3d609e570aa3a8691a4e66e07dce1c80b25 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Wed, 16 Apr 2014 22:02:01 +0300
Subject: [PATCH 01/17] Fix ALSA sound output for Amlogic-based devices.
Subject: [PATCH] [aml] Fix ALSA sound output for Amlogic-based devices.
---
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 19 +++++++++++++++++++
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
index df50940..9f80c06 100644
index fbccce0..6bf2c53 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
@@ -83,6 +83,17 @@ static unsigned int ALSASampleRateList[] =
@@ -84,6 +84,17 @@ static unsigned int ALSASampleRateList[] =
0
};
@ -29,7 +29,7 @@ index df50940..9f80c06 100644
CAESinkALSA::CAESinkALSA() :
m_bufferSize(0),
m_formatSampleRateMul(0.0),
@@ -741,12 +752,20 @@ bool CAESinkALSA::InitializeHW(const ALSAConfig &inconfig, ALSAConfig &outconfig
@@ -748,12 +759,20 @@ bool CAESinkALSA::InitializeHW(const ALSAConfig &inconfig, ALSAConfig &outconfig
*/
periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 20);
bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) sampleRate / 5);
@ -50,6 +50,3 @@ index df50940..9f80c06 100644
CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Request: periodSize %lu, bufferSize %lu", periodSize, bufferSize);
--
1.7.10.4

View File

@ -1,7 +1,7 @@
From d81c2be6e702206b7c00e25be4ee0c0750f1b84d Mon Sep 17 00:00:00 2001
From 0367076d263846832cff68052f3de362f27e5bc6 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Mon, 8 Sep 2014 23:29:40 +0300
Subject: [PATCH 08/17] Reorder libraries in configure script to prevent
Subject: [PATCH] [wetek] Reorder libraries in configure script to prevent
linker errors when linking with libsmbclient
Place libsmbclient before all other libraries to prevent linker errors when linking
@ -9,14 +9,14 @@ with libsmbclient if the libc that is currently used doesn't contain some functi
such as dn_expand (which are often included in libc), but are actually included in
libresolv.
---
configure.ac | 2 +-
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index ff4022f..079fa27 100644
index fbe2766..c668729 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1475,7 +1475,7 @@ fi
@@ -1425,7 +1425,7 @@ fi
# samba
if test "x$use_samba" != "xno"; then
PKG_CHECK_MODULES([SAMBA], [smbclient],
@ -25,6 +25,3 @@ index ff4022f..079fa27 100644
[AC_CHECK_LIB([smbclient], [main],,
use_samba=no;AC_MSG_ERROR($missing_library))
USE_LIBSMBCLIENT=0
--
1.7.10.4

View File

@ -1,22 +1,18 @@
From a98954cef067010982c83568dfba45da0d43fe4d Mon Sep 17 00:00:00 2001
From 813e6f31c8006190615cbf8ab031db2362bcf553 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Fri, 19 Sep 2014 01:55:12 +0300
Subject: [PATCH 09/17] [aml] Change the sample rates that are supported by
ALSA but unsupported by HDMI to the closest supported
value
Subject: [PATCH] [aml] Change the sample rates that are supported by ALSA but
unsupported by HDMI to the closest supported value
Conflicts:
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
---
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 20 ++++++++++++++++++++
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
index 9f80c06..18303f8 100644
index 6bf2c53..32ab888 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
@@ -666,6 +666,26 @@ bool CAESinkALSA::InitializeHW(const ALSAConfig &inconfig, ALSAConfig &outconfig
@@ -673,6 +673,26 @@ bool CAESinkALSA::InitializeHW(const ALSAConfig &inconfig, ALSAConfig &outconfig
snd_pcm_hw_params_set_access(m_pcm, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
unsigned int sampleRate = inconfig.sampleRate;
@ -43,6 +39,3 @@ index 9f80c06..18303f8 100644
snd_pcm_hw_params_set_rate_near (m_pcm, hw_params, &sampleRate, NULL);
unsigned int channelCount = inconfig.channels;
--
1.7.10.4

View File

@ -1,20 +1,20 @@
From 554f4a769d67155cbdf6f45ba256b5700baa65c1 Mon Sep 17 00:00:00 2001
From b97f9b069a98984109829badcdf8ead92a29ee38 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Sat, 20 Sep 2014 04:43:52 +0300
Subject: [PATCH 10/17] [aml] Fill audio packets completely when resampling to
Subject: [PATCH] [aml] Fill audio packets completely when resampling to
prevent 'audio data unaligned' kernel warnings
---
xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp | 4 ++++
xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp
index 3b0a015..ef431a4 100644
index dffded7..2f9dc47 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp
@@ -143,7 +143,11 @@ CActiveAEBufferPoolResample::CActiveAEBufferPoolResample(AEAudioFormat inputForm
if (AE_IS_RAW(m_inputFormat.m_dataFormat))
m_inputFormat.m_dataFormat = AE_FMT_S16NE;
@@ -157,7 +157,11 @@ CActiveAEBufferPoolResample::CActiveAEBufferPoolResample(AEAudioFormat inputForm
m_inputFormat.m_channelLayout += AE_CH_FC;
}
m_resampler = NULL;
+#ifdef HAS_LIBAMCODEC
+ m_fillPackets = true;
@ -24,6 +24,3 @@ index 3b0a015..ef431a4 100644
m_drain = false;
m_empty = true;
m_procSample = NULL;
--
1.7.10.4

View File

@ -1,120 +0,0 @@
From e065d31b7bac0a3fffc0f05922613090cc573709 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Sun, 21 Sep 2014 17:17:14 +0300
Subject: [PATCH 11/17] [aml] Use fpsrate and fpsscale instead of rfpsrate and
rfpsscale to detect framerate
---
xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp | 12 ++-----
.../DVDCodecs/Video/DVDVideoCodecAmlogic.cpp | 38 +++++++++-----------
2 files changed, 20 insertions(+), 30 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
index 26db4a1..fcdad19 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
@@ -1465,14 +1465,8 @@ bool CAMLCodec::OpenDecoder(CDVDStreamInfo &hints)
am_private->video_ratio64 = ((int64_t)video_ratio.num << 32) | video_ratio.den;
// handle video rate
- if (hints.rfpsrate > 0 && hints.rfpsscale != 0)
+ if (hints.fpsrate > 0 && hints.fpsscale != 0)
{
- // check ffmpeg r_frame_rate 1st
- am_private->video_rate = 0.5 + (float)UNIT_FREQ * hints.rfpsscale / hints.rfpsrate;
- }
- else if (hints.fpsrate > 0 && hints.fpsscale != 0)
- {
- // then ffmpeg avg_frame_rate next
am_private->video_rate = 0.5 + (float)UNIT_FREQ * hints.fpsscale / hints.fpsrate;
}
@@ -1545,8 +1539,8 @@ bool CAMLCodec::OpenDecoder(CDVDStreamInfo &hints)
CLog::Log(LOGDEBUG, "CAMLCodec::OpenDecoder "
"hints.width(%d), hints.height(%d), hints.codec(%d), hints.codec_tag(%d), hints.pid(%d)",
hints.width, hints.height, hints.codec, hints.codec_tag, hints.pid);
- CLog::Log(LOGDEBUG, "CAMLCodec::OpenDecoder hints.fpsrate(%d), hints.fpsscale(%d), hints.rfpsrate(%d), hints.rfpsscale(%d), video_rate(%d)",
- hints.fpsrate, hints.fpsscale, hints.rfpsrate, hints.rfpsscale, am_private->video_rate);
+ CLog::Log(LOGDEBUG, "CAMLCodec::OpenDecoder hints.fpsrate(%d), hints.fpsscale(%d), video_rate(%d)",
+ hints.fpsrate, hints.fpsscale, am_private->video_rate);
CLog::Log(LOGDEBUG, "CAMLCodec::OpenDecoder hints.aspect(%f), video_ratio.num(%d), video_ratio.den(%d)",
hints.aspect, video_ratio.num, video_ratio.den);
CLog::Log(LOGDEBUG, "CAMLCodec::OpenDecoder hints.orientation(%d), hints.forced_aspect(%d), hints.extrasize(%d)",
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp
index 24c1ab9..960aae1 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecAmlogic.cpp
@@ -74,9 +74,7 @@ bool CDVDVideoCodecAmlogic::Open(CDVDStreamInfo &hints, CDVDCodecOptions &option
m_mpeg2_sequence->width = m_hints.width;
m_mpeg2_sequence->height = m_hints.height;
m_mpeg2_sequence->ratio = m_hints.aspect;
- if (m_hints.rfpsrate > 0 && m_hints.rfpsscale != 0)
- m_mpeg2_sequence->rate = (float)m_hints.rfpsrate / m_hints.rfpsscale;
- else if (m_hints.fpsrate > 0 && m_hints.fpsscale != 0)
+ if (m_hints.fpsrate > 0 && m_hints.fpsscale != 0)
m_mpeg2_sequence->rate = (float)m_hints.fpsrate / m_hints.fpsscale;
else
m_mpeg2_sequence->rate = 1.0;
@@ -374,43 +372,41 @@ void CDVDVideoCodecAmlogic::FrameRateTracking(uint8_t *pData, int iSize, double
{
default:
case 0x01:
- m_hints.rfpsrate = 24000.0;
- m_hints.rfpsscale = 1001.0;
+ m_hints.fpsrate = 24000.0;
+ m_hints.fpsscale = 1001.0;
break;
case 0x02:
- m_hints.rfpsrate = 24000.0;
- m_hints.rfpsscale = 1000.0;
+ m_hints.fpsrate = 24000.0;
+ m_hints.fpsscale = 1000.0;
break;
case 0x03:
- m_hints.rfpsrate = 25000.0;
- m_hints.rfpsscale = 1000.0;
+ m_hints.fpsrate = 25000.0;
+ m_hints.fpsscale = 1000.0;
break;
case 0x04:
- m_hints.rfpsrate = 30000.0;
- m_hints.rfpsscale = 1001.0;
+ m_hints.fpsrate = 30000.0;
+ m_hints.fpsscale = 1001.0;
break;
case 0x05:
- m_hints.rfpsrate = 30000.0;
- m_hints.rfpsscale = 1000.0;
+ m_hints.fpsrate = 30000.0;
+ m_hints.fpsscale = 1000.0;
break;
case 0x06:
- m_hints.rfpsrate = 50000.0;
- m_hints.rfpsscale = 1000.0;
+ m_hints.fpsrate = 50000.0;
+ m_hints.fpsscale = 1000.0;
break;
case 0x07:
- m_hints.rfpsrate = 60000.0;
- m_hints.rfpsscale = 1001.0;
+ m_hints.fpsrate = 60000.0;
+ m_hints.fpsscale = 1001.0;
break;
case 0x08:
- m_hints.rfpsrate = 60000.0;
- m_hints.rfpsscale = 1000.0;
+ m_hints.fpsrate = 60000.0;
+ m_hints.fpsscale = 1000.0;
break;
}
m_hints.width = m_mpeg2_sequence->width;
m_hints.height = m_mpeg2_sequence->height;
m_hints.aspect = m_mpeg2_sequence->ratio;
- m_hints.fpsrate = m_hints.rfpsrate;
- m_hints.fpsscale = m_hints.rfpsscale;
}
return;
}
--
1.7.10.4

View File

@ -1,143 +0,0 @@
From a9ff99a36f9e6cea70f7274312a127563af15dc5 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Sun, 21 Sep 2014 17:20:25 +0300
Subject: [PATCH 12/17] Fix incorrect frame rate detection of some videos with
variable frame rate.
Use FFMPEG's r_frame_rate, if it as valid, as a video stream frame rate, otherwise use avg_frame_rate.
Also remove CDVDStreamInfo.rfpsscale, CDVDStreamInfo.rfpsrate, CDemuxStreamVideo.irFpsScale and CDemuxStreamVideo.irFpsRate,
they are not needed anymore.
---
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h | 4 ---
.../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 29 ++++++++--------------
xbmc/cores/dvdplayer/DVDStreamInfo.cpp | 8 ------
xbmc/cores/dvdplayer/DVDStreamInfo.h | 2 --
4 files changed, 10 insertions(+), 33 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h
index d69991e..faf3c9b 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h
@@ -151,8 +151,6 @@ public:
{
iFpsScale = 0;
iFpsRate = 0;
- irFpsScale = 0;
- irFpsRate = 0;
iHeight = 0;
iWidth = 0;
fAspect = 0.0;
@@ -167,8 +165,6 @@ public:
virtual ~CDemuxStreamVideo() {}
int iFpsScale; // scale of 1000 and a rate of 29970 will result in 29.97 fps
int iFpsRate;
- int irFpsScale;
- int irFpsRate;
int iHeight; // height of the stream reported by the demuxer
int iWidth; // width of the stream reported by the demuxer
float fAspect; // display aspect of stream
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index 1315117..5367b28 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -1125,34 +1125,25 @@ CDemuxStream* CDVDDemuxFFmpeg::AddStream(int iId)
#else
AVRational r_frame_rate = pStream->r_frame_rate;
#endif
+ int rFrameRate = 0;
+ if (r_frame_rate.den && r_frame_rate.num)
+ rFrameRate = r_frame_rate.num / r_frame_rate.den;
+ bool rFrameRateValid = rFrameRate >= 5 && rFrameRate <= 100;
- //average fps is more accurate for mkv files
- if (m_bMatroska && pStream->avg_frame_rate.den && pStream->avg_frame_rate.num)
- {
- st->iFpsRate = pStream->avg_frame_rate.num;
- st->iFpsScale = pStream->avg_frame_rate.den;
- }
- else if(r_frame_rate.den && r_frame_rate.num)
+ if (rFrameRateValid)
{
st->iFpsRate = r_frame_rate.num;
st->iFpsScale = r_frame_rate.den;
}
- else
- {
- st->iFpsRate = 0;
- st->iFpsScale = 0;
- }
-
- // added for aml hw decoder, mkv frame-rate can be wrong.
- if (r_frame_rate.den && r_frame_rate.num)
+ else if(pStream->avg_frame_rate.den && pStream->avg_frame_rate.num)
{
- st->irFpsRate = r_frame_rate.num;
- st->irFpsScale = r_frame_rate.den;
+ st->iFpsRate = pStream->avg_frame_rate.num;
+ st->iFpsScale = pStream->avg_frame_rate.den;
}
else
{
- st->irFpsRate = 0;
- st->irFpsScale = 0;
+ st->iFpsRate = 0;
+ st->iFpsScale = 0;
}
if (pStream->codec_info_nb_frames > 0
diff --git a/xbmc/cores/dvdplayer/DVDStreamInfo.cpp b/xbmc/cores/dvdplayer/DVDStreamInfo.cpp
index c1dbd85..03facbe 100644
--- a/xbmc/cores/dvdplayer/DVDStreamInfo.cpp
+++ b/xbmc/cores/dvdplayer/DVDStreamInfo.cpp
@@ -52,8 +52,6 @@ void CDVDStreamInfo::Clear()
fpsscale = 0;
fpsrate = 0;
- rfpsscale= 0;
- rfpsrate = 0;
height = 0;
width = 0;
aspect = 0.0;
@@ -97,8 +95,6 @@ bool CDVDStreamInfo::Equal(const CDVDStreamInfo& right, bool withextradata)
// VIDEO
if( fpsscale != right.fpsscale
|| fpsrate != right.fpsrate
- || rfpsscale!= right.rfpsscale
- || rfpsrate != right.rfpsrate
|| height != right.height
|| width != right.width
|| stills != right.stills
@@ -159,8 +155,6 @@ void CDVDStreamInfo::Assign(const CDVDStreamInfo& right, bool withextradata)
// VIDEO
fpsscale = right.fpsscale;
fpsrate = right.fpsrate;
- rfpsscale= right.rfpsscale;
- rfpsrate = right.rfpsrate;
height = right.height;
width = right.width;
aspect = right.aspect;
@@ -220,8 +214,6 @@ void CDVDStreamInfo::Assign(const CDemuxStream& right, bool withextradata)
const CDemuxStreamVideo *stream = static_cast<const CDemuxStreamVideo*>(&right);
fpsscale = stream->iFpsScale;
fpsrate = stream->iFpsRate;
- rfpsscale = stream->irFpsScale;
- rfpsrate = stream->irFpsRate;
height = stream->iHeight;
width = stream->iWidth;
aspect = stream->fAspect;
diff --git a/xbmc/cores/dvdplayer/DVDStreamInfo.h b/xbmc/cores/dvdplayer/DVDStreamInfo.h
index c0e22a2..8953ff3 100644
--- a/xbmc/cores/dvdplayer/DVDStreamInfo.h
+++ b/xbmc/cores/dvdplayer/DVDStreamInfo.h
@@ -58,8 +58,6 @@ public:
// VIDEO
int fpsscale; // scale of 1001 and a rate of 60000 will result in 59.94 fps
int fpsrate;
- int rfpsscale;
- int rfpsrate;
int height; // height of the stream reported by the demuxer
int width; // width of the stream reported by the demuxer
float aspect; // display aspect as reported by demuxer
--
2.1.4

View File

@ -1,19 +1,19 @@
From 6aa16d7fe7e6dbe95bdca8069a16d2aa415adf37 Mon Sep 17 00:00:00 2001
From a2adae2d6a5036b2af02448e6803175a02f368d1 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Tue, 3 Feb 2015 17:58:19 +0100
Subject: [PATCH 16/17] Disable deinterlacing for HD content while video is
being played in a window to prevent screen blinking in 1080p50/60hz display
modes
Subject: [PATCH] [aml] Disable deinterlacing for HD content while video is
being played in a window
... to prevent screen blinking in 1080p50/60hz display modes
---
xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp | 5 +++++
xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
index 2fad224..74804de 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
@@ -2261,6 +2261,11 @@ void CAMLCodec::SetVideoRect(const CRect &SrcRect, const CRect &DestRect)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
index 5dc6592..2103042 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
@@ -2259,6 +2259,11 @@ void CAMLCodec::SetVideoRect(const CRect &SrcRect, const CRect &DestRect)
CLog::Log(LOGDEBUG, "CAMLCodec::SetVideoRect:m_stereo_view(%d)", m_stereo_view);
#endif
@ -25,6 +25,3 @@ index 2fad224..74804de 100644
// goofy 0/1 based difference in aml axis coordinates.
// fix them.
dst_rect.x2--;
--
2.1.4

View File

@ -1,18 +1,18 @@
From 7b1c6ca4cb5bf3310cbfe3b007063439be301b6b Mon Sep 17 00:00:00 2001
From 3e6754f46448b9718d57b62e8ca122e6217d0b22 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Mon, 2 Mar 2015 09:48:14 +0100
Subject: [PATCH 18/26] [aml] Fix stuttering during a playback of a video with
23.976 FPS
Subject: [PATCH] [aml] Fix stuttering during a playback of a video with 23.976
FPS
---
xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp | 2 +-
xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
index bf4c958..8d49de8 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
@@ -1932,7 +1932,7 @@ void CAMLCodec::Process()
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
index 2103042..edf8f8a 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/AMLCodec.cpp
@@ -1974,7 +1974,7 @@ void CAMLCodec::Process()
double error = app_pts - (double)pts_video/PTS_FREQ;
double abs_error = fabs(error);
@ -21,6 +21,3 @@ index bf4c958..8d49de8 100644
{
//CLog::Log(LOGDEBUG, "CAMLCodec::Process pts diff = %f", error);
if (abs_error > 0.150)
--
1.7.10.4

View File

@ -0,0 +1,27 @@
From 11435d47a5351c55ef12661baf1adb167da513ef Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Tue, 30 Jun 2015 11:19:57 +0200
Subject: [PATCH] [aml] Ugly workaround to show DTS/AC3 caps
... but don't run into multi channel issues as we can only open 2 pcm channels
---
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
index 32ab888..d4eb0be 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
@@ -1336,6 +1336,12 @@ void CAESinkALSA::EnumerateDevicesEx(AEDeviceInfoList &list, bool force)
AEDeviceType CAESinkALSA::AEDeviceTypeFromName(const std::string &name)
{
+#ifdef HAS_LIBAMCODEC
+ // ugly workaround to show DTS / AC3 caps
+ // but don't run into multi channel issues
+ // as we can only open 2 pcm channels
+ return AE_DEVTYPE_IEC958;
+#endif
if (name.substr(0, 4) == "hdmi")
return AE_DEVTYPE_HDMI;
else if (name.substr(0, 6) == "iec958" || name.substr(0, 5) == "spdif")

View File

@ -0,0 +1,214 @@
From c90b4c2ced393524e81c0ec321afa7ec94f3b806 Mon Sep 17 00:00:00 2001
From: Alex Deryskyba <alex@codesnake.com>
Date: Wed, 1 Jul 2015 23:37:11 +0200
Subject: [PATCH] [aml] Add support for 4k resolutions
---
xbmc/utils/AMLUtils.cpp | 16 +++---
xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp | 81 ++++++++++++++++++++++-------
xbmc/windowing/egl/EGLNativeTypeAmlogic.h | 2 +
3 files changed, 73 insertions(+), 26 deletions(-)
diff --git a/xbmc/utils/AMLUtils.cpp b/xbmc/utils/AMLUtils.cpp
index 1b54435..05f2cd0 100644
--- a/xbmc/utils/AMLUtils.cpp
+++ b/xbmc/utils/AMLUtils.cpp
@@ -449,8 +449,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
}
else if (StringUtils::EqualsNoCase(fromMode, "4k2ksmpte") || StringUtils::EqualsNoCase(fromMode, "smpte24hz"))
{
- res->iWidth = 1920;
- res->iHeight= 1080;
+ res->iWidth = 4096;
+ res->iHeight= 2160;
res->iScreenWidth = 4096;
res->iScreenHeight= 2160;
res->fRefreshRate = 24;
@@ -467,8 +467,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
}
else if (StringUtils::EqualsNoCase(fromMode, "4k2k24hz") || StringUtils::EqualsNoCase(fromMode, "2160p24hz"))
{
- res->iWidth = 1920;
- res->iHeight= 1080;
+ res->iWidth = 3840;
+ res->iHeight= 2160;
res->iScreenWidth = 3840;
res->iScreenHeight= 2160;
res->fRefreshRate = 24;
@@ -476,8 +476,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
}
else if (StringUtils::EqualsNoCase(fromMode, "4k2k25hz") || StringUtils::EqualsNoCase(fromMode, "2160p25hz"))
{
- res->iWidth = 1920;
- res->iHeight= 1080;
+ res->iWidth = 3840;
+ res->iHeight= 2160;
res->iScreenWidth = 3840;
res->iScreenHeight= 2160;
res->fRefreshRate = 25;
@@ -494,8 +494,8 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res)
}
else if (StringUtils::EqualsNoCase(fromMode, "4k2k30hz") || StringUtils::EqualsNoCase(fromMode, "2160p30hz"))
{
- res->iWidth = 1920;
- res->iHeight= 1080;
+ res->iWidth = 3840;
+ res->iHeight= 2160;
res->iScreenWidth = 3840;
res->iScreenHeight= 2160;
res->fRefreshRate = 30;
diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
index 21256ef..2103f0b 100644
--- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
+++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
@@ -65,7 +65,22 @@ void CEGLNativeTypeAmlogic::Initialize()
{
aml_permissions();
DisableFreeScale();
+ GetMaxResolution(m_maxResolution);
}
+
+void CEGLNativeTypeAmlogic::GetMaxResolution(RESOLUTION_INFO &maxResolution)
+{
+ std::vector<RESOLUTION_INFO> resolutions;
+ ProbeResolutions(resolutions);
+
+ maxResolution = {0};
+ for (size_t i = 0; i < resolutions.size(); i++)
+ {
+ if (resolutions[i].iScreenWidth > maxResolution.iScreenWidth || resolutions[i].iScreenHeight > maxResolution.iScreenHeight)
+ maxResolution = resolutions[i];
+ }
+}
+
void CEGLNativeTypeAmlogic::Destroy()
{
return;
@@ -84,8 +99,8 @@ bool CEGLNativeTypeAmlogic::CreateNativeWindow()
if (!nativeWindow)
return false;
- nativeWindow->width = 1920;
- nativeWindow->height = 1080;
+ nativeWindow->width = m_maxResolution.iScreenWidth;
+ nativeWindow->height = m_maxResolution.iScreenHeight;
m_nativeWindow = nativeWindow;
SetFramebufferResolution(nativeWindow->width, nativeWindow->height);
@@ -142,48 +157,78 @@ bool CEGLNativeTypeAmlogic::SetNativeResolution(const RESOLUTION_INFO &res)
}
#endif
- switch((int)(0.5 + res.fRefreshRate))
+ switch((int)(res.fRefreshRate*10))
{
default:
- case 60:
+ case 600:
switch(res.iScreenWidth)
{
default:
case 1280:
- SetDisplayResolution("720p");
+ return SetDisplayResolution("720p");
break;
case 1920:
if (res.dwFlags & D3DPRESENTFLAG_INTERLACED)
- SetDisplayResolution("1080i");
+ return SetDisplayResolution("1080i");
else
- SetDisplayResolution("1080p");
+ return SetDisplayResolution("1080p");
break;
}
break;
- case 50:
+ case 500:
switch(res.iScreenWidth)
{
default:
case 1280:
- SetDisplayResolution("720p50hz");
+ return SetDisplayResolution("720p50hz");
break;
case 1920:
if (res.dwFlags & D3DPRESENTFLAG_INTERLACED)
- SetDisplayResolution("1080i50hz");
+ return SetDisplayResolution("1080i50hz");
else
- SetDisplayResolution("1080p50hz");
+ return SetDisplayResolution("1080p50hz");
break;
}
break;
- case 30:
- SetDisplayResolution("1080p30hz");
+ case 300:
+ switch(res.iScreenWidth)
+ {
+ case 3840:
+ return SetDisplayResolution("4k2k30hz");
+ break;
+ default:
+ return SetDisplayResolution("1080p30hz");
+ break;
+ }
break;
- case 24:
- SetDisplayResolution("1080p24hz");
+ case 250:
+ switch(res.iScreenWidth)
+ {
+ case 3840:
+ return SetDisplayResolution("4k2k25hz");
+ break;
+ default:
+ return SetDisplayResolution("1080p25hz");
+ break;
+ }
+ break;
+ case 240:
+ switch(res.iScreenWidth)
+ {
+ case 3840:
+ return SetDisplayResolution("4k2k24hz");
+ break;
+ case 4096:
+ return SetDisplayResolution("4k2ksmpte");
+ break;
+ default:
+ return SetDisplayResolution("1080p24hz");
+ break;
+ }
break;
}
- return true;
+ return false;
}
bool CEGLNativeTypeAmlogic::ProbeResolutions(std::vector<RESOLUTION_INFO> &resolutions)
@@ -280,8 +325,8 @@ void CEGLNativeTypeAmlogic::SetFramebufferResolution(int width, int height) cons
{
vinfo.xres = width;
vinfo.yres = height;
- vinfo.xres_virtual = 1920;
- vinfo.yres_virtual = 2160;
+ vinfo.xres_virtual = m_maxResolution.iScreenWidth;
+ vinfo.yres_virtual = m_maxResolution.iScreenHeight * 2;
vinfo.bits_per_pixel = 32;
vinfo.activate = FB_ACTIVATE_ALL;
ioctl(fd0, FBIOPUT_VSCREENINFO, &vinfo);
diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.h b/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
index 6867c38..9ca41d4 100644
--- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
+++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
@@ -55,6 +55,8 @@ class CEGLNativeTypeAmlogic : public CEGLNativeType
private:
void SetFramebufferResolution(const RESOLUTION_INFO &res) const;
void SetFramebufferResolution(int width, int height) const;
+ void GetMaxResolution(RESOLUTION_INFO &maxResolution);
std::string m_framebuffer_name;
+ RESOLUTION_INFO m_maxResolution;
};

View File

@ -1,8 +1,17 @@
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
index 8a97889..78506b1 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
@@ -27,8 +27,6 @@ endif
From 42e367deff4886e825dc77606c76ee9835d6ee9e Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Sat, 7 Nov 2015 16:24:58 +0200
Subject: [PATCH] [wetek] fix compiler badness when compiling with amcodec
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in | 2 --
1 file changed, 2 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in b/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in
index 7880c06..bd083b7 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/Makefile.in
@@ -25,8 +25,6 @@ endif
ifeq (@USE_LIBAMCODEC@,1)
SRCS += AMLCodec.cpp
SRCS += DVDVideoCodecAmlogic.cpp

View File

@ -1,8 +1,18 @@
From 55b3da7e97f6dc1e99724782253c35fe4c8b7c5a Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Sat, 7 Nov 2015 16:25:44 +0200
Subject: [PATCH] [wetek] perform suspend instead of powerdown
---
system/keymaps/keyboard.xml | 2 +-
xbmc/powermanagement/linux/LogindUPowerSyscall.cpp | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/system/keymaps/keyboard.xml b/system/keymaps/keyboard.xml
index 45682a2..b8ce91b 100644
index 9833cff..0ce105e 100644
--- a/system/keymaps/keyboard.xml
+++ b/system/keymaps/keyboard.xml
@@ -96,7 +96,7 @@
@@ -91,7 +91,7 @@
<backslash>ToggleFullScreen</backslash>
<home>FirstPage</home>
<end>LastPage</end>
@ -10,12 +20,12 @@ index 45682a2..b8ce91b 100644
+ <power>XBMC.Powerdown()</power>
<sleep>ActivateWindow(shutdownmenu)</sleep>
<!-- PVR windows -->
<e>XBMC.ActivateWindowAndFocus(MyPVR, 31,0, 10,0)</e>
<e>ActivateWindow(TVGuide)</e>
diff --git a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
index 5a97fe6..369e790 100644
index 4e5bcc6..ad5847d 100644
--- a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
+++ b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp
@@ -52,7 +52,7 @@ CLogindUPowerSyscall::CLogindUPowerSyscall()
@@ -53,7 +53,7 @@ CLogindUPowerSyscall::CLogindUPowerSyscall()
m_canPowerdown = LogindCheckCapability("CanPowerOff");
m_canReboot = LogindCheckCapability("CanReboot");
m_canHibernate = LogindCheckCapability("CanHibernate");
@ -24,7 +34,7 @@ index 5a97fe6..369e790 100644
InhibitDelayLock();
@@ -97,7 +97,7 @@ CLogindUPowerSyscall::~CLogindUPowerSyscall()
@@ -98,7 +98,7 @@ CLogindUPowerSyscall::~CLogindUPowerSyscall()
bool CLogindUPowerSyscall::Powerdown()
{

View File

@ -1,22 +1,22 @@
From a19578679f63520b0d8e9f589b82699076aff6ed Mon Sep 17 00:00:00 2001
From: "Chris \"Koying\" Browet" <cbro@semperpax.com>
From 0cdf5c043e783e8d956c5d59be8a9ec13a53fee3 Mon Sep 17 00:00:00 2001
From: "Chris \\\"Koying\\\" Browet" <cbro@semperpax.com>
Date: Fri, 19 Dec 2014 12:30:04 +0100
Subject: [PATCH] FIX: [renderer] hide meaningless skips from users
Subject: [PATCH] [aml] FIX: [renderer] hide meaningless skips from users
---
xbmc/cores/VideoRenderers/RenderManager.cpp | 3 ++-
xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
index 7f43949..01327f5 100644
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
@@ -1198,7 +1198,8 @@ void CXBMCRenderManager::PrepareNextRender()
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
index 70741be..15a484a 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
@@ -1421,7 +1421,8 @@ void CRenderManager::PrepareNextRender()
while(m_queued.front() != idx)
{
requeue(m_discard, m_queued);
- m_QueueSkip++;
+ if (m_format != RENDER_FMT_BYPASS) // skips scares users ;)
+ if (m_format != RENDER_FMT_AML) // skips scares users ;)
+ m_QueueSkip++;
}

View File

@ -58,13 +58,13 @@ echo "cleaning sources..."
rm -rf $PKG_NAME-$PKG_VERSION/.git
echo "seperating theme..."
rm -rf $PKG_NAME-theme-Confluence-$PKG_VERSION
mv $PKG_NAME-$PKG_VERSION/addons/skin.confluence $PKG_NAME-theme-Confluence-$PKG_VERSION
rm -rf $PKG_NAME-theme-Estuary-$PKG_VERSION
mv $PKG_NAME-$PKG_VERSION/addons/skin.estuary $PKG_NAME-theme-Estuary-$PKG_VERSION
echo "packing sources..."
tar cvJf $PKG_NAME-$PKG_VERSION.tar.xz $PKG_NAME-$PKG_VERSION
tar cvJf $PKG_NAME-theme-Confluence-$PKG_VERSION.tar.xz $PKG_NAME-theme-Confluence-$PKG_VERSION
tar cvJf $PKG_NAME-theme-Estuary-$PKG_VERSION.tar.xz $PKG_NAME-theme-Estuary-$PKG_VERSION
echo "remove temporary sourcedir..."
rm -rf $PKG_NAME-$PKG_VERSION
rm -rf $PKG_NAME-theme-Confluence-$PKG_VERSION
rm -rf $PKG_NAME-theme-Estuary-$PKG_VERSION

View File

@ -1,3 +1,4 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
@ -16,25 +17,25 @@
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="libmpeg2"
PKG_VERSION="0.5.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://libmpeg2.sourceforge.net/"
PKG_URL="http://libmpeg2.sourceforge.net/files/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="multimedia"
PKG_SHORTDESC="libmpeg2: The MPEG Library - version 2"
PKG_LONGDESC="The MPEG Library is a collection of C routines to decode MPEG-1 and MPEG-2 movies and dither them in a variety of colour schemes."
PKG_IS_ADDON="no"
echo "getting sources..."
if [ ! -d libcec.git ]; then
git clone --depth=1 https://github.com/Pulse-Eight/libcec.git libcec.git
fi
PKG_AUTORECONF="yes"
cd libcec.git
git pull
GIT_REV=`git log -n1 --format=%h`
cd ..
PKG_CONFIGURE_OPTS_TARGET="--disable-sdl --without-x"
echo "copying sources..."
rm -rf libcec-$GIT_REV
cp -R libcec.git libcec-$GIT_REV
post_makeinstall_target() {
rm -rf $INSTALL/usr/bin
}
echo "cleaning sources..."
rm -rf libcec-$GIT_REV/.git
echo "packing sources..."
tar cvJf libcec-$GIT_REV.tar.xz libcec-$GIT_REV
echo "remove temporary sourcedir..."
rm -rf libcec-$GIT_REV

View File

@ -1,6 +1,7 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2014 Stefan Saraev (stefan@sarae.va)
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -16,21 +17,14 @@
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="libsquish"
PKG_VERSION="1.10-openelec"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE=""
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_HOST="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION=""
PKG_SHORTDESC="libsquish"
PKG_LONGDESC="libsquish"
echo "getting sources..."
wget http://www.lonesock.net/files/soil.zip
unzip soil.zip
mv "Simple OpenGL Image Library" soil-1.16
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
echo "packing sources..."
tar cvJf soil-1.16.tar.xz soil-1.16
PKG_MAKE_OPTS_TARGET="PREFIX=/usr INSTALL_DIR=$SYSROOT_PREFIX/usr"
PKG_MAKEINSTALL_OPTS_TARGET="$PKG_MAKE_OPTS_TARGET"
echo "remove temporary sourcedir..."
rm -rf soil-1.16
rm -rf soil.zip

Some files were not shown because too many files have changed in this diff Show More