xbmc-master: update FM patch

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2014-05-02 14:54:27 +02:00
parent 4a668d2f16
commit 898b474066

View File

@ -1,7 +1,7 @@
From 8b2e394a1d9b4b0a3942ae1d2f76aaa20916119e Mon Sep 17 00:00:00 2001
From 9ab9c627f63078aa198c86dc29411f36ce7f8ff1 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Mon, 28 May 2012 10:34:39 +0200
Subject: [PATCH 01/31] videoplayer: adapt lateness detection and dropping to
Subject: [PATCH 01/30] videoplayer: adapt lateness detection and dropping to
buffering
---
@ -584,10 +584,10 @@ index f8ad541..186e271 100644
1.9.1
From e39d9892089539a7b18bb3fe1191865ea45190ba Mon Sep 17 00:00:00 2001
From 8a6227c0661401600c276a73e3ad5dc4c08fea89 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Sun, 2 Sep 2012 16:05:21 +0200
Subject: [PATCH 02/31] video player: present correct pts to user for a/v sync
Subject: [PATCH 02/30] video player: present correct pts to user for a/v sync
(after buffering in renderer)
---
@ -655,10 +655,10 @@ index 186e271..59c7f09 100644
1.9.1
From 0570c7ff2c7179228fc9a27f7b3ccfac94b7bdfb Mon Sep 17 00:00:00 2001
From 056680ce851e00ffe2f9ceffe6775ad7d59872b5 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Sat, 16 Feb 2013 18:25:53 +0100
Subject: [PATCH 03/31] videoplayer: some rework and documentation
Subject: [PATCH 03/30] videoplayer: some rework and documentation
---
.../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 28 ++++++++++++++++++++--
@ -768,10 +768,10 @@ index 1d29b6f..ee07f30 100644
1.9.1
From 381675ecca0d1fb63fd8aa9f6ec739e5c18ee4f8 Mon Sep 17 00:00:00 2001
From ad8a1def3f5d317b00a7aed6d0857d5e525257dd Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Sat, 1 Jun 2013 11:21:19 +0200
Subject: [PATCH 04/31] renderer: bump buffers to 5
Subject: [PATCH 04/30] renderer: bump buffers to 5
---
xbmc/cores/VideoRenderers/BaseRenderer.h | 2 +-
@ -794,10 +794,10 @@ index dc2712a..9edfbd4 100644
1.9.1
From 35ba3c519542ad7b02b592bb2c2c9ff8a05719ce Mon Sep 17 00:00:00 2001
From c785c3aa9634deee616f6048d9a31406178bc64f Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Mon, 28 May 2012 10:41:31 +0200
Subject: [PATCH 05/31] videoplayer: update frametime, it might change due to
Subject: [PATCH 05/30] videoplayer: update frametime, it might change due to
fps detection
---
@ -821,10 +821,10 @@ index ee07f30..b3175cd 100644
1.9.1
From f12924d8f83c0dffb4275a7a56846f82a57aed2b Mon Sep 17 00:00:00 2001
From 05e2699c87bf92ece23ffccefaa92a3ed0d23c90 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Mon, 28 May 2012 10:43:06 +0200
Subject: [PATCH 06/31] videoplayer: give streams with invalid fps a chance for
Subject: [PATCH 06/30] videoplayer: give streams with invalid fps a chance for
fps detection
---
@ -848,10 +848,10 @@ index b3175cd..9c36bdb 100644
1.9.1
From 56524c7db6419b70dff776dab252bcf0d6c9a457 Mon Sep 17 00:00:00 2001
From a91f302ef87ae3cf159b0115637bc9a714281994 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Mon, 28 May 2012 10:49:05 +0200
Subject: [PATCH 07/31] dvdplayer: allow rewinding at end of stream, do a seek
Subject: [PATCH 07/30] dvdplayer: allow rewinding at end of stream, do a seek
after rewind
---
@ -888,10 +888,10 @@ index 3f2e0df..097af37 100644
1.9.1
From 52736a2ab8fc4264c02a1712449db2a91df95f1e Mon Sep 17 00:00:00 2001
From 827fb89744264491d5ad5e00ca02390c34433fdc Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Mon, 20 Aug 2012 16:06:39 +0200
Subject: [PATCH 08/31] dvdplayer: observe pts counter overflow
Subject: [PATCH 08/30] dvdplayer: observe pts counter overflow
---
.../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 197 ++++++++++++++++++++-
@ -899,7 +899,7 @@ Subject: [PATCH 08/31] dvdplayer: observe pts counter overflow
2 files changed, 200 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index 872c81f..eda7dc9 100644
index 411ff02..33a3ea1 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -18,7 +18,6 @@
@ -918,7 +918,7 @@ index 872c81f..eda7dc9 100644
#include "stdint.h"
#endif
#include "DVDDemuxFFmpeg.h"
@@ -417,6 +417,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
@@ -427,6 +427,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
CreateStreams();
@ -928,7 +928,7 @@ index 872c81f..eda7dc9 100644
return true;
}
@@ -558,6 +561,12 @@ double CDVDDemuxFFmpeg::ConvertTimestamp(int64_t pts, int den, int num)
@@ -568,6 +571,12 @@ double CDVDDemuxFFmpeg::ConvertTimestamp(int64_t pts, int den, int num)
if (pts == (int64_t)AV_NOPTS_VALUE)
return DVD_NOPTS_VALUE;
@ -941,7 +941,7 @@ index 872c81f..eda7dc9 100644
// do calculations in floats as they can easily overflow otherwise
// we don't care for having a completly exact timestamp anyway
double timestamp = (double)pts * num / den;
@@ -697,6 +706,24 @@ DemuxPacket* CDVDDemuxFFmpeg::Read()
@@ -707,6 +716,24 @@ DemuxPacket* CDVDDemuxFFmpeg::Read()
m_pkt.pkt.pts = AV_NOPTS_VALUE;
}
@ -966,7 +966,7 @@ index 872c81f..eda7dc9 100644
// copy contents into our own packet
pPacket->iSize = m_pkt.pkt.size;
@@ -830,7 +857,16 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
@@ -840,7 +867,16 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
ret = av_seek_frame(m_pFormatContext, -1, seek_pts, backwords ? AVSEEK_FLAG_BACKWARD : 0);
if(ret >= 0)
@ -983,7 +983,7 @@ index 872c81f..eda7dc9 100644
}
if(m_iCurrentPts == DVD_NOPTS_VALUE)
@@ -849,6 +885,165 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
@@ -859,6 +895,165 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
return (ret >= 0);
}
@ -1174,10 +1174,10 @@ index 44e101c..3b0f615 100644
1.9.1
From b73d59d45e8c2f0b882cde7e549a82aee59f82ac Mon Sep 17 00:00:00 2001
From 8d1d8ad97251676ab67f32f6141ab4b63399912d Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Tue, 2 Oct 2012 13:02:10 +0200
Subject: [PATCH 09/31] dvdplayer: avoid short screen flicker caused by
Subject: [PATCH 09/30] dvdplayer: avoid short screen flicker caused by
unnecessary reconfigure of renderer
---
@ -1210,10 +1210,10 @@ index 9c36bdb..322a581 100644
1.9.1
From 11c8f418d34212924278702cf6355ca6ed11496e Mon Sep 17 00:00:00 2001
From 7f13866c50c6966e4353bd3f50f94e76bfffccc3 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Thu, 11 Oct 2012 12:05:50 +0200
Subject: [PATCH 10/31] vdpau: advanced settings for auto deinterlacing
Subject: [PATCH 10/30] vdpau: advanced settings for auto deinterlacing
---
xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++----
@ -1279,10 +1279,10 @@ index 3b417a6..7075f05 100644
1.9.1
From 4da96e30c0b33a844c203ccc68ac52c027cad150 Mon Sep 17 00:00:00 2001
From bc6f2e1d7ad1c10e936f64a09ca88c9b450dd672 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Fri, 2 Nov 2012 13:20:03 +0100
Subject: [PATCH 11/31] player: fix rewind
Subject: [PATCH 11/30] player: fix rewind
---
xbmc/cores/dvdplayer/DVDMessage.h | 5 ++++-
@ -1497,10 +1497,10 @@ index 59c7f09..65dea76 100644
1.9.1
From d7de75d7c04355b6bbc834b2c4d12ce3fa3234b7 Mon Sep 17 00:00:00 2001
From 3a57088506df57b4a5c63cc58145e4fc8750d752 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Mon, 24 Dec 2012 16:02:42 +0100
Subject: [PATCH 12/31] pvr: increase changes counter of stream on stream
Subject: [PATCH 12/30] pvr: increase changes counter of stream on stream
change, cosmetics after dd307930d39d92f145a01a16600cd00e01ec39be
---
@ -1534,10 +1534,10 @@ index 6c8e6db..95cc18f 100644
1.9.1
From 4cc882624c5d58b3f9f3922b1887a6e07c708a40 Mon Sep 17 00:00:00 2001
From 84205eccef6aee0a03cb480a49cd0c805906bef0 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Fri, 14 Dec 2012 14:19:15 +0100
Subject: [PATCH 13/31] pvr: do not show selection dialog for a single menu
Subject: [PATCH 13/30] pvr: do not show selection dialog for a single menu
hook
---
@ -1575,40 +1575,46 @@ index 14c9cde..57b18a5 100644
1.9.1
From d606020220c81523be3e5170ab1b64ee647a7168 Mon Sep 17 00:00:00 2001
From 1d301eec900759c716f7b92862530b12c4ecb9ed Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Sun, 24 Mar 2013 16:04:48 +0100
Subject: [PATCH 14/31] linux: use CLOCK_MONOTONIC_RAW as this is not subject
Subject: [PATCH 14/30] linux: use CLOCK_MONOTONIC_RAW as this is not subject
to NTP
---
xbmc/threads/SystemClock.cpp | 2 +-
xbmc/utils/TimeUtils.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
xbmc/threads/SystemClock.cpp | 4 ++++
xbmc/utils/TimeUtils.cpp | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/xbmc/threads/SystemClock.cpp b/xbmc/threads/SystemClock.cpp
index 657a154..35e3abf 100644
index 657a154..e7580ba 100644
--- a/xbmc/threads/SystemClock.cpp
+++ b/xbmc/threads/SystemClock.cpp
@@ -43,7 +43,7 @@ namespace XbmcThreads
@@ -43,7 +43,11 @@ namespace XbmcThreads
now_time = (uint64_t)timeGetTime();
#else
struct timespec ts = {};
- clock_gettime(CLOCK_MONOTONIC, &ts);
+#ifdef CLOCK_MONOTONIC_RAW
+ clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
+#else
clock_gettime(CLOCK_MONOTONIC, &ts);
+#endif // CLOCK_MONOTONIC_RAW
now_time = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
#endif
if (!start_time_set)
diff --git a/xbmc/utils/TimeUtils.cpp b/xbmc/utils/TimeUtils.cpp
index c06b8c5..4390d2e 100644
index c06b8c5..7eb953d 100644
--- a/xbmc/utils/TimeUtils.cpp
+++ b/xbmc/utils/TimeUtils.cpp
@@ -43,7 +43,7 @@ int64_t CurrentHostCounter(void)
@@ -43,7 +43,11 @@ int64_t CurrentHostCounter(void)
return( (int64_t)PerformanceCount.QuadPart );
#else
struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now);
+#ifdef CLOCK_MONOTONIC_RAW
+ clock_gettime(CLOCK_MONOTONIC_RAW, &now);
+#else
clock_gettime(CLOCK_MONOTONIC, &now);
+#endif // CLOCK_MONOTONIC_RAW
return( ((int64_t)now.tv_sec * 1000000000L) + now.tv_nsec );
#endif
}
@ -1616,10 +1622,10 @@ index c06b8c5..4390d2e 100644
1.9.1
From 5959ff6e728f22c6cc6086cb5e39a0c58fefa07b Mon Sep 17 00:00:00 2001
From d98d7e1ebdb7edfb9bd646019def36e88f7fef40 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Thu, 28 Mar 2013 15:18:53 +0100
Subject: [PATCH 15/31] OMXPlayer: some caching fixes for pvr
Subject: [PATCH 15/30] OMXPlayer: some caching fixes for pvr
---
xbmc/cores/omxplayer/OMXPlayer.cpp | 3 ++-
@ -1643,17 +1649,17 @@ index 502df4a..c8579a2 100644
1.9.1
From 79db06b63ec9bbb30ce0bb8027808d2c0967fa4f Mon Sep 17 00:00:00 2001
From 0aea7d3018163a00b42df5824b4223ea33c569f1 Mon Sep 17 00:00:00 2001
From: xbmc <fernetmenta@online.de>
Date: Thu, 28 Mar 2013 20:50:59 +0100
Subject: [PATCH 16/31] fix incorrect display of fps when dr kicks in
Subject: [PATCH 16/30] fix incorrect display of fps when dr kicks in
---
xbmc/Application.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index 79bfa63..d863c6b 100644
index 42607dc..c133663 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -2331,10 +2331,11 @@ void CApplication::Render()
@ -1673,10 +1679,10 @@ index 79bfa63..d863c6b 100644
1.9.1
From f5d25c94791473ff296257e1bb7b35be267bc7d2 Mon Sep 17 00:00:00 2001
From e9308bb44a229062ce1df03d326f4a30b0793db5 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Tue, 11 Jun 2013 16:20:29 +0200
Subject: [PATCH 17/31] renderer: allow some lateness within vblank interval
Subject: [PATCH 17/30] renderer: allow some lateness within vblank interval
---
xbmc/cores/VideoRenderers/RenderManager.cpp | 12 ++++++++++--
@ -1736,17 +1742,17 @@ index 949c652b..d84ff6c 100644
1.9.1
From 04dfa8be7362e22e339a8f23df47230b841388bc Mon Sep 17 00:00:00 2001
From 86cc71987837ad77025e5b49f04063929a9cbe4e Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Thu, 25 Jul 2013 17:18:13 +0200
Subject: [PATCH 18/31] ActiveAE: slightly reduce buffer size
Subject: [PATCH 18/30] ActiveAE: slightly reduce buffer size
---
xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
index 27c237b..a01f77c 100644
index 4bd2c32..4350ac8 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
@@ -30,8 +30,8 @@ using namespace ActiveAE;
@ -1764,10 +1770,10 @@ index 27c237b..a01f77c 100644
1.9.1
From f7370bcc07fb1cd8ab03baa9fff133569c5b8668 Mon Sep 17 00:00:00 2001
From 8fd5dcb98ea869a82eba92ada598e0c7037aaf44 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Sun, 4 Aug 2013 10:11:16 +0200
Subject: [PATCH 19/31] Revert "vdpau: comment some features that will be added
Subject: [PATCH 19/30] Revert "vdpau: comment some features that will be added
later"
This reverts commit e00b4f65864d623ab4d2e9e5c06db138e661f1cf.
@ -1823,10 +1829,10 @@ index 9c962ae..485c5d3 100644
1.9.1
From 90335f7140d075a7c182767bd205c78eec93063a Mon Sep 17 00:00:00 2001
From f507d9f789433eb8e82788d25930f14240de25d0 Mon Sep 17 00:00:00 2001
From: Marcel Groothuis <margro.xbmc@gmail.com>
Date: Thu, 5 Dec 2013 22:02:50 +0100
Subject: [PATCH 21/31] ffmpeg demuxer: faster channel change for PVR addons
Subject: [PATCH 20/30] ffmpeg demuxer: faster channel change for PVR addons
without internal demuxing (such as MediaPortal, ArgusTV, MythTV, NextPVR)
Credits: FernetMenta, Davilla, Popcornmix, Whaupt
@ -1837,7 +1843,7 @@ Subject: [PATCH 21/31] ffmpeg demuxer: faster channel change for PVR addons
3 files changed, 139 insertions(+), 22 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index eda7dc9..6266fba 100644
index 33a3ea1..4616a6d 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -52,6 +52,8 @@
@ -1879,7 +1885,7 @@ index eda7dc9..6266fba 100644
if( m_pInput->GetContent().length() > 0 )
{
std::string content = m_pInput->GetContent();
@@ -378,13 +380,12 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
@@ -388,13 +390,12 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
m_bMatroska = strncmp(m_pFormatContext->iformat->name, "matroska", 8) == 0; // for "matroska.webm"
m_bAVI = strcmp(m_pFormatContext->iformat->name, "avi") == 0;
@ -1895,7 +1901,7 @@ index eda7dc9..6266fba 100644
CLog::Log(LOGDEBUG, "%s - avformat_find_stream_info starting", __FUNCTION__);
int iErr = avformat_find_stream_info(m_pFormatContext, NULL);
if (iErr < 0)
@@ -404,6 +405,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
@@ -414,6 +415,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
}
CLog::Log(LOGDEBUG, "%s - av_find_stream_info finished", __FUNCTION__);
}
@ -1905,7 +1911,7 @@ index eda7dc9..6266fba 100644
// reset any timeout
m_timeout.SetInfinite();
@@ -457,7 +461,7 @@ void CDVDDemuxFFmpeg::Reset()
@@ -467,7 +471,7 @@ void CDVDDemuxFFmpeg::Reset()
{
CDVDInputStream* pInputStream = m_pInput;
Dispose();
@ -1914,7 +1920,7 @@ index eda7dc9..6266fba 100644
}
void CDVDDemuxFFmpeg::Flush()
@@ -652,25 +656,32 @@ DemuxPacket* CDVDDemuxFFmpeg::Read()
@@ -662,25 +666,32 @@ DemuxPacket* CDVDDemuxFFmpeg::Read()
}
else
{
@ -1957,7 +1963,7 @@ index eda7dc9..6266fba 100644
if (pPacket)
{
@@ -1611,3 +1622,101 @@ bool CDVDDemuxFFmpeg::IsProgramChange()
@@ -1621,3 +1632,101 @@ bool CDVDDemuxFFmpeg::IsProgramChange()
}
return false;
}
@ -2140,10 +2146,10 @@ index ca689d0..f383563 100644
1.9.1
From 8aaaf75e93f67c6a1edca07ccc6116204676db7e Mon Sep 17 00:00:00 2001
From ff1c95948a2feb97b714f975c1ec46bb2a73836c Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Thu, 14 Nov 2013 20:35:04 +0100
Subject: [PATCH 22/31] ffmpeg demuxer: make sure we start mpegts video with an
Subject: [PATCH 21/30] ffmpeg demuxer: make sure we start mpegts video with an
i-frame
---
@ -2152,10 +2158,10 @@ Subject: [PATCH 22/31] ffmpeg demuxer: make sure we start mpegts video with an
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index 6266fba..c6472b8 100644
index 4616a6d..b2401fc 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -376,6 +376,13 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
@@ -386,6 +386,13 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->seekable == 0)
m_pFormatContext->max_analyze_duration = 500000;
@ -2169,7 +2175,7 @@ index 6266fba..c6472b8 100644
// we need to know if this is matroska or avi later
m_bMatroska = strncmp(m_pFormatContext->iformat->name, "matroska", 8) == 0; // for "matroska.webm"
m_bAVI = strcmp(m_pFormatContext->iformat->name, "avi") == 0;
@@ -404,6 +411,12 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
@@ -414,6 +421,12 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
}
}
CLog::Log(LOGDEBUG, "%s - av_find_stream_info finished", __FUNCTION__);
@ -2182,7 +2188,7 @@ index 6266fba..c6472b8 100644
}
else
m_program = 0;
@@ -1658,7 +1671,7 @@ void CDVDDemuxFFmpeg::ParsePacket(AVPacket *pkt)
@@ -1668,7 +1681,7 @@ void CDVDDemuxFFmpeg::ParsePacket(AVPacket *pkt)
}
// for video we need a decoder to get desired information into codec context
@ -2191,7 +2197,7 @@ index 6266fba..c6472b8 100644
(!st->codec->width || st->codec->pix_fmt == PIX_FMT_NONE))
{
// open a decoder, it will be cleared down by ffmpeg on closing the stream
@@ -1720,3 +1733,19 @@ bool CDVDDemuxFFmpeg::IsVideoReady()
@@ -1730,3 +1743,19 @@ bool CDVDDemuxFFmpeg::IsVideoReady()
}
return true;
}
@ -2227,10 +2233,10 @@ index 083182e..26ee264 100644
1.9.1
From b1a69aca87ab81242602fbbff061b9be2a32fefe Mon Sep 17 00:00:00 2001
From e4b926317f94da822655617f90895ff6ec76c3e1 Mon Sep 17 00:00:00 2001
From: Wolfgang Haupt <w.haupt@at-visions.com>
Date: Thu, 5 Dec 2013 22:11:57 +0100
Subject: [PATCH 23/31] DVDFactoryDemuxer: skip streaminfo for udp tcp and
Subject: [PATCH 22/30] DVDFactoryDemuxer: skip streaminfo for udp tcp and
pvr-channels
---
@ -2354,20 +2360,20 @@ index b94e94c..b45630f 100644
1.9.1
From e73bfd14cbcfe83c21110b19e08d6f52f41f81e7 Mon Sep 17 00:00:00 2001
From ca39086aa377763796ee634d86969a0af6516bc1 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Tue, 28 Jan 2014 08:43:29 +0100
Subject: [PATCH 24/31] squash fast switch
Subject: [PATCH 23/30] squash fast switch
---
.../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 23 ++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index c6472b8..63f1372 100644
index b2401fc..6eedf1f7 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -1710,15 +1710,19 @@ void CDVDDemuxFFmpeg::ParsePacket(AVPacket *pkt)
@@ -1720,15 +1720,19 @@ void CDVDDemuxFFmpeg::ParsePacket(AVPacket *pkt)
bool CDVDDemuxFFmpeg::IsVideoReady()
{
AVStream *st;
@ -2390,7 +2396,7 @@ index c6472b8..63f1372 100644
}
}
else
@@ -1726,12 +1730,15 @@ bool CDVDDemuxFFmpeg::IsVideoReady()
@@ -1736,12 +1740,15 @@ bool CDVDDemuxFFmpeg::IsVideoReady()
for (unsigned int i = 0; i < m_pFormatContext->nb_streams; i++)
{
st = m_pFormatContext->streams[i];
@ -2410,7 +2416,7 @@ index c6472b8..63f1372 100644
}
void CDVDDemuxFFmpeg::ResetVideoStreams()
@@ -1743,7 +1750,7 @@ void CDVDDemuxFFmpeg::ResetVideoStreams()
@@ -1753,7 +1760,7 @@ void CDVDDemuxFFmpeg::ResetVideoStreams()
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
{
if (st->codec->extradata)
@ -2423,10 +2429,10 @@ index c6472b8..63f1372 100644
1.9.1
From 62afa1ee0982f4c68ce5a885220576f5751af81a Mon Sep 17 00:00:00 2001
From 95f5612000b79f805b4e8342ed1f3250eb17b76a Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Sun, 13 Apr 2014 10:52:26 +0200
Subject: [PATCH 25/31] squash fast channel
Subject: [PATCH 24/30] squash fast channel
---
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 13 ++++++++++---
@ -2434,7 +2440,7 @@ Subject: [PATCH 25/31] squash fast channel
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index 63f1372..0e4be8e 100644
index 6eedf1f7..90618e8 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -156,6 +156,7 @@ CDVDDemuxFFmpeg::CDVDDemuxFFmpeg() : CDVDDemux()
@ -2445,7 +2451,7 @@ index 63f1372..0e4be8e 100644
}
CDVDDemuxFFmpeg::~CDVDDemuxFFmpeg()
@@ -376,11 +377,10 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
@@ -386,11 +387,10 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->seekable == 0)
m_pFormatContext->max_analyze_duration = 500000;
@ -2458,7 +2464,7 @@ index 63f1372..0e4be8e 100644
}
// we need to know if this is matroska or avi later
@@ -412,14 +412,17 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
@@ -422,14 +422,17 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo)
}
CLog::Log(LOGDEBUG, "%s - av_find_stream_info finished", __FUNCTION__);
@ -2477,7 +2483,7 @@ index 63f1372..0e4be8e 100644
// reset any timeout
m_timeout.SetInfinite();
@@ -1711,6 +1714,10 @@ bool CDVDDemuxFFmpeg::IsVideoReady()
@@ -1721,6 +1724,10 @@ bool CDVDDemuxFFmpeg::IsVideoReady()
{
AVStream *st;
bool hasVideo = false;
@ -2503,10 +2509,10 @@ index 26ee264..322a3b8 100644
1.9.1
From 6a8561267a785e169a01ecda71ac9676744f2bbd Mon Sep 17 00:00:00 2001
From cf700a9420c35c07950ebcbe494d07cfb71471aa Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Sun, 22 Dec 2013 14:52:29 +0100
Subject: [PATCH 26/31] linux: add shared lib for sse4 operations
Subject: [PATCH 25/30] linux: add shared lib for sse4 operations
---
Makefile.in | 8 ++-
@ -2521,7 +2527,7 @@ Subject: [PATCH 26/31] linux: add shared lib for sse4 operations
create mode 100644 xbmc/linux/sse4/Makefile.in
diff --git a/Makefile.in b/Makefile.in
index 002bb23..78211b3 100644
index a91a38b..2d2c187 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -311,6 +311,12 @@ CHECK_LIBADD=@WAYLAND_TEST_LIBS@
@ -2547,7 +2553,7 @@ index 002bb23..78211b3 100644
externals: codecs libs visualizations screensavers libaddon pvraddons
diff --git a/configure.in b/configure.in
index 3fcb178..9140b25 100644
index af674d8..0b532d5 100644
--- a/configure.in
+++ b/configure.in
@@ -827,6 +827,19 @@ elif test "$use_arch" = "arm"; then
@ -2570,7 +2576,7 @@ index 3fcb178..9140b25 100644
# Checks for library functions.
AC_FUNC_ALLOCA
AC_FUNC_CHOWN
@@ -2598,6 +2611,10 @@ if test "$use_codec_libstagefright" = "yes"; then
@@ -2596,6 +2609,10 @@ if test "$use_codec_libstagefright" = "yes"; then
OUTPUT_FILES="$OUTPUT_FILES xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/Makefile"
fi
@ -2581,7 +2587,7 @@ index 3fcb178..9140b25 100644
OUTPUT_FILES="$OUTPUT_FILES \
xbmc/interfaces/python/Makefile \
xbmc/interfaces/python/test/Makefile"
@@ -2676,6 +2693,7 @@ AC_SUBST(USE_ANDROID)
@@ -2673,6 +2690,7 @@ AC_SUBST(USE_ANDROID)
AC_SUBST(GTEST_CONFIGURED)
AC_SUBST(USE_DOXYGEN)
AC_SUBST(USE_PVR_ADDONS)
@ -2590,10 +2596,10 @@ index 3fcb178..9140b25 100644
# pushd and popd are not available in other shells besides bash, so implement
# our own pushd/popd functions
diff --git a/xbmc/DllPaths_generated.h.in b/xbmc/DllPaths_generated.h.in
index 8e81555..dd6e0ed 100644
index 8c0b453..668b4a4 100644
--- a/xbmc/DllPaths_generated.h.in
+++ b/xbmc/DllPaths_generated.h.in
@@ -94,4 +94,7 @@
@@ -93,4 +93,7 @@
/* xkbcommon */
#define DLL_PATH_XKBCOMMON "@XKBCOMMON_LIBRARY_SONAME@"
@ -2801,10 +2807,10 @@ index 0000000..45aa826
1.9.1
From 2e6de7059eabe3c19d50d4dd171f4fa0842acffe Mon Sep 17 00:00:00 2001
From 7bac41adfaac4f20008ea4ca7d45927b87cc3d67 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Thu, 19 Dec 2013 15:36:11 +0100
Subject: [PATCH 27/31] vaapi: option to enable sw filters
Subject: [PATCH 26/30] vaapi: option to enable sw filters
---
language/English/strings.po | 17 ++-
@ -3450,63 +3456,20 @@ index 9c5469b..b30e450 100644
1.9.1
From 6d4f961cdac4c91aa8288dc35a618f735eb8868a Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Fri, 24 Jan 2014 18:29:33 +0100
Subject: [PATCH 28/31] dvdplayer: flush ffmpeg after hw decoder returned an
error
---
xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index f308c09..830ce60 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -458,7 +458,12 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
result = m_pHardware->Decode(m_pCodecContext, NULL);
if(result)
+ {
+ if (result & VC_ERROR)
+ avcodec_flush_buffers(m_pCodecContext);
+
return result;
+ }
}
if(m_pFilterGraph)
@@ -580,7 +585,11 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
int result;
if(m_pHardware && !m_pHardware->UseFilter())
+ {
result = m_pHardware->Decode(m_pCodecContext, m_pFrame);
+ if (result & VC_ERROR)
+ avcodec_flush_buffers(m_pCodecContext);
+ }
else if(m_pFilterGraph)
result = FilterProcess(m_pFrame);
else
--
1.9.1
From bce0b976b37a99b3acddc2b1368f984c5c3bf712 Mon Sep 17 00:00:00 2001
From 5b5c312c9a49f54cf53b0e67e9de00abe612db8f Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Tue, 28 Jan 2014 10:05:26 +0100
Subject: [PATCH 29/31] xbmc pr 3080
Subject: [PATCH 27/30] xbmc pr 3080
---
.../dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index 830ce60..8715afb 100644
index f308c09..4bc3b76 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -482,6 +482,14 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
@@ -477,6 +477,14 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
av_init_packet(&avpkt);
avpkt.data = pData;
avpkt.size = iSize;
@ -3521,7 +3484,7 @@ index 830ce60..8715afb 100644
/* We lie, but this flag is only used by pngdec.c.
* Setting it correctly would allow CorePNG decoding. */
avpkt.flags = AV_PKT_FLAG_KEY;
@@ -702,8 +710,10 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture)
@@ -693,8 +701,10 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture)
pDvdVideoPicture->dts = m_dts;
m_dts = DVD_NOPTS_VALUE;
@ -3538,20 +3501,20 @@ index 830ce60..8715afb 100644
1.9.1
From c0100ee3de95343854714e52635291d58150da74 Mon Sep 17 00:00:00 2001
From 2783a6e973bacfb17e088e717ea33a11948ad64e Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Tue, 28 Jan 2014 17:24:58 +0100
Subject: [PATCH 30/31] set preatpicture if pts is equal to last frame
Subject: [PATCH 28/30] set preatpicture if pts is equal to last frame
---
xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index 8715afb..dec00d5 100644
index 4bc3b76..755b7aa 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -713,7 +713,15 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture)
@@ -704,7 +704,15 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture)
int64_t bpts = av_frame_get_best_effort_timestamp(m_pFrame);
if(bpts != AV_NOPTS_VALUE)
@ -3571,10 +3534,10 @@ index 8715afb..dec00d5 100644
1.9.1
From 40dad6e6f9c1a96ac4e2f337e348b03f1e029bd3 Mon Sep 17 00:00:00 2001
From 80c9b818dfc0bf082ef3df6225f4683a76d68f99 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Tue, 11 Feb 2014 18:15:06 +0100
Subject: [PATCH 31/31] ActiveAE: add some debug logging
Subject: [PATCH 29/30] ActiveAE: add some debug logging
---
xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp | 6 ++++++
@ -3601,3 +3564,88 @@ index 0287e73..6904cb9 100644
--
1.9.1
From e2648a3ffcdb9a8eb954923f2993ae3127197b64 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Fri, 2 May 2014 07:37:26 +0200
Subject: [PATCH 30/30] VDPAU: improve error handling
---
xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 15 +++++++++++++--
xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h | 1 +
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
index 485c5d3..671dcc3 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
@@ -933,6 +933,7 @@ bool CDecoder::ConfigVDPAU(AVCodecContext* avctx, int ref_frames)
m_inMsgEvent.Reset();
m_vdpauConfigured = true;
+ m_ErrorCount = 0;
return true;
}
@@ -1051,7 +1052,9 @@ int CDecoder::Render(struct AVCodecContext *s, struct AVFrame *src,
vdp->m_bufferStats.Get(decoded, processed, rend);
vdp_st = vdp->m_vdpauConfig.context->GetProcs().vdp_decoder_render(vdp->m_vdpauConfig.vdpDecoder,
surf, info, buffers_used, buffers);
- vdp->CheckStatus(vdp_st, __LINE__);
+ if (vdp->CheckStatus(vdp_st, __LINE__))
+ return -1;
+
uint64_t diff = CurrentHostCounter() - startTime;
if (diff*1000/CurrentHostFrequency() > 30)
CLog::Log(LOGDEBUG, "CVDPAU::DrawSlice - VdpDecoderRender long decoding: %d ms, dec: %d, proc: %d, rend: %d", (int)((diff*1000)/CurrentHostFrequency()), decoded, processed, rend);
@@ -1238,6 +1241,8 @@ bool CDecoder::CheckStatus(VdpStatus vdp_st, int line)
{
CLog::Log(LOGERROR, " (VDPAU) Error: %s(%d) at %s:%d\n", m_vdpauConfig.context->GetProcs().vdp_get_error_string(vdp_st), vdp_st, __FILE__, line);
+ m_ErrorCount++;
+
if(m_DisplayState == VDPAU_OPEN)
{
if (vdp_st == VDP_STATUS_DISPLAY_PREEMPTED)
@@ -1245,12 +1250,13 @@ bool CDecoder::CheckStatus(VdpStatus vdp_st, int line)
m_DisplayEvent.Reset();
m_DisplayState = VDPAU_LOST;
}
- else
+ else if (m_ErrorCount > 2)
m_DisplayState = VDPAU_ERROR;
}
return true;
}
+ m_ErrorCount = 0;
return false;
}
@@ -2925,6 +2931,11 @@ bool COutput::Init()
bool COutput::Uninit()
{
m_mixer.Dispose();
+ glFlush();
+ while(ProcessSyncPicture())
+ {
+ Sleep(10);
+ }
GLUnmapSurfaces();
ReleaseBufferPool();
DestroyGlxContext();
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
index 18bb05d..4d046c1 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
@@ -608,6 +608,7 @@ class CDecoder
} m_DisplayState;
CCriticalSection m_DecoderSection;
CEvent m_DisplayEvent;
+ int m_ErrorCount;
ThreadIdentifier m_decoderThread;
bool m_vdpauConfigured;
--
1.9.1