Merge branch 'master' of https://github.com/OpenELEC/OpenELEC.tv into openelec-settings

This commit is contained in:
Stephan Raue 2013-01-13 14:29:55 +01:00
commit c116822736
10 changed files with 69 additions and 101 deletions

View File

@ -13,7 +13,6 @@
<delay>175</delay> <delay>175</delay>
</refresh> </refresh>
</latency> </latency>
<allowhi10pmultithreading>true</allowhi10pmultithreading>
</video> </video>
<samba> <samba>
<clienttimeout>30</clienttimeout> <clienttimeout>30</clienttimeout>

View File

@ -1,20 +1,21 @@
From 29d0061ac7887ed8681847915d5d5bcd3af3fa9b Mon Sep 17 00:00:00 2001 From ca0ddf0673dea966af5bf0bc562f9ff69a551cd9 Mon Sep 17 00:00:00 2001
From: fritsch <peter.fruehberger@gmail.com> From: fritsch <peter.fruehberger@gmail.com>
Date: Sat, 12 Jan 2013 13:03:50 +0100 Date: Sat, 12 Jan 2013 13:03:50 +0100
Subject: [PATCH] dvdplayer: Allow multithread decoding for hi10p content Subject: [PATCH] dvdplayer: Allow multithread decoding for hi10p content by
default
This allows decoding of some hi10p material on e.g. AMD Fusion with This allows decoding of some hi10p material on e.g. AMD Fusion with
both cores at the max. This introduces a new advancedsetting to get hi10p both cores at the max. This introduces a new advancedsetting named
decoded multithreaded. disablehi10pmultithreading to disable hi10p decoded multithreaded.
--- ---
.../dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 17 +++++++++++++++-- .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 18 ++++++++++++++++--
.../dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 1 + .../dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 1 +
xbmc/settings/AdvancedSettings.cpp | 2 ++ xbmc/settings/AdvancedSettings.cpp | 2 ++
xbmc/settings/AdvancedSettings.h | 1 + xbmc/settings/AdvancedSettings.h | 1 +
4 files changed, 19 insertions(+), 2 deletions(-) 4 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index 8f81637..8164457 100644 index 8f81637..77ac6b1 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -138,6 +138,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx @@ -138,6 +138,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
@ -36,7 +37,7 @@ index 8f81637..8164457 100644
break; break;
} }
} }
@@ -247,8 +251,17 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options @@ -247,8 +251,18 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
m_pCodecContext->codec_tag = hints.codec_tag; m_pCodecContext->codec_tag = hints.codec_tag;
/* Only allow slice threading, since frame threading is more /* Only allow slice threading, since frame threading is more
* sensitive to changes in frame sizes, and it causes crashes * sensitive to changes in frame sizes, and it causes crashes
@ -44,12 +45,13 @@ index 8f81637..8164457 100644
- m_pCodecContext->thread_type = FF_THREAD_SLICE; - m_pCodecContext->thread_type = FF_THREAD_SLICE;
+ * during HW accell - so we unset it in this case. + * during HW accell - so we unset it in this case.
+ * + *
+ * When user forces it and codec is hi10p - we enable it again. + * When we detect Hi10p and user did not disable hi10pmultithreading
+ * via advancedsettings.xml we keep the ffmpeg default thread type.
+ * */ + * */
+ if(m_isHi10p && g_advancedSettings.m_videoAllowHi10pMultithreading) + if(m_isHi10p && !g_advancedSettings.m_videoDisableHi10pMultithreading)
+ { + {
+ m_pCodecContext->thread_type = FF_THREAD_FRAME; + CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Keep default threading for Hi10p: %d",
+ CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Enabled Hi10p Multithreading"); + m_pCodecContext->thread_type);
+ } + }
+ else + else
+ m_pCodecContext->thread_type = FF_THREAD_SLICE; + m_pCodecContext->thread_type = FF_THREAD_SLICE;
@ -69,14 +71,14 @@ index 61d0305..827b2d9 100644
int m_iLastKeyframe; int m_iLastKeyframe;
double m_dts; double m_dts;
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
index 16800b7..50d6462 100644 index 16800b7..1e0f3e0 100644
--- a/xbmc/settings/AdvancedSettings.cpp --- a/xbmc/settings/AdvancedSettings.cpp
+++ b/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp
@@ -112,6 +112,7 @@ void CAdvancedSettings::Initialize() @@ -112,6 +112,7 @@ void CAdvancedSettings::Initialize()
m_DXVANoDeintProcForProgressive = false; m_DXVANoDeintProcForProgressive = false;
m_videoFpsDetect = 1; m_videoFpsDetect = 1;
m_videoDefaultLatency = 0.0; m_videoDefaultLatency = 0.0;
+ m_videoAllowHi10pMultithreading = false; + m_videoDisableHi10pMultithreading = false;
m_musicUseTimeSeeking = true; m_musicUseTimeSeeking = true;
m_musicTimeSeekForward = 10; m_musicTimeSeekForward = 10;
@ -84,19 +86,19 @@ index 16800b7..50d6462 100644
XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers); XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers);
XMLUtils::GetFloat(pElement,"autoscalemaxfps",m_videoAutoScaleMaxFps, 0.0f, 1000.0f); XMLUtils::GetFloat(pElement,"autoscalemaxfps",m_videoAutoScaleMaxFps, 0.0f, 1000.0f);
XMLUtils::GetBoolean(pElement,"allowmpeg4vdpau",m_videoAllowMpeg4VDPAU); XMLUtils::GetBoolean(pElement,"allowmpeg4vdpau",m_videoAllowMpeg4VDPAU);
+ XMLUtils::GetBoolean(pElement,"allowhi10pmultithreading",m_videoAllowHi10pMultithreading); + XMLUtils::GetBoolean(pElement,"disablehi10pmultithreading",m_videoDisableHi10pMultithreading);
XMLUtils::GetBoolean(pElement,"allowmpeg4vaapi",m_videoAllowMpeg4VAAPI); XMLUtils::GetBoolean(pElement,"allowmpeg4vaapi",m_videoAllowMpeg4VAAPI);
XMLUtils::GetBoolean(pElement, "disablebackgrounddeinterlace", m_videoDisableBackgroundDeinterlace); XMLUtils::GetBoolean(pElement, "disablebackgrounddeinterlace", m_videoDisableBackgroundDeinterlace);
XMLUtils::GetInt(pElement, "useocclusionquery", m_videoCaptureUseOcclusionQuery, -1, 1); XMLUtils::GetInt(pElement, "useocclusionquery", m_videoCaptureUseOcclusionQuery, -1, 1);
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
index 27887d4..37723f7 100644 index 27887d4..fc05e41 100644
--- a/xbmc/settings/AdvancedSettings.h --- a/xbmc/settings/AdvancedSettings.h
+++ b/xbmc/settings/AdvancedSettings.h +++ b/xbmc/settings/AdvancedSettings.h
@@ -164,6 +164,7 @@ class CAdvancedSettings @@ -164,6 +164,7 @@ class CAdvancedSettings
bool m_DXVAForceProcessorRenderer; bool m_DXVAForceProcessorRenderer;
bool m_DXVANoDeintProcForProgressive; bool m_DXVANoDeintProcForProgressive;
int m_videoFpsDetect; int m_videoFpsDetect;
+ bool m_videoAllowHi10pMultithreading; + bool m_videoDisableHi10pMultithreading;
CStdString m_videoDefaultPlayer; CStdString m_videoDefaultPlayer;
CStdString m_videoDefaultDVDPlayer; CStdString m_videoDefaultDVDPlayer;

