mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv into openelec-3.0
This commit is contained in:
commit
3f3e198c9b
@ -1,14 +1,9 @@
|
|||||||
3.0.3
|
3.0.2
|
||||||
new addon settings:
|
added addon settings
|
||||||
enable HW PID filter (enabled for RPi by default)
|
enable HW PID filter (enabled for RPi by default)
|
||||||
enable IR receiver
|
enable IR receiver
|
||||||
allow sharing local tuner over network
|
allow sharing local tuner over network
|
||||||
use network tuners
|
use network tuners
|
||||||
3.0.2
|
|
||||||
special version
|
|
||||||
3.0.1
|
|
||||||
addon renamed to just sundtek
|
|
||||||
added addon settings
|
|
||||||
sundtek's binaries are downloaded on first run
|
sundtek's binaries are downloaded on first run
|
||||||
automatically download new version of the binaries if available
|
automatically download new version of the binaries if available
|
||||||
added preload library to .profile (to run mediaclient, w_scan, ... from console)
|
added preload library to .profile (to run mediaclient, w_scan, ... from console)
|
@ -1,9 +1,6 @@
|
|||||||
#
|
#
|
||||||
# sundtek.conf
|
# sundtek.conf
|
||||||
#
|
#
|
||||||
# Call attach/detach script when new device appears/disappears
|
|
||||||
# Do not change this line (OpenElec addon require this) !
|
|
||||||
device_attach=/storage/.xbmc/addons/driver.dvb.sundtek/bin/device-attached.sh
|
|
||||||
|
|
||||||
# enable HW PID filter (default on for RPi)
|
# enable HW PID filter (default on for RPi)
|
||||||
use_hwpidfilter=off
|
use_hwpidfilter=off
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
@ -18,9 +18,9 @@
|
|||||||
# http://www.gnu.org/copyleft/gpl.html
|
# http://www.gnu.org/copyleft/gpl.html
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="sundtek"
|
PKG_NAME="sundtek-mediatv"
|
||||||
PKG_VERSION="3.0"
|
PKG_VERSION="3.0"
|
||||||
PKG_REV="3"
|
PKG_REV="2"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="nonfree"
|
PKG_LICENSE="nonfree"
|
||||||
PKG_SITE="http://support.sundtek.com/"
|
PKG_SITE="http://support.sundtek.com/"
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
. /etc/profile
|
. /etc/profile
|
||||||
|
|
||||||
ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek"
|
ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek-mediatv"
|
||||||
|
|
||||||
logger -t Sundtek "### Sundtek manual start ###"
|
logger -t Sundtek "### Sundtek manual start ###"
|
||||||
. $ADDON_DIR/bin/userspace-driver.sh
|
. $ADDON_DIR/bin/userspace-driver.sh
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
. /etc/profile
|
. /etc/profile
|
||||||
|
|
||||||
ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek"
|
ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek-mediatv"
|
||||||
|
|
||||||
export LD_PRELOAD=$ADDON_DIR/lib/libmediaclient.so
|
export LD_PRELOAD=$ADDON_DIR/lib/libmediaclient.so
|
||||||
|
|
@ -32,10 +32,9 @@ net_tuner_num_fix() {
|
|||||||
echo $num
|
echo $num
|
||||||
}
|
}
|
||||||
|
|
||||||
ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek"
|
ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek-mediatv"
|
||||||
ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.sundtek"
|
ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.sundtek-mediatv"
|
||||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||||
SUNDTEK_READY="/var/run/sundtek.ready"
|
|
||||||
|
|
||||||
mkdir -p $ADDON_HOME
|
mkdir -p $ADDON_HOME
|
||||||
|
|
||||||
@ -45,9 +44,11 @@ else
|
|||||||
# in case of missing entries in addon home's sundtek.conf
|
# in case of missing entries in addon home's sundtek.conf
|
||||||
entry_set="$(grep use_hwpidfilter $ADDON_HOME/sundtek.conf 2>/dev/null)"
|
entry_set="$(grep use_hwpidfilter $ADDON_HOME/sundtek.conf 2>/dev/null)"
|
||||||
if [ -z "$entry_set" ]; then
|
if [ -z "$entry_set" ]; then
|
||||||
sed -i 's|\(^device_attach=.*\)|\1\n# enable listening on network\nenablenetwork=off|g' $ADDON_HOME/sundtek.conf
|
sed -i 's|^device_attach=.*|# device_attach not used anymore\n\n# enable HW PID filter\nuse_hwpidfilter=off\n\n# enable listening on network\nenablenetwork=off|g' $ADDON_HOME/sundtek.conf
|
||||||
sed -i 's|\(^device_attach=.*\)|\1\n\n# enable HW PID filter\nuse_hwpidfilter=off\n|g' $ADDON_HOME/sundtek.conf
|
|
||||||
sed -i 's|^#first_adapter=.*|first_adapter=0|g' $ADDON_HOME/sundtek.conf
|
sed -i 's|^#first_adapter=.*|first_adapter=0|g' $ADDON_HOME/sundtek.conf
|
||||||
|
|
||||||
|
sed -i 's|.*network tuner IP address (OpenELEC specific).*||g' $ADDON_HOME/sundtek.conf
|
||||||
|
sed -i 's|.*network_tuner_ip=.*||g' $ADDON_HOME/sundtek.conf
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -74,6 +75,10 @@ if [ "$AUTO_UPDATE" = "true" -a -f $ADDON_DIR/bin/mediasrv ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $ADDON_DIR/bin/mediasrv ]; then
|
if [ ! -f $ADDON_DIR/bin/mediasrv ]; then
|
||||||
|
# remove renamed addon if exist
|
||||||
|
rm -fr "$HOME/.xbmc/addons/driver.dvb.sundtek"
|
||||||
|
rm -fr "$HOME/userdata/addon_data/driver.dvb.sundtek"
|
||||||
|
|
||||||
logger -t Sundtek "### Downloading installer ###"
|
logger -t Sundtek "### Downloading installer ###"
|
||||||
cd $ADDON_DIR
|
cd $ADDON_DIR
|
||||||
mkdir -p bin lib tmp
|
mkdir -p bin lib tmp
|
||||||
@ -90,7 +95,7 @@ if [ ! -f $ADDON_DIR/bin/mediasrv ]; then
|
|||||||
# enable HW PID filter on RPi by default
|
# enable HW PID filter on RPi by default
|
||||||
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $ADDON_DIR/config/sundtek.conf
|
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $ADDON_DIR/config/sundtek.conf
|
||||||
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $ADDON_HOME/sundtek.conf
|
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $ADDON_HOME/sundtek.conf
|
||||||
sed -i 's|.*id="ENABLE_HW_PID_FILTER" value=.*|<setting id="ENABLE_HW_PID_FILTER" value="true" />|' $ADDON_SETTINGS
|
sed -i 's|.*id="ENABLE_HW_PID_FILTER".*|<setting id="ENABLE_HW_PID_FILTER" value="true" />|' $ADDON_SETTINGS
|
||||||
else
|
else
|
||||||
logger -t Sundtek "### Unsupported architecture ###"
|
logger -t Sundtek "### Unsupported architecture ###"
|
||||||
cd ..
|
cd ..
|
||||||
@ -124,15 +129,18 @@ if [ ! -f $ADDON_HOME/driver-version.txt ]; then
|
|||||||
cp $ADDON_DIR/driver-version.txt $ADDON_HOME/
|
cp $ADDON_DIR/driver-version.txt $ADDON_HOME/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# enable to install same addon version again
|
# enable to install same addon package version again
|
||||||
rm -f /storage/.xbmc/addons/packages/driver.dvb.sundtek-*
|
rm -f /storage/.xbmc/addons/packages/driver.dvb.sundtek*
|
||||||
|
|
||||||
# add alias for /opt/bin/mediaclient
|
# add alias for /opt/bin/mediaclient
|
||||||
alias_set="$(grep libmediaclient.so /storage/.profile 2>/dev/null)"
|
alias_set="$(grep libmediaclient.so /storage/.profile 2>/dev/null)"
|
||||||
if [ -z "$alias_set" ]; then
|
if [ -z "$alias_set" ]; then
|
||||||
echo "" >>/storage/.profile
|
echo "" >>/storage/.profile
|
||||||
echo "[ -f /storage/.xbmc/addons/driver.dvb.sundtek/lib/libmediaclient.so ] && export LD_PRELOAD=/storage/.xbmc/addons/driver.dvb.sundtek/lib/libmediaclient.so" >>/storage/.profile
|
echo "[ -f /storage/.xbmc/addons/driver.dvb.sundtek-mediatv/lib/libmediaclient.so ] && export LD_PRELOAD=/storage/.xbmc/addons/driver.dvb.sundtek-mediatv/lib/libmediaclient.so" >>/storage/.profile
|
||||||
echo "" >>/storage/.profile
|
echo "" >>/storage/.profile
|
||||||
|
else
|
||||||
|
# fix name
|
||||||
|
sed -i 's|/driver.dvb.sundtek/|/driver.dvb.sundtek-mediatv/|g' /storage/.profile
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export LD_PRELOAD=$ADDON_DIR/lib/libmediaclient.so
|
export LD_PRELOAD=$ADDON_DIR/lib/libmediaclient.so
|
||||||
@ -160,7 +168,6 @@ fi
|
|||||||
if [ -z "$(pidof mediasrv)" ]; then
|
if [ -z "$(pidof mediasrv)" ]; then
|
||||||
rm -f /var/log/mediasrv.log
|
rm -f /var/log/mediasrv.log
|
||||||
rm -f /var/log/mediaclient.log
|
rm -f /var/log/mediaclient.log
|
||||||
rm -f $SUNDTEK_READY
|
|
||||||
|
|
||||||
SUNDTEK_CONF_TMP=/tmp/sundtek.conf
|
SUNDTEK_CONF_TMP=/tmp/sundtek.conf
|
||||||
cp $ADDON_HOME/sundtek.conf $SUNDTEK_CONF_TMP
|
cp $ADDON_HOME/sundtek.conf $SUNDTEK_CONF_TMP
|
||||||
@ -247,29 +254,15 @@ if [ -z "$(pidof mediasrv)" ]; then
|
|||||||
cp $SUNDTEK_CONF_TMP $ADDON_HOME/sundtek.conf
|
cp $SUNDTEK_CONF_TMP $ADDON_HOME/sundtek.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#rm "$SUNDTEK_CONF_TMP"
|
|
||||||
|
|
||||||
mediasrv --wait-for-devices -p $ADDON_DIR/bin -c $ADDON_HOME/sundtek.conf -d
|
mediasrv --wait-for-devices -p $ADDON_DIR/bin -c $ADDON_HOME/sundtek.conf -d
|
||||||
|
|
||||||
# wait for device to get attached or connected
|
# wait few seconds
|
||||||
for i in $(seq 1 240); do
|
[ -z "$SETTLE_TIME" ] && SETTLE_TIME=0
|
||||||
if [ -f $SUNDTEK_READY ]; then
|
SETTLE_TIME=$(( $SETTLE_TIME *1 ))
|
||||||
rm -f $SUNDTEK_READY
|
if [ $SETTLE_TIME -gt 0 ]; then
|
||||||
logger -t Sundtek "### Sundtek ready ###"
|
logger -t Sundtek "### Settle for $SETTLE_TIME sec ###"
|
||||||
|
sleep $SETTLE_TIME
|
||||||
if [ -n $SETTLE_TIME -a $SETTLE_TIME -gt 0 ]; then
|
fi
|
||||||
logger -t Sundtek "### Settle for $SETTLE_TIME sec ###"
|
|
||||||
sleep $SETTLE_TIME
|
|
||||||
fi
|
|
||||||
|
|
||||||
break
|
|
||||||
elif [ "$i" = "240" ]; then
|
|
||||||
logger -t Sundtek "### No Sundtek device attached or connected ###"
|
|
||||||
return
|
|
||||||
else
|
|
||||||
usleep 500000
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$ANALOG_TV" = "true" ]; then
|
if [ "$ANALOG_TV" = "true" ]; then
|
||||||
logger -t Sundtek "### Switching to analog TV mode ###"
|
logger -t Sundtek "### Switching to analog TV mode ###"
|
||||||
@ -292,3 +285,5 @@ if [ -z "$(pidof mediasrv)" ]; then
|
|||||||
fi
|
fi
|
||||||
)&
|
)&
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
logger -t Sundtek "### Sundtek ready ###"
|
@ -3,13 +3,13 @@
|
|||||||
<category label="1000" >
|
<category label="1000" >
|
||||||
<setting label="" type="lsep" />
|
<setting label="" type="lsep" />
|
||||||
<setting type="sep" />
|
<setting type="sep" />
|
||||||
<setting id="AUTO_UPDATE" type="bool" label="1011" default="false" />
|
<setting id="AUTO_UPDATE" type="bool" label="1011" default="false" />
|
||||||
<setting id="ANALOG_TV" type="bool" label="1012" default="false" enable="false" />
|
<setting id="ANALOG_TV" type="bool" label="1012" default="false" enable="false" />
|
||||||
<setting id="SETTLE_TIME" type="number" label="1014" default="0" />
|
<setting id="SETTLE_TIME" type="number" label="1014" default="0" />
|
||||||
<setting id="RUN_USER_SCRIPT" type="bool" label="1015" default="false" />
|
<setting id="RUN_USER_SCRIPT" type="bool" label="1015" default="false" />
|
||||||
<setting id="ENABLE_HW_PID_FILTER" type="bool" label="1030" default="false" />
|
<setting id="ENABLE_HW_PID_FILTER" type="bool" label="1030" default="false" />
|
||||||
<setting id="ENABLE_IR_RECEIVER" type="bool" label="1035" default="false" />
|
<setting id="ENABLE_IR_RECEIVER" type="bool" label="1035" default="false" />
|
||||||
<setting id="LOWEST_ADAPTER_NUM" type="number" label="1040" default="0" />
|
<setting id="LOWEST_ADAPTER_NUM" type="number" label="1040" default="0" />
|
||||||
</category>
|
</category>
|
||||||
<category label="2000" >
|
<category label="2000" >
|
||||||
<setting label="" type="lsep" />
|
<setting label="" type="lsep" />
|
@ -23,22 +23,22 @@
|
|||||||
. /etc/profile
|
. /etc/profile
|
||||||
|
|
||||||
LOCKDIR="/var/lock/"
|
LOCKDIR="/var/lock/"
|
||||||
LOCKFILE="sundtek"
|
LOCKFILE="$LOCKDIR/sundtek-mediatv"
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
hibernate|suspend)
|
hibernate|suspend)
|
||||||
if [ -n "$(pidof mediasrv)" ]; then
|
if [ -n "$(pidof mediasrv)" ]; then
|
||||||
progress "Shutting down Sundtek DVB driver for suspending..."
|
progress "Shutting down Sundtek DVB driver for suspending..."
|
||||||
mkdir -p "$LOCKDIR"
|
mkdir -p "$LOCKDIR"
|
||||||
touch "$LOCKDIR/$LOCKFILE"
|
touch "$LOCKFILE"
|
||||||
mediaclient --shutdown
|
mediaclient --shutdown
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
thaw|resume)
|
thaw|resume)
|
||||||
if [ -f "$LOCKDIR/$LOCKFILE" ]; then
|
if [ -f "$LOCKFILE" ]; then
|
||||||
# driver started within Tvheadend/VDR
|
# driver started within Tvheadend/VDR
|
||||||
rm -rf "$LOCKDIR/$LOCKFILE"
|
rm -f "$LOCKFILE"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# This file is part of OpenELEC - http://www.openelec.tv
|
|
||||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
|
||||||
#
|
|
||||||
# This Program 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, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This Program 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.tv; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
|
||||||
# http://www.gnu.org/copyleft/gpl.html
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
SUNDTEK_READY="/var/run/sundtek.ready"
|
|
||||||
|
|
||||||
touch $SUNDTEK_READY
|
|
@ -1,3 +1,6 @@
|
|||||||
|
3.0.4
|
||||||
|
- update to transmission-2.77
|
||||||
|
|
||||||
3.0.3
|
3.0.3
|
||||||
- update to transmission-2.76
|
- update to transmission-2.76
|
||||||
- update libevent to libevent-2.0.21-stable
|
- update libevent to libevent-2.0.21-stable
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="transmission"
|
PKG_NAME="transmission"
|
||||||
PKG_VERSION="2.76"
|
PKG_VERSION="2.77"
|
||||||
PKG_REV="3"
|
PKG_REV="4"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="OSS"
|
PKG_LICENSE="OSS"
|
||||||
PKG_SITE="http://www.transmissionbt.com/"
|
PKG_SITE="http://www.transmissionbt.com/"
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
3.0.5
|
||||||
|
- update to TVHeadend 3.3.485
|
||||||
|
|
||||||
3.0.4
|
3.0.4
|
||||||
- update to TVHeadend 3.3.403
|
- update to TVHeadend 3.3.403
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="tvheadend"
|
PKG_NAME="tvheadend"
|
||||||
PKG_VERSION="3.3.403"
|
PKG_VERSION="3.3.485"
|
||||||
PKG_REV="4"
|
PKG_REV="5"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
||||||
|
@ -1,549 +0,0 @@
|
|||||||
From d33a276284356e974dcf14e6c86b74064fb0715f Mon Sep 17 00:00:00 2001
|
|
||||||
From: xbmc <fernetmenta@online.de>
|
|
||||||
Date: Sun, 10 Feb 2013 18:38:56 +0100
|
|
||||||
Subject: [PATCH 1/4] renderer: add buffering - get clock via IPlayer
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/IPlayer.h | 2 ++
|
|
||||||
xbmc/cores/VideoRenderers/RenderManager.cpp | 9 ++++++---
|
|
||||||
xbmc/cores/VideoRenderers/RenderManager.h | 3 +--
|
|
||||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 7 ++++++-
|
|
||||||
xbmc/cores/dvdplayer/DVDPlayer.h | 2 ++
|
|
||||||
5 files changed, 17 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/IPlayer.h b/xbmc/cores/IPlayer.h
|
|
||||||
index 5ed88d1..f136998 100644
|
|
||||||
--- a/xbmc/cores/IPlayer.h
|
|
||||||
+++ b/xbmc/cores/IPlayer.h
|
|
||||||
@@ -229,6 +229,8 @@ class IPlayer
|
|
||||||
*/
|
|
||||||
virtual void GetSubtitleCapabilities(std::vector<int> &subCaps) { subCaps.assign(1,IPC_SUBS_ALL); };
|
|
||||||
|
|
||||||
+ virtual double GetClock(double& absolute, bool interpolated = true) {return 0; };
|
|
||||||
+
|
|
||||||
protected:
|
|
||||||
IPlayerCallback& m_callback;
|
|
||||||
};
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
|
||||||
index 9290f80..4664426 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
|
||||||
@@ -325,7 +325,7 @@ void CXBMCRenderManager::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
|
|
||||||
m_presentevent.Set();
|
|
||||||
}
|
|
||||||
|
|
||||||
-unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock)
|
|
||||||
+unsigned int CXBMCRenderManager::PreInit()
|
|
||||||
{
|
|
||||||
CRetakeLock<CExclusiveLock> lock(m_sharedSection);
|
|
||||||
|
|
||||||
@@ -333,7 +333,6 @@ unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock)
|
|
||||||
m_presenterr = 0.0;
|
|
||||||
m_errorindex = 0;
|
|
||||||
memset(m_errorbuff, 0, sizeof(m_errorbuff));
|
|
||||||
- m_pClock = pClock;
|
|
||||||
|
|
||||||
m_bIsStarted = false;
|
|
||||||
m_bPauseDrawing = false;
|
|
||||||
@@ -1045,7 +1044,11 @@ void CXBMCRenderManager::PrepareNextRender()
|
|
||||||
}
|
|
||||||
|
|
||||||
double iClockSleep, iPlayingClock, iCurrentClock;
|
|
||||||
- iPlayingClock = m_pClock->GetClock(iCurrentClock, false);
|
|
||||||
+ if (g_application.m_pPlayer)
|
|
||||||
+ iPlayingClock = g_application.m_pPlayer->GetClock(iCurrentClock, false);
|
|
||||||
+ else
|
|
||||||
+ iPlayingClock = iCurrentClock = 0;
|
|
||||||
+
|
|
||||||
iClockSleep = m_renderBuffers[idx].pts - iPlayingClock;
|
|
||||||
|
|
||||||
if (m_speed)
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h
|
|
||||||
index 6746957..b931f7d 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/RenderManager.h
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.h
|
|
||||||
@@ -72,7 +72,7 @@ class CXBMCRenderManager
|
|
||||||
int AddVideoPicture(DVDVideoPicture& picture);
|
|
||||||
|
|
||||||
void FlipPage(volatile bool& bStop, double timestamp = 0.0, int source = -1, EFIELDSYNC sync = FS_NONE, int speed = 0);
|
|
||||||
- unsigned int PreInit(CDVDClock *pClock);
|
|
||||||
+ unsigned int PreInit();
|
|
||||||
void UnInit();
|
|
||||||
bool Flush();
|
|
||||||
|
|
||||||
@@ -225,7 +225,6 @@ class CXBMCRenderManager
|
|
||||||
int m_presentsource;
|
|
||||||
CEvent m_presentevent;
|
|
||||||
CEvent m_flushEvent;
|
|
||||||
- CDVDClock *m_pClock;
|
|
||||||
|
|
||||||
|
|
||||||
OVERLAY::CRenderer m_overlays;
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
|
||||||
index 9e6e470..d0c7cd2 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
|
||||||
@@ -463,7 +463,7 @@ bool CDVDPlayer::OpenFile(const CFileItem& file, const CPlayerOptions &options)
|
|
||||||
m_ready.Reset();
|
|
||||||
|
|
||||||
#if defined(HAS_VIDEO_PLAYBACK)
|
|
||||||
- g_renderManager.PreInit(&m_clock);
|
|
||||||
+ g_renderManager.PreInit();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Create();
|
|
||||||
@@ -4129,3 +4129,8 @@ bool CDVDPlayer::CachePVRStream(void) const
|
|
||||||
!g_PVRManager.IsPlayingRecording() &&
|
|
||||||
g_advancedSettings.m_bPVRCacheInDvdPlayer;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+double CDVDPlayer::GetClock(double& absolute, bool interpolated)
|
|
||||||
+{
|
|
||||||
+ return m_clock.GetClock(absolute, interpolated);
|
|
||||||
+}
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h
|
|
||||||
index 35bf762..ab73950 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.h
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.h
|
|
||||||
@@ -254,6 +254,8 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer
|
|
||||||
virtual bool SwitchChannel(const PVR::CPVRChannel &channel);
|
|
||||||
virtual bool CachePVRStream(void) const;
|
|
||||||
|
|
||||||
+ virtual double GetClock(double& absolute, bool interpolated = true);
|
|
||||||
+
|
|
||||||
enum ECacheState
|
|
||||||
{ CACHESTATE_DONE = 0
|
|
||||||
, CACHESTATE_FULL // player is filling up the demux queue
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
|
|
||||||
From 113de500903cbe1933e1a50fc7809b8f6b7f2636 Mon Sep 17 00:00:00 2001
|
|
||||||
From: xbmc <fernetmenta@online.de>
|
|
||||||
Date: Fri, 15 Feb 2013 17:00:47 +0100
|
|
||||||
Subject: [PATCH 2/4] buffering: some rework
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/VideoRenderers/OverlayRenderer.cpp | 17 +++++++----------
|
|
||||||
xbmc/cores/VideoRenderers/OverlayRenderer.h | 5 ++---
|
|
||||||
xbmc/cores/VideoRenderers/RenderManager.cpp | 10 +++-------
|
|
||||||
xbmc/cores/VideoRenderers/RenderManager.h | 4 ++--
|
|
||||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 18 +++++++++++++++++-
|
|
||||||
5 files changed, 31 insertions(+), 23 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
|
|
||||||
index 94aaaf5..f7f74ce 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
|
|
||||||
@@ -93,24 +93,28 @@ long COverlayMainThread::Release()
|
|
||||||
|
|
||||||
CRenderer::~CRenderer()
|
|
||||||
{
|
|
||||||
- for(int i = 0; i < 2; i++)
|
|
||||||
+ for(int i = 0; i < 10; i++)
|
|
||||||
Release(m_buffers[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
-void CRenderer::AddOverlay(CDVDOverlay* o, double pts)
|
|
||||||
+void CRenderer::AddOverlay(CDVDOverlay* o, double pts, int index)
|
|
||||||
{
|
|
||||||
CSingleLock lock(m_section);
|
|
||||||
|
|
||||||
+ m_decode = index;
|
|
||||||
+
|
|
||||||
SElement e;
|
|
||||||
e.pts = pts;
|
|
||||||
e.overlay_dvd = o->Acquire();
|
|
||||||
m_buffers[m_decode].push_back(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
-void CRenderer::AddOverlay(COverlay* o, double pts)
|
|
||||||
+void CRenderer::AddOverlay(COverlay* o, double pts, int index)
|
|
||||||
{
|
|
||||||
CSingleLock lock(m_section);
|
|
||||||
|
|
||||||
+ m_decode = index;
|
|
||||||
+
|
|
||||||
SElement e;
|
|
||||||
e.pts = pts;
|
|
||||||
e.overlay = o->Acquire();
|
|
||||||
@@ -163,13 +167,6 @@ void CRenderer::Flip()
|
|
||||||
m_render = (m_render + 1) % m_iNumBuffers;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void CRenderer::SetBuffer(int idx)
|
|
||||||
-{
|
|
||||||
- CSingleLock lock(m_section);
|
|
||||||
- Release(m_buffers[idx]);
|
|
||||||
- m_decode = idx;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void CRenderer::ReleaseBuffer(int idx)
|
|
||||||
{
|
|
||||||
CSingleLock lock(m_section);
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.h b/xbmc/cores/VideoRenderers/OverlayRenderer.h
|
|
||||||
index c6740a5..0921fc5 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/OverlayRenderer.h
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.h
|
|
||||||
@@ -92,14 +92,13 @@
|
|
||||||
CRenderer();
|
|
||||||
~CRenderer();
|
|
||||||
|
|
||||||
- void AddOverlay(CDVDOverlay* o, double pts);
|
|
||||||
- void AddOverlay(COverlay* o, double pts);
|
|
||||||
+ void AddOverlay(CDVDOverlay* o, double pts, int index);
|
|
||||||
+ void AddOverlay(COverlay* o, double pts, int index);
|
|
||||||
void AddCleanup(COverlay* o);
|
|
||||||
void Flip();
|
|
||||||
void Render();
|
|
||||||
void Flush();
|
|
||||||
void SetNumBuffers(int numBuffers) { m_iNumBuffers = numBuffers; }
|
|
||||||
- void SetBuffer(int idx);
|
|
||||||
void ReleaseBuffer(int idx);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
|
||||||
index 4664426..7094913 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
|
||||||
@@ -228,7 +228,7 @@ CStdString CXBMCRenderManager::GetVSyncState()
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
-bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation)
|
|
||||||
+bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation, bool buffering)
|
|
||||||
{
|
|
||||||
/* make sure any queued frame was fully presented */
|
|
||||||
double timeout = m_presenttime + 0.1;
|
|
||||||
@@ -248,8 +248,8 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- // check if decoder supports buffering
|
|
||||||
- m_bCodecSupportsBuffering = false;
|
|
||||||
+ // set buffering
|
|
||||||
+ m_bCodecSupportsBuffering = buffering;
|
|
||||||
if (format == RENDER_FMT_VDPAU
|
|
||||||
|| format == RENDER_FMT_VDPAU_420
|
|
||||||
|| format == RENDER_FMT_XVBA)
|
|
||||||
@@ -959,10 +959,6 @@ int CXBMCRenderManager::WaitForBuffer(volatile bool& bStop)
|
|
||||||
}
|
|
||||||
lock.Leave();
|
|
||||||
|
|
||||||
- { CRetakeLock<CExclusiveLock> lock(m_sharedSection);
|
|
||||||
- m_overlays.SetBuffer((m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
if (bStop)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h
|
|
||||||
index b931f7d..27bb8a2 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/RenderManager.h
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.h
|
|
||||||
@@ -66,7 +66,7 @@ class CXBMCRenderManager
|
|
||||||
void SetViewMode(int iViewMode);
|
|
||||||
|
|
||||||
// Functions called from mplayer
|
|
||||||
- bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation);
|
|
||||||
+ bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation, bool buffering);
|
|
||||||
bool IsConfigured();
|
|
||||||
|
|
||||||
int AddVideoPicture(DVDVideoPicture& picture);
|
|
||||||
@@ -79,7 +79,7 @@ class CXBMCRenderManager
|
|
||||||
void AddOverlay(CDVDOverlay* o, double pts)
|
|
||||||
{
|
|
||||||
CSharedLock lock(m_sharedSection);
|
|
||||||
- m_overlays.AddOverlay(o, pts);
|
|
||||||
+ m_overlays.AddOverlay(o, pts, (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddCleanup(OVERLAY::COverlay* o)
|
|
||||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
|
||||||
index 109d75b..8a6599c 100644
|
|
||||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
|
||||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
|
||||||
@@ -1132,53 +1132,69 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
|
|
||||||
}
|
|
||||||
|
|
||||||
CStdString formatstr;
|
|
||||||
+ bool buffering;
|
|
||||||
|
|
||||||
switch(pPicture->format)
|
|
||||||
{
|
|
||||||
case RENDER_FMT_YUV420P:
|
|
||||||
formatstr = "YV12";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_YUV420P16:
|
|
||||||
formatstr = "YV12P16";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_YUV420P10:
|
|
||||||
formatstr = "YV12P10";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_NV12:
|
|
||||||
formatstr = "NV12";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_UYVY422:
|
|
||||||
formatstr = "UYVY";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_YUYV422:
|
|
||||||
formatstr = "YUY2";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_VDPAU:
|
|
||||||
formatstr = "VDPAU";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_VDPAU_420:
|
|
||||||
formatstr = "VDPAU_420";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_DXVA:
|
|
||||||
formatstr = "DXVA";
|
|
||||||
+ buffering = false;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_VAAPI:
|
|
||||||
formatstr = "VAAPI";
|
|
||||||
+ buffering = false;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_OMXEGL:
|
|
||||||
formatstr = "OMXEGL";
|
|
||||||
+ buffering = false;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_CVBREF:
|
|
||||||
formatstr = "BGRA";
|
|
||||||
+ buffering = false;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_BYPASS:
|
|
||||||
formatstr = "BYPASS";
|
|
||||||
+ buffering = false;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_NONE:
|
|
||||||
formatstr = "NONE";
|
|
||||||
+ buffering = false;
|
|
||||||
break;
|
|
||||||
case RENDER_FMT_XVBA:
|
|
||||||
formatstr = "XVBA";
|
|
||||||
+ buffering = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1189,7 +1205,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
|
|
||||||
}
|
|
||||||
|
|
||||||
CLog::Log(LOGDEBUG,"%s - change configuration. %dx%d. framerate: %4.2f. format: %s",__FUNCTION__,pPicture->iWidth, pPicture->iHeight, config_framerate, formatstr.c_str());
|
|
||||||
- if(!g_renderManager.Configure(pPicture->iWidth, pPicture->iHeight, pPicture->iDisplayWidth, pPicture->iDisplayHeight, config_framerate, flags, pPicture->format, pPicture->extended_format, m_hints.orientation))
|
|
||||||
+ if(!g_renderManager.Configure(pPicture->iWidth, pPicture->iHeight, pPicture->iDisplayWidth, pPicture->iDisplayHeight, config_framerate, flags, pPicture->format, pPicture->extended_format, m_hints.orientation, buffering))
|
|
||||||
{
|
|
||||||
CLog::Log(LOGERROR, "%s - failed to configure renderer", __FUNCTION__);
|
|
||||||
return EOS_ABORT;
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
|
|
||||||
From 4d71be9fa0e34dccbb977199f1bde2f200f8b56e Mon Sep 17 00:00:00 2001
|
|
||||||
From: xbmc <fernetmenta@online.de>
|
|
||||||
Date: Sat, 16 Feb 2013 08:32:18 +0100
|
|
||||||
Subject: [PATCH 3/4] add buffering for GLES
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 10 ----------
|
|
||||||
xbmc/cores/VideoRenderers/LinuxRendererGLES.h | 6 ++++--
|
|
||||||
2 files changed, 4 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
|
|
||||||
index 2a59e2b..1bf2f3b 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
|
|
||||||
@@ -135,13 +135,6 @@
|
|
||||||
delete m_dllSwScale;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void CLinuxRendererGLES::ManageTextures()
|
|
||||||
-{
|
|
||||||
- m_NumYV12Buffers = 2;
|
|
||||||
- //m_iYV12RenderBuffer = 0;
|
|
||||||
- return;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
bool CLinuxRendererGLES::ValidateRenderTarget()
|
|
||||||
{
|
|
||||||
if (!m_bValidated)
|
|
||||||
@@ -395,7 +388,6 @@ void CLinuxRendererGLES::Update(bool bPauseDrawing)
|
|
||||||
{
|
|
||||||
if (!m_bConfigured) return;
|
|
||||||
ManageDisplay();
|
|
||||||
- ManageTextures();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
|
|
||||||
@@ -409,7 +401,6 @@ void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
|
|
||||||
if (m_renderMethod & RENDER_BYPASS)
|
|
||||||
{
|
|
||||||
ManageDisplay();
|
|
||||||
- ManageTextures();
|
|
||||||
// if running bypass, then the player might need the src/dst rects
|
|
||||||
// for sizing video playback on a layer other than the gles layer.
|
|
||||||
if (m_RenderUpdateCallBackFn)
|
|
||||||
@@ -449,7 +440,6 @@ void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ManageDisplay();
|
|
||||||
- ManageTextures();
|
|
||||||
|
|
||||||
g_graphicsContext.BeginPaint();
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h
|
|
||||||
index c6b69db..7bdc3bc 100644
|
|
||||||
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h
|
|
||||||
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h
|
|
||||||
@@ -41,7 +41,7 @@
|
|
||||||
class COpenMaxVideo;
|
|
||||||
typedef std::vector<int> Features;
|
|
||||||
|
|
||||||
-#define NUM_BUFFERS 3
|
|
||||||
+#define NUM_BUFFERS 10
|
|
||||||
|
|
||||||
|
|
||||||
#undef ALIGN
|
|
||||||
@@ -138,6 +138,9 @@ class CLinuxRendererGLES : public CBaseRenderer
|
|
||||||
virtual void UnInit();
|
|
||||||
virtual void Reset(); /* resets renderer after seek for example */
|
|
||||||
virtual void ReorderDrawPoints();
|
|
||||||
+ virtual void SetProcessorSize(int numBuffers) { m_NumYV12Buffers = numBuffers; }
|
|
||||||
+ virtual unsigned int GetMaxProcessorSize() { return NUM_BUFFERS; }
|
|
||||||
+ virtual unsigned int GetProcessorSize() { return m_NumYV12Buffers; }
|
|
||||||
|
|
||||||
virtual void RenderUpdate(bool clear, DWORD flags = 0, DWORD alpha = 255);
|
|
||||||
|
|
||||||
@@ -162,7 +165,6 @@ class CLinuxRendererGLES : public CBaseRenderer
|
|
||||||
protected:
|
|
||||||
virtual void Render(DWORD flags, int index);
|
|
||||||
|
|
||||||
- virtual void ManageTextures();
|
|
||||||
int NextYV12Texture();
|
|
||||||
virtual bool ValidateRenderTarget();
|
|
||||||
virtual void LoadShaders(int field=FIELD_FULL);
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
||||||
|
|
||||||
From 81496e1f405980d3be6b05c883bdbfb65d617e3e Mon Sep 17 00:00:00 2001
|
|
||||||
From: xbmc <fernetmenta@online.de>
|
|
||||||
Date: Sun, 10 Feb 2013 18:40:30 +0100
|
|
||||||
Subject: [PATCH 4/4] OMXPlayer: adopt to buffering in renderer
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/cores/omxplayer/OMXPlayer.cpp | 5 +++++
|
|
||||||
xbmc/cores/omxplayer/OMXPlayer.h | 2 ++
|
|
||||||
xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 24 +++++++++++++++++++-----
|
|
||||||
3 files changed, 26 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
|
||||||
index 60aa9ab..1acb9e2 100644
|
|
||||||
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
|
||||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
|
||||||
@@ -4210,4 +4210,9 @@ void COMXPlayer::GetSubtitleCapabilities(std::vector<int> &subCaps)
|
|
||||||
subCaps.push_back(IPC_SUBS_ALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
+double COMXPlayer::GetClock(double& absolute, bool interpolated)
|
|
||||||
+{
|
|
||||||
+ return m_av_clock.GetClock(absolute, interpolated);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#endif
|
|
||||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.h b/xbmc/cores/omxplayer/OMXPlayer.h
|
|
||||||
index ca824c2..57fc7a0 100644
|
|
||||||
--- a/xbmc/cores/omxplayer/OMXPlayer.h
|
|
||||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.h
|
|
||||||
@@ -332,6 +332,8 @@ class COMXPlayer : public IPlayer, public CThread, public IDVDPlayer
|
|
||||||
virtual void GetScalingMethods(std::vector<int> &scalingMethods);
|
|
||||||
virtual void GetAudioCapabilities(std::vector<int> &audioCaps);
|
|
||||||
virtual void GetSubtitleCapabilities(std::vector<int> &subCaps);
|
|
||||||
+
|
|
||||||
+ virtual double GetClock(double& absolute, bool interpolated = true);
|
|
||||||
protected:
|
|
||||||
friend class COMXSelectionStreams;
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
|
|
||||||
index 5f3f050..88c75db 100644
|
|
||||||
--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
|
|
||||||
+++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
|
|
||||||
@@ -158,6 +158,8 @@ bool OMXPlayerVideo::OpenStream(CDVDStreamInfo &hints)
|
|
||||||
m_open = true;
|
|
||||||
m_send_eos = false;
|
|
||||||
|
|
||||||
+ g_renderManager.EnableBuffering(false);
|
|
||||||
+
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -358,7 +360,7 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket)
|
|
||||||
|
|
||||||
if(!g_renderManager.Configure(m_hints.width, m_hints.height,
|
|
||||||
iDisplayWidth, iDisplayHeight, m_fps, flags, format, 0,
|
|
||||||
- m_hints.orientation))
|
|
||||||
+ m_hints.orientation, true))
|
|
||||||
{
|
|
||||||
CLog::Log(LOGERROR, "%s - failed to configure renderer", __FUNCTION__);
|
|
||||||
return;
|
|
||||||
@@ -452,13 +454,22 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket)
|
|
||||||
m_dropbase = 0.0f;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- double pts_media = m_av_clock->OMXMediaTime(false, false);
|
|
||||||
- ProcessOverlays(iGroupId, pts_media);
|
|
||||||
-
|
|
||||||
if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < (iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500)) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
- g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, FS_NONE);
|
|
||||||
+ int buffer = g_renderManager.WaitForBuffer(m_bStop);
|
|
||||||
+ while (buffer < 0 && !CThread::m_bStop)
|
|
||||||
+ {
|
|
||||||
+ Sleep(1);
|
|
||||||
+ buffer = g_renderManager.WaitForBuffer(m_bStop);
|
|
||||||
+ }
|
|
||||||
+ if (buffer < 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ double pts_media = m_av_clock->OMXMediaTime(false, false);
|
|
||||||
+ ProcessOverlays(iGroupId, pts_media);
|
|
||||||
+
|
|
||||||
+ g_renderManager.FlipPage(CThread::m_bStop, pts, -1, FS_NONE, m_speed);
|
|
||||||
|
|
||||||
//m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime));
|
|
||||||
}
|
|
||||||
@@ -569,6 +580,7 @@ void OMXPlayerVideo::Process()
|
|
||||||
m_av_clock->OMXReset(false);
|
|
||||||
m_av_clock->UnLock();
|
|
||||||
m_started = false;
|
|
||||||
+ g_renderManager.EnableBuffering(false);
|
|
||||||
}
|
|
||||||
else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush())
|
|
||||||
{
|
|
||||||
@@ -580,6 +592,7 @@ void OMXPlayerVideo::Process()
|
|
||||||
m_omxVideo.Reset();
|
|
||||||
m_av_clock->OMXReset(false);
|
|
||||||
m_av_clock->UnLock();
|
|
||||||
+ g_renderManager.EnableBuffering(false);
|
|
||||||
}
|
|
||||||
else if (pMsg->IsType(CDVDMsg::PLAYER_SETSPEED))
|
|
||||||
{
|
|
||||||
@@ -664,6 +677,7 @@ void OMXPlayerVideo::Process()
|
|
||||||
m_codecname = m_omxVideo.GetDecoderName();
|
|
||||||
m_started = true;
|
|
||||||
m_messageParent.Put(new CDVDMsgInt(CDVDMsg::PLAYER_STARTED, DVDPLAYER_VIDEO));
|
|
||||||
+ g_renderManager.EnableBuffering(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// guess next frame pts. iDuration is always valid
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
|||||||
From bf4d77aeb9ff7c198914031ec0d8268dae0c5973 Mon Sep 17 00:00:00 2001
|
|
||||||
From: unknown <fernetmenta@online.de>
|
|
||||||
Date: Fri, 18 Jan 2013 15:16:38 +0100
|
|
||||||
Subject: [PATCH] multi-screen: fix compilation on windows
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/settings/GUIWindowSettingsCategory.cpp | 11 ++++++++++-
|
|
||||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp
|
|
||||||
index bb29daa..c468a73 100644
|
|
||||||
--- a/xbmc/settings/GUIWindowSettingsCategory.cpp
|
|
||||||
+++ b/xbmc/settings/GUIWindowSettingsCategory.cpp
|
|
||||||
@@ -525,12 +525,14 @@ void CGUIWindowSettingsCategory::CreateSettings()
|
|
||||||
FillInRefreshRates(strSetting, g_guiSettings.GetResolution(), false);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
+#if defined(HAS_GLX)
|
|
||||||
else if (strSetting.Equals("videoscreen.monitor"))
|
|
||||||
{
|
|
||||||
AddSetting(pSetting, group->GetWidth(), iControlID);
|
|
||||||
FillInMonitors(strSetting);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
else if (strSetting.Equals("lookandfeel.skintheme"))
|
|
||||||
{
|
|
||||||
AddSetting(pSetting, group->GetWidth(), iControlID);
|
|
||||||
@@ -1463,6 +1465,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting
|
|
||||||
// Cascade
|
|
||||||
FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true);
|
|
||||||
}
|
|
||||||
+#if defined(HAS_GLX)
|
|
||||||
else if (strSetting.Equals("videoscreen.monitor"))
|
|
||||||
{
|
|
||||||
CSettingString *pSettingString = (CSettingString *)pSettingControl->GetSetting();
|
|
||||||
@@ -1477,6 +1480,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting
|
|
||||||
FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
else if (strSetting.Equals("videoscreen.resolution"))
|
|
||||||
{
|
|
||||||
RESOLUTION nextRes = (RESOLUTION) g_guiSettings.GetInt("videoscreen.resolution");
|
|
||||||
@@ -2431,6 +2435,7 @@ DisplayMode CGUIWindowSettingsCategory::FillInScreens(CStdString strSetting, RES
|
|
||||||
|
|
||||||
void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting)
|
|
||||||
{
|
|
||||||
+#if defined(HAS_GLX)
|
|
||||||
// we expect "videoscreen.monitor" but it might be hidden on some platforms,
|
|
||||||
// so check that we actually have a visable control.
|
|
||||||
BaseSettingControlPtr control = GetSetting(strSetting);
|
|
||||||
@@ -2456,6 +2461,7 @@ void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting)
|
|
||||||
pControl->SetValue(currentMonitor);
|
|
||||||
g_guiSettings.SetString("videoscreen.monitor", g_settings.m_ResInfo[RES_DESKTOP].strOutput);
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -2587,7 +2593,10 @@ void CGUIWindowSettingsCategory::OnRefreshRateChanged(RESOLUTION nextRes)
|
|
||||||
RESOLUTION lastRes = g_graphicsContext.GetVideoResolution();
|
|
||||||
bool cancelled = false;
|
|
||||||
|
|
||||||
- bool outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor"));
|
|
||||||
+ bool outputChanged = true;
|
|
||||||
+#if defined(HAS_GLX)
|
|
||||||
+ outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor"));
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
g_guiSettings.SetResolution(nextRes);
|
|
||||||
g_graphicsContext.SetVideoResolution(nextRes, outputChanged);
|
|
||||||
--
|
|
||||||
1.7.10
|
|
||||||
|
|
@ -6,10 +6,10 @@ diff -Naur a/xbmc/filesystem/CurlFile.cpp b/xbmc/filesystem/CurlFile.cpp
|
|||||||
bool CFileCurl::IsInternet(bool checkDNS /* = true */)
|
bool CFileCurl::IsInternet(bool checkDNS /* = true */)
|
||||||
{
|
{
|
||||||
- CStdString strURL = "http://www.google.com";
|
- CStdString strURL = "http://www.google.com";
|
||||||
+ CStdString strURL = "http://releases.openelec.tv";
|
+ CStdString strURL = "http://online.openelec.tv";
|
||||||
if (!checkDNS)
|
if (!checkDNS)
|
||||||
- strURL = "http://74.125.19.103"; // www.google.com ip
|
- strURL = "http://74.125.19.103"; // www.google.com ip
|
||||||
+ strURL = "http://212.101.13.11"; // openelec.tv ip
|
+ strURL = "http://212.101.13.11"; // online.openelec.tv ip
|
||||||
|
|
||||||
bool found = Exists(strURL);
|
bool found = Exists(strURL);
|
||||||
Close();
|
Close();
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
From 65a8eb83549ef092f6f192c944befa6f762c885d Mon Sep 17 00:00:00 2001
|
||||||
|
From: ronie <ronie@poedel.net>
|
||||||
|
Date: Sat, 23 Feb 2013 17:40:04 +0100
|
||||||
|
Subject: [PATCH] bump xbmc.addon to 12.1.0
|
||||||
|
|
||||||
|
---
|
||||||
|
addons/xbmc.addon/addon.xml | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/addons/xbmc.addon/addon.xml b/addons/xbmc.addon/addon.xml
|
||||||
|
index db32072..7d38949 100644
|
||||||
|
--- a/addons/xbmc.addon/addon.xml
|
||||||
|
+++ b/addons/xbmc.addon/addon.xml
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
-<addon id="xbmc.addon" version="12.0.0" provider-name="Team XBMC">
|
||||||
|
+<addon id="xbmc.addon" version="12.1.0" provider-name="Team XBMC">
|
||||||
|
<backwards-compatibility abi="12.0"/>
|
||||||
|
<requires>
|
||||||
|
<import addon="xbmc.core" version="0.1.0"/>
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
From dc648b78c4c571cc0a5d3df3e7b64c21c7d0901e Mon Sep 17 00:00:00 2001
|
||||||
|
From: fritsch <peter.fruehberger@gmail.com>
|
||||||
|
Date: Sat, 23 Feb 2013 10:44:33 +0100
|
||||||
|
Subject: [PATCH] AE: fix segfault after indirection patches
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp | 8 +++++---
|
||||||
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp b/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
|
||||||
|
index cfb7be5..6ec78c5 100644
|
||||||
|
--- a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
|
||||||
|
+++ b/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
|
||||||
|
@@ -728,7 +728,6 @@ void CSoftAE::PauseStream(CSoftAEStream *stream)
|
||||||
|
CSingleLock streamLock(m_streamLock);
|
||||||
|
RemoveStream(m_playingStreams, stream);
|
||||||
|
stream->m_paused = true;
|
||||||
|
- streamLock.Leave();
|
||||||
|
|
||||||
|
m_reOpen = true;
|
||||||
|
m_wake.Set();
|
||||||
|
@@ -874,7 +873,10 @@ IAEStream *CSoftAE::FreeStream(IAEStream *stream)
|
||||||
|
RemoveStream(m_streams , (CSoftAEStream*)stream);
|
||||||
|
// Reopen is old behaviour. Not opening when masterstream stops means clipping on S/PDIF.
|
||||||
|
if(!m_isSuspended && (m_masterStream == stream))
|
||||||
|
+ {
|
||||||
|
m_reOpen = true;
|
||||||
|
+ m_masterStream = NULL;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
delete (CSoftAEStream*)stream;
|
||||||
|
return NULL;
|
||||||
|
@@ -1058,11 +1060,11 @@ void CSoftAE::Run()
|
||||||
|
bool restart = false;
|
||||||
|
|
||||||
|
/* with the new non blocking implementation - we just reOpen here, when it tells reOpen */
|
||||||
|
- if (!m_reOpen && (this->*m_outputStageFn)(hasAudio) > 0)
|
||||||
|
+ if ((this->*m_outputStageFn)(hasAudio) > 0)
|
||||||
|
hasAudio = false; /* taken some audio - reset our silence flag */
|
||||||
|
|
||||||
|
/* if we have enough room in the buffer */
|
||||||
|
- if (!m_reOpen && m_buffer.Free() >= m_frameSize)
|
||||||
|
+ if (m_buffer.Free() >= m_frameSize)
|
||||||
|
{
|
||||||
|
/* take some data for our use from the buffer */
|
||||||
|
uint8_t *out = (uint8_t*)m_buffer.Take(m_frameSize);
|
||||||
|
--
|
||||||
|
1.7.10
|
@ -0,0 +1,64 @@
|
|||||||
|
diff -Naur xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.cpp xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.cpp
|
||||||
|
--- xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.cpp 2013-02-19 19:04:39.000000000 +0100
|
||||||
|
+++ xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.cpp 2013-02-22 18:18:47.298296862 +0100
|
||||||
|
@@ -124,7 +124,6 @@
|
||||||
|
m_started = false;
|
||||||
|
m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0;
|
||||||
|
m_autosync = 1;
|
||||||
|
- m_iSleepEndTime = DVD_NOPTS_VALUE;
|
||||||
|
|
||||||
|
m_audio_count = m_av_clock->HasAudio();
|
||||||
|
|
||||||
|
@@ -453,23 +452,13 @@
|
||||||
|
m_dropbase = 0.0f;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- // DVDPlayer sleeps until m_iSleepEndTime here before calling FlipPage.
|
||||||
|
- // Video playback in asynchronous in OMXPlayer, so we don't want to do that here, as it prevents the video fifo from being kept full.
|
||||||
|
- // So, we keep track of when FlipPage would have been called on DVDPlayer and return early if it is not time.
|
||||||
|
- // m_iSleepEndTime == DVD_NOPTS_VALUE means we are not waiting to call FlipPage, otherwise it is the time we want to call FlipPage
|
||||||
|
- if (m_iSleepEndTime == DVD_NOPTS_VALUE) {
|
||||||
|
- m_iSleepEndTime = iCurrentClock + iSleepTime;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime + DVD_MSEC_TO_TIME(500))
|
||||||
|
- return;
|
||||||
|
-
|
||||||
|
double pts_media = m_av_clock->OMXMediaTime(false, false);
|
||||||
|
ProcessOverlays(iGroupId, pts_media);
|
||||||
|
|
||||||
|
- g_renderManager.FlipPage(CThread::m_bStop, m_iSleepEndTime / DVD_TIME_BASE, -1, FS_NONE);
|
||||||
|
+ while(!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < (iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500)) )
|
||||||
|
+ Sleep(1);
|
||||||
|
|
||||||
|
- m_iSleepEndTime = DVD_NOPTS_VALUE;
|
||||||
|
+ g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, FS_NONE);
|
||||||
|
|
||||||
|
//m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime));
|
||||||
|
}
|
||||||
|
@@ -580,14 +569,12 @@
|
||||||
|
m_av_clock->OMXReset(false);
|
||||||
|
m_av_clock->UnLock();
|
||||||
|
m_started = false;
|
||||||
|
- m_iSleepEndTime = DVD_NOPTS_VALUE;
|
||||||
|
}
|
||||||
|
else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush())
|
||||||
|
{
|
||||||
|
CLog::Log(LOGDEBUG, "COMXPlayerVideo - CDVDMsg::GENERAL_FLUSH");
|
||||||
|
m_stalled = true;
|
||||||
|
m_started = false;
|
||||||
|
- m_iSleepEndTime = DVD_NOPTS_VALUE;
|
||||||
|
m_av_clock->Lock();
|
||||||
|
m_av_clock->OMXStop(false);
|
||||||
|
m_omxVideo.Reset();
|
||||||
|
diff -Naur xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.h xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.h
|
||||||
|
--- xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.h 2013-02-19 19:04:39.000000000 +0100
|
||||||
|
+++ xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.h 2013-02-22 18:18:44.166310881 +0100
|
||||||
|
@@ -49,7 +49,6 @@
|
||||||
|
bool m_open;
|
||||||
|
CDVDStreamInfo m_hints;
|
||||||
|
double m_iCurrentPts;
|
||||||
|
- double m_iSleepEndTime;
|
||||||
|
OMXClock *m_av_clock;
|
||||||
|
COMXVideo m_omxVideo;
|
||||||
|
float m_fFrameRate;
|
File diff suppressed because it is too large
Load Diff
@ -1,32 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# This file is part of OpenELEC - http://www.openelec.tv
|
|
||||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
|
||||||
#
|
|
||||||
# This Program 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, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This Program 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.tv; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
|
||||||
# http://www.gnu.org/copyleft/gpl.html
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
. config/options $1
|
|
||||||
|
|
||||||
echo "### Applying architecture based patches ###"
|
|
||||||
|
|
||||||
if [ ! $TARGET_ARCH = arm ]; then
|
|
||||||
for patch in `ls $PKG_DIR/patches.x86`; do
|
|
||||||
cat $PKG_DIR/patches.x86/$patch | patch -d \
|
|
||||||
`echo $PKG_BUILD | cut -f1 -d\ ` -p1
|
|
||||||
done
|
|
||||||
fi
|
|
@ -41,6 +41,7 @@ if [ $# -gt 0 ] ; then
|
|||||||
intel_reg_write 0x70180 0xDA004400
|
intel_reg_write 0x70180 0xDA004400
|
||||||
# set new mode
|
# set new mode
|
||||||
xrandr --output $OUTPUT --set "Broadcast RGB" "Full"
|
xrandr --output $OUTPUT --set "Broadcast RGB" "Full"
|
||||||
|
intel_reg_write 0x70180 0xDA004400
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Usage: $0 limited | full"
|
echo "Usage: $0 limited | full"
|
||||||
|
11
projects/Fusion/xbmc/advancedsettings.xml
Normal file
11
projects/Fusion/xbmc/advancedsettings.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<advancedsettings>
|
||||||
|
<!-- audio workaround for fusion -->
|
||||||
|
<audiooutput>
|
||||||
|
<dtshdpassthrough>false</dtshdpassthrough>
|
||||||
|
<multichannellpcm>false</multichannellpcm>
|
||||||
|
<passthroughaac>false</passthroughaac>
|
||||||
|
<stereoupmix>false</stereoupmix>
|
||||||
|
<truehdpassthrough>false</truehdpassthrough>
|
||||||
|
</audiooutput>
|
||||||
|
</advancedsettings>
|
@ -1,41 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
# This file is part of OpenELEC - http://www.openelec.tv
|
|
||||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
|
||||||
#
|
|
||||||
# This Program 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, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This Program 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.tv; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
|
||||||
# http://www.gnu.org/copyleft/gpl.html
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# OEM scripts
|
|
||||||
#
|
|
||||||
# runlevels: openelec, installer, textmode
|
|
||||||
|
|
||||||
if [ ! -f /etc/asound.conf -a ! -f $HOME/.config/asound.conf ]; then
|
|
||||||
|
|
||||||
DMI_BOARD_VENDOR=`cat /sys/class/dmi/id/board_vendor`
|
|
||||||
# DMI_BOARD_VERSION=`cat /sys/class/dmi/id/board_version`
|
|
||||||
SYSTEM_CPU=`grep -m1 model /proc/cpuinfo | awk '{print $3}'`
|
|
||||||
|
|
||||||
if [ "$DMI_BOARD_VENDOR" = "XtReAmEr" ]; then
|
|
||||||
if [ "$SYSTEM_CPU" = "28" ]; then
|
|
||||||
# Xtreamer Ultra 1
|
|
||||||
cp /usr/share/xtreamer/asound.conf.ultra1 /run/asound.conf
|
|
||||||
elif [ "$SYSTEM_CPU" = "54" ]; then
|
|
||||||
# Xtreamer Ultra 2
|
|
||||||
cp /usr/share/xtreamer/asound.conf.ultra2 /run/asound.conf
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
@ -1,85 +0,0 @@
|
|||||||
pcm.!default {
|
|
||||||
type plug
|
|
||||||
slave {
|
|
||||||
pcm "both"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.both {
|
|
||||||
type route
|
|
||||||
slave {
|
|
||||||
pcm multi
|
|
||||||
channels 6
|
|
||||||
}
|
|
||||||
ttable.0.0 1.0
|
|
||||||
ttable.1.1 1.0
|
|
||||||
ttable.0.2 1.0
|
|
||||||
ttable.1.3 1.0
|
|
||||||
ttable.0.4 1.0
|
|
||||||
ttable.1.5 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.multi {
|
|
||||||
type multi
|
|
||||||
slaves.a {
|
|
||||||
pcm "hdmi_hw"
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
slaves.b {
|
|
||||||
pcm "digital_hw"
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
slaves.c {
|
|
||||||
pcm "analog_hw"
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
bindings.0.slave a
|
|
||||||
bindings.0.channel 0
|
|
||||||
bindings.1.slave a
|
|
||||||
bindings.1.channel 1
|
|
||||||
bindings.2.slave b
|
|
||||||
bindings.2.channel 0
|
|
||||||
bindings.3.slave b
|
|
||||||
bindings.3.channel 1
|
|
||||||
bindings.4.slave c
|
|
||||||
bindings.4.channel 0
|
|
||||||
bindings.5.slave c
|
|
||||||
bindings.5.channel 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.hdmi_hw {
|
|
||||||
type hw
|
|
||||||
card 1
|
|
||||||
device 7
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.hdmi_formatted {
|
|
||||||
type plug
|
|
||||||
slave {
|
|
||||||
pcm hdmi_hw
|
|
||||||
rate 48000
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.hdmi_complete {
|
|
||||||
type softvol
|
|
||||||
slave.pcm hdmi_formatted
|
|
||||||
control.name hdmi_volume
|
|
||||||
control.card 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.digital_hw {
|
|
||||||
type hw
|
|
||||||
card 0
|
|
||||||
device 1
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.analog_hw {
|
|
||||||
type hw
|
|
||||||
card 0
|
|
||||||
device 0
|
|
||||||
channels 2
|
|
||||||
}
|
|
@ -1,85 +0,0 @@
|
|||||||
pcm.!default {
|
|
||||||
type plug
|
|
||||||
slave {
|
|
||||||
pcm "both"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.both {
|
|
||||||
type route
|
|
||||||
slave {
|
|
||||||
pcm multi
|
|
||||||
channels 6
|
|
||||||
}
|
|
||||||
ttable.0.0 1.0
|
|
||||||
ttable.1.1 1.0
|
|
||||||
ttable.0.2 1.0
|
|
||||||
ttable.1.3 1.0
|
|
||||||
ttable.0.4 1.0
|
|
||||||
ttable.1.5 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.multi {
|
|
||||||
type multi
|
|
||||||
slaves.a {
|
|
||||||
pcm "hdmi_hw"
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
slaves.b {
|
|
||||||
pcm "digital_hw"
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
slaves.c {
|
|
||||||
pcm "analog_hw"
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
bindings.0.slave a
|
|
||||||
bindings.0.channel 0
|
|
||||||
bindings.1.slave a
|
|
||||||
bindings.1.channel 1
|
|
||||||
bindings.2.slave b
|
|
||||||
bindings.2.channel 0
|
|
||||||
bindings.3.slave b
|
|
||||||
bindings.3.channel 1
|
|
||||||
bindings.4.slave c
|
|
||||||
bindings.4.channel 0
|
|
||||||
bindings.5.slave c
|
|
||||||
bindings.5.channel 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.hdmi_hw {
|
|
||||||
type hw
|
|
||||||
card 1
|
|
||||||
device 3
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.hdmi_formatted {
|
|
||||||
type plug
|
|
||||||
slave {
|
|
||||||
pcm hdmi_hw
|
|
||||||
rate 48000
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.hdmi_complete {
|
|
||||||
type softvol
|
|
||||||
slave.pcm hdmi_formatted
|
|
||||||
control.name hdmi_volume
|
|
||||||
control.card 1
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.digital_hw {
|
|
||||||
type hw
|
|
||||||
card 0
|
|
||||||
device 1
|
|
||||||
channels 2
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.analog_hw {
|
|
||||||
type hw
|
|
||||||
card 0
|
|
||||||
device 0
|
|
||||||
channels 2
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user