View File

@ -20,7 +20,7 @@
################################################################################ ################################################################################
PKG_NAME="open-vm-tools" PKG_NAME="open-vm-tools"
PKG_VERSION="9.2.0-799703" PKG_VERSION="9.2.2-893683"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -1,64 +0,0 @@
diff -wbBur open-vm-tools-2012.05.21-724730.org/modules/linux/vmhgfs/inode.c open-vm-tools-2012.05.21-724730/modules/linux/vmhgfs/inode.c
--- open-vm-tools-2012.05.21-724730.org/modules/linux/vmhgfs/inode.c 2012-05-23 00:12:52.000000000 +0400
+++ open-vm-tools-2012.05.21-724730/modules/linux/vmhgfs/inode.c 2012-10-02 15:39:47.000000000 +0400
@@ -1801,7 +1802,7 @@
#else
if (mask & MAY_ACCESS) { /* For sys_access. */
#endif
- struct list_head *pos;
+ struct hlist_node *pos;
int dcount = 0;
struct dentry *dentry = NULL;
@@ -1817,7 +1818,7 @@
#endif
/* Find a dentry with valid d_count. Refer bug 587789. */
- list_for_each(pos, &inode->i_dentry) {
+ list_for_each(pos, inode->i_dentry.first) {
dentry = list_entry(pos, struct dentry, d_alias);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 38)
dcount = atomic_read(&dentry->d_count);
diff -wbBur open-vm-tools-2012.05.21-724730.org/modules/linux/vmhgfs/page.c open-vm-tools-2012.05.21-724730/modules/linux/vmhgfs/page.c
--- open-vm-tools-2012.05.21-724730.org/modules/linux/vmhgfs/page.c 2012-05-23 00:12:52.000000000 +0400
+++ open-vm-tools-2012.05.21-724730/modules/linux/vmhgfs/page.c 2012-10-02 15:41:38.000000000 +0400
@@ -893,7 +893,7 @@
*/
if ((offset >= currentFileSize) ||
((pageFrom == 0) && (offset + pageTo) >= currentFileSize)) {
- void *kaddr = kmap_atomic(page, KM_USER0);
+ void *kaddr = kmap_atomic(page);
if (pageFrom) {
memset(kaddr, 0, pageFrom);
@@ -901,7 +901,7 @@
if (pageTo < PAGE_CACHE_SIZE) {
memset(kaddr + pageTo, 0, PAGE_CACHE_SIZE - pageTo);
}
- kunmap_atomic(kaddr, KM_USER0);
+ kunmap_atomic(kaddr);
flush_dcache_page(page);
}
}
diff -wbBur open-vm-tools-2012.05.21-724730.org/modules/linux/vmsync/sync.c open-vm-tools-2012.05.21-724730/modules/linux/vmsync/sync.c
--- open-vm-tools-2012.05.21-724730.org/modules/linux/vmsync/sync.c 2012-05-23 00:12:52.000000000 +0400
+++ open-vm-tools-2012.05.21-724730/modules/linux/vmsync/sync.c 2012-10-02 15:23:56.000000000 +0400
@@ -162,7 +162,7 @@
cancel_delayed_work(&state->thawTask);
list_for_each_safe(cur, tmp, &state->devices) {
dev = list_entry(cur, VmSyncBlockDevice, list);
- if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) {
+ if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) {
thaw_bdev(dev->bdev, dev->sb);
atomic_dec(&gFreezeCount);
}
@@ -237,7 +237,7 @@
* the superblock is already frozen.
*/
if (inode->i_sb->s_bdev == NULL ||
- inode->i_sb->s_frozen != SB_UNFROZEN) {
+ inode->i_sb->s_writers.frozen != SB_UNFROZEN) {
result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY;
compat_path_release(&nd);
goto exit;

View File

@ -0,0 +1,44 @@
diff --git a/modules/linux/vmhgfs/inode.c b/modules/linux/vmhgfs/inode.c
index 8d6cfbb..3642171 100644
--- a/modules/linux/vmhgfs/inode.c
+++ b/modules/linux/vmhgfs/inode.c
@@ -1852,7 +1852,7 @@ HgfsPermission(struct inode *inode,
#else
if (mask & MAY_ACCESS) { /* For sys_access. */
#endif
- struct list_head *pos;
+ struct hlist_node *pos;
int dcount = 0;
struct dentry *dentry = NULL;
@@ -1872,7 +1872,7 @@ HgfsPermission(struct inode *inode,
#endif
/* Find a dentry with valid d_count. Refer bug 587879. */
- list_for_each(pos, &inode->i_dentry) {
+ list_for_each(pos, inode->i_dentry.first) {
dentry = list_entry(pos, struct dentry, d_alias);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 38)
dcount = atomic_read(&dentry->d_count);
diff --git a/modules/linux/vmsync/sync.c b/modules/linux/vmsync/sync.c
index d05ccad..dff7fb5 100644
--- a/modules/linux/vmsync/sync.c
+++ b/modules/linux/vmsync/sync.c
@@ -162,7 +162,7 @@ VmSyncThawDevices(void *_state) // IN
cancel_delayed_work(&state->thawTask);
list_for_each_safe(cur, tmp, &state->devices) {
dev = list_entry(cur, VmSyncBlockDevice, list);
- if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) {
+ if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) {
thaw_bdev(dev->bdev, dev->sb);
atomic_dec(&gFreezeCount);
}
@@ -237,7 +237,7 @@ VmSyncAddPath(const VmSyncState *state, // IN
* the superblock is already frozen.
*/
if (inode->i_sb->s_bdev == NULL ||
- inode->i_sb->s_frozen != SB_UNFROZEN) {
+ inode->i_sb->s_writers.frozen != SB_UNFROZEN) {
result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY;
compat_path_release(&nd);
goto exit;

View File

@ -19,7 +19,7 @@
################################################################################ ################################################################################
PKG_NAME="nasm" PKG_NAME="nasm"
PKG_VERSION="2.10.06" PKG_VERSION="2.10.07"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -19,7 +19,7 @@
################################################################################ ################################################################################
PKG_NAME="pango" PKG_NAME="pango"
PKG_VERSION="1.32.5" PKG_VERSION="1.32.6"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"

View File

@ -1,12 +0,0 @@
diff -Naur pango-1.32.5/configure.ac pango-1.32.5.patch/configure.ac
--- pango-1.32.5/configure.ac 2012-12-07 03:43:25.000000000 +0100
+++ pango-1.32.5.patch/configure.ac 2013-01-12 18:24:57.601881568 +0100
@@ -54,7 +54,7 @@
dnl usage of GNU Make specific features.
AM_INIT_AUTOMAKE(1.9 gnits dist-xz no-dist-gzip -Wno-portability)
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
-AM_CONFIG_HEADER([config.h])
+AC_CONFIG_HEADERS([config.h])
PANGO_VERSION_MAJOR=pango_version_major()

View File

@ -13,7 +13,6 @@
<delay>175</delay> <delay>175</delay>
</refresh> </refresh>
</latency> </latency>
<allowhi10pmultithreading>true</allowhi10pmultithreading>
</video> </video>
<samba> <samba>
<clienttimeout>30</clienttimeout> <clienttimeout>30</clienttimeout>