mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
kodi: update to kodi-14-2d88a9a, update RPi support patch, update FM support patch
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
f107fee66f
commit
4a3bd93539
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="kodi-theme-Confluence"
|
||||
PKG_VERSION="14-6acca80"
|
||||
PKG_VERSION="14-2d88a9a"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="kodi"
|
||||
PKG_VERSION="14-6acca80"
|
||||
PKG_VERSION="14-2d88a9a"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -1,18 +1,18 @@
|
||||
From 48428057ad993372a2ab509c5b24fd82976130db Mon Sep 17 00:00:00 2001
|
||||
From 30460a1c4259c3b3591349a894dc51ccbd22fd2b Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Mon, 28 May 2012 10:34:39 +0200
|
||||
Subject: [PATCH 01/23] videoplayer: adapt lateness detection and dropping to
|
||||
Subject: [PATCH 01/24] videoplayer: adapt lateness detection and dropping to
|
||||
buffering
|
||||
|
||||
---
|
||||
xbmc/cores/VideoRenderers/RenderManager.cpp | 16 +-
|
||||
xbmc/cores/VideoRenderers/RenderManager.h | 12 +-
|
||||
.../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 38 +++-
|
||||
.../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 40 ++++-
|
||||
.../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 41 +++++
|
||||
.../DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 7 +
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 199 ++++++++++++++++-----
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.h | 23 ++-
|
||||
7 files changed, 288 insertions(+), 48 deletions(-)
|
||||
7 files changed, 290 insertions(+), 48 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
index 529f62f..1ecdc16 100644
|
||||
@ -114,16 +114,16 @@ index c438651..d3c2f1d 100644
|
||||
double m_presenterr;
|
||||
double m_errorbuff[ERRORBUFFSIZE];
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
|
||||
index 0386abb..e80358f 100644
|
||||
index 0386abb..1dd7590 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
|
||||
@@ -149,6 +149,10 @@ struct DVDVideoUserData
|
||||
#define DVP_FLAG_NOSKIP 0x00000010 // indicate this picture should never be dropped
|
||||
#define DVP_FLAG_DROPPED 0x00000020 // indicate that this picture has been dropped in decoder stage, will have no data
|
||||
|
||||
+#define DVP_FLAG_DROPDEINT 0x00000040 // indicate that this picture was requested to have been dropped in deint stage
|
||||
+#define DVP_FLAG_NO_POSTPROC 0x00000100 // see GetCodecStats
|
||||
+#define DVP_FLAG_DRAIN 0x00000200 // see GetCodecStats
|
||||
+#define DVD_CODEC_CTRL_SKIPDEINT 0x01000000 // indicate that this picture was requested to have been dropped in deint stage
|
||||
+#define DVD_CODEC_CTRL_NO_POSTPROC 0x02000000 // see GetCodecStats
|
||||
+#define DVD_CODEC_CTRL_DRAIN 0x04000000 // see GetCodecStats
|
||||
+
|
||||
// DVP_FLAG 0x00000100 - 0x00000f00 is in use by libmpeg2!
|
||||
|
||||
@ -145,7 +145,7 @@ index 0386abb..e80358f 100644
|
||||
/**
|
||||
* Number of references to old pictures that are allowed to
|
||||
* be retained when calling decode on the next demux packet
|
||||
@@ -300,4 +305,35 @@ class CDVDVideoCodec
|
||||
@@ -300,4 +305,37 @@ class CDVDVideoCodec
|
||||
* Interact with user settings so that user disabled codecs are disabled
|
||||
*/
|
||||
static bool IsCodecDisabled(DVDCodecAvailableType* map, unsigned int size, AVCodecID id);
|
||||
@ -169,10 +169,12 @@ index 0386abb..e80358f 100644
|
||||
+ /**
|
||||
+ * Codec can be informed by player with the following flags:
|
||||
+ *
|
||||
+ * DVP_FLAG_NO_POSTPROC : if speed is not normal the codec can switch off
|
||||
+ * postprocessing and de-interlacing
|
||||
+ * DVD_CODEC_CTRL_NO_POSTPROC :
|
||||
+ * if speed is not normal the codec can switch off
|
||||
+ * postprocessing and de-interlacing
|
||||
+ *
|
||||
+ * DVP_FLAG_DRAIN : codecs may do postprocessing and de-interlacing.
|
||||
+ * DVD_CODEC_CTRL_DRAIN :
|
||||
+ * codecs may do postprocessing and de-interlacing.
|
||||
+ * If video buffers in RenderManager are about to run dry,
|
||||
+ * this is signaled to codec. Codec can wait for post-proc
|
||||
+ * to be finished instead of returning empty and getting another
|
||||
@ -182,7 +184,7 @@ index 0386abb..e80358f 100644
|
||||
+ virtual void SetCodecControl(int flags) {}
|
||||
};
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
index 0c4f0e5..2d955c2 100644
|
||||
index 0c4f0e5..84b1eff 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
@@ -173,6 +173,7 @@ CDVDVideoCodecFFmpeg::CDVDVideoCodecFFmpeg() : CDVDVideoCodec()
|
||||
@ -227,7 +229,7 @@ index 0c4f0e5..2d955c2 100644
|
||||
+
|
||||
+ if (m_requestSkipDeint)
|
||||
+ {
|
||||
+ pDvdVideoPicture->iFlags |= DVP_FLAG_DROPDEINT;
|
||||
+ pDvdVideoPicture->iFlags |= DVD_CODEC_CTRL_SKIPDEINT;
|
||||
+ m_skippedDeint = 1;
|
||||
+ }
|
||||
+ else
|
||||
@ -289,7 +291,7 @@ index 1f564bb..48564d1 100644
|
||||
+ int m_codecControlFlags;
|
||||
};
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index 5a758ab..e0bb4d0 100644
|
||||
index 5a758ab..c3db6ba 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -38,6 +38,7 @@
|
||||
@ -367,9 +369,9 @@ index 5a758ab..e0bb4d0 100644
|
||||
+ }
|
||||
+ int codecControl = 0;
|
||||
+ if (iDropDirective & EOS_BUFFER_LEVEL)
|
||||
+ codecControl |= DVP_FLAG_DRAIN;
|
||||
+ codecControl |= DVD_CODEC_CTRL_DRAIN;
|
||||
+ if (m_speed > DVD_PLAYSPEED_NORMAL)
|
||||
+ codecControl |= DVP_FLAG_NO_POSTPROC;
|
||||
+ codecControl |= DVD_CODEC_CTRL_NO_POSTPROC;
|
||||
+ m_pVideoCodec->SetCodecControl(codecControl);
|
||||
+ if (iDropDirective & EOS_DROPPED)
|
||||
+ {
|
||||
@ -510,7 +512,7 @@ index 5a758ab..e0bb4d0 100644
|
||||
+ m_droppingStats.m_dropRequests = 0;
|
||||
+ CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - dropped pictures, Sleeptime: %f, Bufferlevel: %d, Gain: %f", iSleepTime, iBufferLevel, iGain);
|
||||
+ }
|
||||
+ else if (iDroppedPics < 0 && iGain > 1/m_fFrameRate)
|
||||
+ else if (iDroppedPics < 0 && iGain > (1/m_fFrameRate + 0.001))
|
||||
+ {
|
||||
+ CDroppingStats::CGain gain;
|
||||
+ gain.gain = iGain;
|
||||
@ -643,10 +645,10 @@ index dcd0ffd..1f0e661 100644
|
||||
};
|
||||
|
||||
|
||||
From d3979dfb41485a01d35de62105b2b9544f19f113 Mon Sep 17 00:00:00 2001
|
||||
From 2d14428010383f68e60acdfff79ed9fcba1030af Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sun, 2 Sep 2012 16:05:21 +0200
|
||||
Subject: [PATCH 02/23] video player: present correct pts to user for a/v sync
|
||||
Subject: [PATCH 02/24] video player: present correct pts to user for a/v sync
|
||||
(after buffering in renderer)
|
||||
|
||||
---
|
||||
@ -655,7 +657,7 @@ Subject: [PATCH 02/23] video player: present correct pts to user for a/v sync
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index e0bb4d0..43382b5 100644
|
||||
index c3db6ba..48f8f60 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -1451,6 +1451,22 @@ void CDVDPlayerVideo::ResetFrameRateCalc()
|
||||
@ -695,10 +697,10 @@ index 1f0e661..a38a9c3 100644
|
||||
double GetOutputDelay(); /* returns the expected delay, from that a packet is put in queue */
|
||||
int GetDecoderFreeSpace() { return 0; }
|
||||
|
||||
From e766dcceb4930978a72f0119198c4bc872e988c9 Mon Sep 17 00:00:00 2001
|
||||
From 47b6e876f00601c7b15712be16a3e2f13e7aca91 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Mon, 28 May 2012 10:41:31 +0200
|
||||
Subject: [PATCH 03/23] videoplayer: update frametime, it might change due to
|
||||
Subject: [PATCH 03/24] videoplayer: update frametime, it might change due to
|
||||
fps detection
|
||||
|
||||
---
|
||||
@ -706,7 +708,7 @@ Subject: [PATCH 03/23] videoplayer: update frametime, it might change due to
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index 43382b5..ec0c0eb 100644
|
||||
index 48f8f60..4f35e3a 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -705,6 +705,8 @@ void CDVDPlayerVideo::Process()
|
||||
@ -719,34 +721,10 @@ index 43382b5..ec0c0eb 100644
|
||||
{
|
||||
m_codecname = m_pVideoCodec->GetName();
|
||||
|
||||
From 37e14f9e3bf28721741d43f7e31a46cf2d9ab0bc Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Mon, 28 May 2012 10:43:06 +0200
|
||||
Subject: [PATCH 04/23] videoplayer: give streams with invalid fps a chance for
|
||||
fps detection
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index ec0c0eb..b2ee525 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -1495,7 +1495,7 @@ void CDVDPlayerVideo::CalcFrameRate()
|
||||
frameduration = m_pullupCorrection.GetMinFrameDuration();
|
||||
|
||||
if ((frameduration==DVD_NOPTS_VALUE) ||
|
||||
- ((g_advancedSettings.m_videoFpsDetect == 1) && ((m_pullupCorrection.GetPatternLength() > 1) && !m_pullupCorrection.VFRDetection())))
|
||||
+ ((g_advancedSettings.m_videoFpsDetect == 1) && ((m_pullupCorrection.GetPatternLength() > 1) && !m_pullupCorrection.VFRDetection() && !m_bFpsInvalid)))
|
||||
{
|
||||
//reset the stored framerates if no good framerate was detected
|
||||
m_fStableFrameRate = 0.0;
|
||||
|
||||
From aa89c7ec1c7108cfec60b2804f3297fa5043a480 Mon Sep 17 00:00:00 2001
|
||||
From 5acb9e7a7c70dc38ca18799d4908b96f242551dc Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Mon, 28 May 2012 10:49:05 +0200
|
||||
Subject: [PATCH 05/23] dvdplayer: allow rewinding at end of stream, do a seek
|
||||
Subject: [PATCH 04/24] dvdplayer: allow rewinding at end of stream, do a seek
|
||||
after rewind
|
||||
|
||||
---
|
||||
@ -780,10 +758,10 @@ index 63cbe66..f5f697e 100644
|
||||
// audioplayer, stops outputing audio to audiorendere, but still tries to
|
||||
// sleep an correct amount for each packet
|
||||
|
||||
From 782c60b53a253d348b68ac74e3596820e673f431 Mon Sep 17 00:00:00 2001
|
||||
From 35a6e814939d4e4f900595f2b1efd5a2aa131ab0 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Mon, 20 Aug 2012 16:06:39 +0200
|
||||
Subject: [PATCH 06/23] dvdplayer: observe pts counter overflow
|
||||
Subject: [PATCH 05/24] dvdplayer: observe pts counter overflow
|
||||
|
||||
---
|
||||
.../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 197 ++++++++++++++++++++-
|
||||
@ -791,7 +769,7 @@ Subject: [PATCH 06/23] dvdplayer: observe pts counter overflow
|
||||
2 files changed, 199 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
index 81a511e..9626dae 100644
|
||||
index a9a8f0a..368de0e 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
@@ -18,7 +18,6 @@
|
||||
@ -810,8 +788,8 @@ index 81a511e..9626dae 100644
|
||||
#include "stdint.h"
|
||||
#endif
|
||||
#include "DVDDemuxFFmpeg.h"
|
||||
@@ -476,6 +476,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo, bool filein
|
||||
if (isMpegts && GetNrOfStreams() == 0)
|
||||
@@ -477,6 +477,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo, bool filein
|
||||
if (skipCreateStreams && GetNrOfStreams() == 0)
|
||||
m_program = 0;
|
||||
|
||||
+ m_bPtsWrapChecked = false;
|
||||
@ -820,7 +798,7 @@ index 81a511e..9626dae 100644
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -616,6 +619,12 @@ double CDVDDemuxFFmpeg::ConvertTimestamp(int64_t pts, int den, int num)
|
||||
@@ -617,6 +620,12 @@ double CDVDDemuxFFmpeg::ConvertTimestamp(int64_t pts, int den, int num)
|
||||
if (pts == (int64_t)AV_NOPTS_VALUE)
|
||||
return DVD_NOPTS_VALUE;
|
||||
|
||||
@ -833,7 +811,7 @@ index 81a511e..9626dae 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;
|
||||
@@ -762,6 +771,24 @@ DemuxPacket* CDVDDemuxFFmpeg::Read()
|
||||
@@ -763,6 +772,24 @@ DemuxPacket* CDVDDemuxFFmpeg::Read()
|
||||
m_pkt.pkt.pts = AV_NOPTS_VALUE;
|
||||
}
|
||||
|
||||
@ -858,7 +836,7 @@ index 81a511e..9626dae 100644
|
||||
// copy contents into our own packet
|
||||
pPacket->iSize = m_pkt.pkt.size;
|
||||
|
||||
@@ -895,7 +922,16 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
|
||||
@@ -896,7 +923,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)
|
||||
@ -874,8 +852,8 @@ index 81a511e..9626dae 100644
|
||||
+ }
|
||||
}
|
||||
|
||||
if(m_iCurrentPts == DVD_NOPTS_VALUE)
|
||||
@@ -914,6 +950,165 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
|
||||
if(m_currentPts == DVD_NOPTS_VALUE)
|
||||
@@ -915,6 +951,165 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
|
||||
return (ret >= 0);
|
||||
}
|
||||
|
||||
@ -1042,7 +1020,7 @@ index 81a511e..9626dae 100644
|
||||
{
|
||||
CSingleLock lock(m_critSection);
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h
|
||||
index 48f0a69..bdc84b2 100644
|
||||
index c2f607d..b7daa34 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h
|
||||
@@ -102,6 +102,7 @@ class CDVDDemuxFFmpeg : public CDVDDemux
|
||||
@ -1062,10 +1040,10 @@ index 48f0a69..bdc84b2 100644
|
||||
};
|
||||
|
||||
|
||||
From f2d82a63baea6ab7324eeca1a3161318db7abbf4 Mon Sep 17 00:00:00 2001
|
||||
From eb6c9ab05b9e11f9fba0ec2187102dbf50b48e47 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Tue, 2 Oct 2012 13:02:10 +0200
|
||||
Subject: [PATCH 07/23] dvdplayer: avoid short screen flicker caused by
|
||||
Subject: [PATCH 06/24] dvdplayer: avoid short screen flicker caused by
|
||||
unnecessary reconfigure of renderer
|
||||
|
||||
---
|
||||
@ -1073,7 +1051,7 @@ Subject: [PATCH 07/23] dvdplayer: avoid short screen flicker caused by
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index b2ee525..aef2635 100644
|
||||
index 4f35e3a..4c0551d 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -1052,13 +1052,16 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
|
||||
@ -1095,10 +1073,10 @@ index b2ee525..aef2635 100644
|
||||
|| ( m_output.extended_format != pPicture->extended_format )
|
||||
|| ( m_output.color_matrix != pPicture->color_matrix && pPicture->color_matrix != 0 ) // don't reconfigure on unspecified
|
||||
|
||||
From 28a8600a537cdb87495baf7f7b98dbdd97e57d97 Mon Sep 17 00:00:00 2001
|
||||
From 8a105d14b71c550128a2bb45a2e620992161ea28 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Thu, 11 Oct 2012 12:05:50 +0200
|
||||
Subject: [PATCH 08/23] vdpau: advanced settings for auto deinterlacing
|
||||
Subject: [PATCH 07/24] vdpau: advanced settings for auto deinterlacing
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++----
|
||||
@ -1161,18 +1139,18 @@ index 7df586e..eccd25c 100644
|
||||
bool m_videoVDPAUdeintSkipChromaHD;
|
||||
bool m_musicUseTimeSeeking;
|
||||
|
||||
From 3b3bdcac20a65cea8bed5de0a90cae5d8c13edf5 Mon Sep 17 00:00:00 2001
|
||||
From 399576b60dda39f175c8e06b7f53be5a61e6417f Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Fri, 2 Nov 2012 13:20:03 +0100
|
||||
Subject: [PATCH 09/23] player: fix rewind
|
||||
Subject: [PATCH 08/24] player: fix rewind
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDMessage.h | 5 ++++-
|
||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 30 +++++++++++++++++++-----------
|
||||
xbmc/cores/dvdplayer/DVDPlayer.h | 7 ++++---
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 4 +++-
|
||||
xbmc/cores/dvdplayer/DVDMessage.h | 5 +++-
|
||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 41 ++++++++++++++++++++++-----------
|
||||
xbmc/cores/dvdplayer/DVDPlayer.h | 8 ++++---
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 18 ++++++++++++++-
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.h | 1 +
|
||||
5 files changed, 31 insertions(+), 16 deletions(-)
|
||||
5 files changed, 55 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDMessage.h b/xbmc/cores/dvdplayer/DVDMessage.h
|
||||
index a365821..07366df 100644
|
||||
@ -1212,10 +1190,18 @@ index a365821..07366df 100644
|
||||
|
||||
class CDVDMsgPlayerSeekChapter : public CDVDMsg
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
index f5f697e..7eb564a 100644
|
||||
index f5f697e..60dab1f 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
@@ -1794,11 +1794,13 @@ void CDVDPlayer::HandlePlaySpeed()
|
||||
@@ -590,6 +590,7 @@ bool CDVDPlayer::OpenFile(const CFileItem& file, const CPlayerOptions &options)
|
||||
SetPlaySpeed(DVD_PLAYSPEED_NORMAL);
|
||||
|
||||
m_State.Clear();
|
||||
+ memset(&m_SpeedState, 0, sizeof(m_SpeedState));
|
||||
m_UpdateApplication = 0;
|
||||
m_offset_pts = 0;
|
||||
m_CurrentAudio.originaldts = DVD_NOPTS_VALUE;
|
||||
@@ -1794,11 +1795,13 @@ void CDVDPlayer::HandlePlaySpeed()
|
||||
}
|
||||
else if (m_CurrentVideo.id >= 0
|
||||
&& (m_CurrentVideo.inited == true || GetPlaySpeed() < 0) // allow rewind at end of file
|
||||
@ -1230,16 +1216,26 @@ index f5f697e..7eb564a 100644
|
||||
// check how much off clock video is when ff/rw:ing
|
||||
// a problem here is that seeking isn't very accurate
|
||||
// and since the clock will be resynced after seek
|
||||
@@ -1817,7 +1819,7 @@ void CDVDPlayer::HandlePlaySpeed()
|
||||
@@ -1815,9 +1818,15 @@ void CDVDPlayer::HandlePlaySpeed()
|
||||
|
||||
if(error > DVD_MSEC_TO_TIME(1000))
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "CDVDPlayer::Process - Seeking to catch up");
|
||||
int64_t iTime = (int64_t)DVD_TIME_TO_MSEC(m_clock.GetClock() + m_State.time_offset + 500000.0 * m_playSpeed / DVD_PLAYSPEED_NORMAL);
|
||||
- CLog::Log(LOGDEBUG, "CDVDPlayer::Process - Seeking to catch up");
|
||||
- int64_t iTime = (int64_t)DVD_TIME_TO_MSEC(m_clock.GetClock() + m_State.time_offset + 500000.0 * m_playSpeed / DVD_PLAYSPEED_NORMAL);
|
||||
- m_messenger.Put(new CDVDMsgPlayerSeek((int) iTime, (GetPlaySpeed() < 0), true, false, false, true));
|
||||
+ m_messenger.Put(new CDVDMsgPlayerSeek((int) iTime, (GetPlaySpeed() < 0), true, false, false, true, false));
|
||||
+ error = (int)DVD_TIME_TO_MSEC(m_clock.GetClock()) - m_SpeedState.lastseekpts;
|
||||
+
|
||||
+ if(abs(error) > 1000)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, "CDVDPlayer::Process - Seeking to catch up");
|
||||
+ m_SpeedState.lastseekpts = (int)DVD_TIME_TO_MSEC(m_clock.GetClock());
|
||||
+ int iTime = DVD_TIME_TO_MSEC(m_clock.GetClock() + m_State.time_offset + 500000.0 * m_playSpeed / DVD_PLAYSPEED_NORMAL);
|
||||
+ m_messenger.Put(new CDVDMsgPlayerSeek(iTime, (GetPlaySpeed() < 0), true, false, false, true, false));
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2289,7 +2291,7 @@ void CDVDPlayer::HandleMessages()
|
||||
@@ -2289,7 +2298,7 @@ void CDVDPlayer::HandleMessages()
|
||||
else
|
||||
m_StateInput.dts = start;
|
||||
|
||||
@ -1248,7 +1244,7 @@ index f5f697e..7eb564a 100644
|
||||
}
|
||||
else
|
||||
CLog::Log(LOGWARNING, "error while seeking");
|
||||
@@ -2425,9 +2427,10 @@ void CDVDPlayer::HandleMessages()
|
||||
@@ -2425,9 +2434,10 @@ void CDVDPlayer::HandleMessages()
|
||||
double offset;
|
||||
offset = CDVDClock::GetAbsoluteClock() - m_State.timestamp;
|
||||
offset *= m_playSpeed / DVD_PLAYSPEED_NORMAL;
|
||||
@ -1260,7 +1256,7 @@ index f5f697e..7eb564a 100644
|
||||
m_State.timestamp = CDVDClock::GetAbsoluteClock();
|
||||
}
|
||||
|
||||
@@ -2443,7 +2446,8 @@ void CDVDPlayer::HandleMessages()
|
||||
@@ -2443,7 +2453,8 @@ void CDVDPlayer::HandleMessages()
|
||||
// do a seek after rewind, clock is not in sync with current pts
|
||||
if (m_playSpeed < 0 && speed >= 0)
|
||||
{
|
||||
@ -1270,7 +1266,7 @@ index f5f697e..7eb564a 100644
|
||||
}
|
||||
|
||||
// if playspeed is different then DVD_PLAYSPEED_NORMAL or DVD_PLAYSPEED_PAUSE
|
||||
@@ -3414,7 +3418,7 @@ void CDVDPlayer::UpdateClockMaster()
|
||||
@@ -3414,7 +3425,7 @@ void CDVDPlayer::UpdateClockMaster()
|
||||
}
|
||||
}
|
||||
|
||||
@ -1279,7 +1275,7 @@ index f5f697e..7eb564a 100644
|
||||
{
|
||||
double startpts;
|
||||
if(accurate && !m_omxplayer_mode)
|
||||
@@ -3426,19 +3430,23 @@ void CDVDPlayer::FlushBuffers(bool queued, double pts, bool accurate)
|
||||
@@ -3426,19 +3437,23 @@ void CDVDPlayer::FlushBuffers(bool queued, double pts, bool accurate)
|
||||
if(startpts != DVD_NOPTS_VALUE)
|
||||
startpts -= m_offset_pts;
|
||||
|
||||
@ -1307,7 +1303,7 @@ index f5f697e..7eb564a 100644
|
||||
m_CurrentTeletext.dts = DVD_NOPTS_VALUE;
|
||||
m_CurrentTeletext.startpts = startpts;
|
||||
|
||||
@@ -3482,7 +3490,7 @@ void CDVDPlayer::FlushBuffers(bool queued, double pts, bool accurate)
|
||||
@@ -3482,7 +3497,7 @@ void CDVDPlayer::FlushBuffers(bool queued, double pts, bool accurate)
|
||||
m_CurrentTeletext.started = false;
|
||||
}
|
||||
|
||||
@ -1317,7 +1313,7 @@ index f5f697e..7eb564a 100644
|
||||
UpdatePlayState(0);
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h
|
||||
index dac00e9..9bcfc02 100644
|
||||
index dac00e9..dbce0a0 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.h
|
||||
@@ -339,7 +339,7 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer
|
||||
@ -1329,7 +1325,7 @@ index dac00e9..9bcfc02 100644
|
||||
|
||||
void HandleMessages();
|
||||
void HandlePlaySpeed();
|
||||
@@ -393,8 +393,9 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer
|
||||
@@ -393,8 +393,10 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer
|
||||
int m_playSpeed;
|
||||
struct SSpeedState
|
||||
{
|
||||
@ -1337,15 +1333,37 @@ index dac00e9..9bcfc02 100644
|
||||
- double lasttime;
|
||||
+ double lastpts; // holds last display pts during ff/rw operations
|
||||
+ int64_t lasttime;
|
||||
+ int lastseekpts;
|
||||
+ double lastabstime;
|
||||
} m_SpeedState;
|
||||
|
||||
int m_errorCount;
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index aef2635..bd97d62 100644
|
||||
index 4c0551d..0a4de2c 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -1466,7 +1466,7 @@ double CDVDPlayerVideo::GetCurrentPts()
|
||||
@@ -1160,6 +1160,20 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
|
||||
pts += m_iVideoDelay - DVD_SEC_TO_TIME(g_renderManager.GetDisplayLatency());
|
||||
}
|
||||
|
||||
+ if (m_speed < 0)
|
||||
+ {
|
||||
+ double inputPts = m_droppingStats.m_lastPts;
|
||||
+ double renderPts = m_droppingStats.m_lastRenderPts;
|
||||
+ if (pts > renderPts)
|
||||
+ {
|
||||
+ if (inputPts >= renderPts)
|
||||
+ {
|
||||
+ Sleep(50);
|
||||
+ }
|
||||
+ return result | EOS_DROPPED;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
// calculate the time we need to delay this picture before displaying
|
||||
double iSleepTime, iClockSleep, iFrameSleep, iPlayingClock, iCurrentClock;
|
||||
|
||||
@@ -1466,7 +1480,7 @@ double CDVDPlayerVideo::GetCurrentPts()
|
||||
|
||||
if( m_stalled )
|
||||
iRenderPts = DVD_NOPTS_VALUE;
|
||||
@ -1354,7 +1372,7 @@ index aef2635..bd97d62 100644
|
||||
iRenderPts = iRenderPts - max(0.0, iSleepTime);
|
||||
|
||||
return iRenderPts;
|
||||
@@ -1567,6 +1567,8 @@ int CDVDPlayerVideo::CalcDropRequirement(double pts)
|
||||
@@ -1567,6 +1581,8 @@ int CDVDPlayerVideo::CalcDropRequirement(double pts)
|
||||
int iDroppedPics = -1;
|
||||
int iBufferLevel;
|
||||
|
||||
@ -1376,17 +1394,17 @@ index a38a9c3..4e1b3d6 100644
|
||||
unsigned int m_dropRequests;
|
||||
};
|
||||
|
||||
From 3a6811a6f1672382882081e4a73961d69620ee71 Mon Sep 17 00:00:00 2001
|
||||
From 48438ffa62caf266c82ef33dcd10d58d914de8ae Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Thu, 28 Mar 2013 20:50:59 +0100
|
||||
Subject: [PATCH 10/23] fix incorrect display of fps when dr kicks in
|
||||
Subject: [PATCH 09/24] 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 d5604dc..1d7990d 100644
|
||||
index ee59549..338039e 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -2326,10 +2326,11 @@ void CApplication::Render()
|
||||
@ -1403,10 +1421,10 @@ index d5604dc..1d7990d 100644
|
||||
|
||||
g_renderManager.UpdateResolution();
|
||||
|
||||
From e3368368565f4266876bba560bfedaa5dcb978cd Mon Sep 17 00:00:00 2001
|
||||
From 47eea9d903f1bc98d4fb81365f40dcce508a3ae5 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Thu, 25 Jul 2013 17:18:13 +0200
|
||||
Subject: [PATCH 11/23] ActiveAE: slightly reduce buffer size
|
||||
Subject: [PATCH 10/24] ActiveAE: slightly reduce buffer size
|
||||
|
||||
---
|
||||
xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 4 ++--
|
||||
@ -1428,10 +1446,10 @@ index 0e4d8da..99538dc 100644
|
||||
|
||||
void CEngineStats::Reset(unsigned int sampleRate)
|
||||
|
||||
From 52caa1299bb91e7807d24c28cdeb26b53186ca90 Mon Sep 17 00:00:00 2001
|
||||
From 55ccc433a49843001e8c2120aca2bc5ae245f521 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Sun, 4 Aug 2013 10:11:16 +0200
|
||||
Subject: [PATCH 12/23] Revert "vdpau: comment some features that will be added
|
||||
Subject: [PATCH 11/24] Revert "vdpau: comment some features that will be added
|
||||
later"
|
||||
|
||||
This reverts commit e00b4f65864d623ab4d2e9e5c06db138e661f1cf.
|
||||
@ -1484,17 +1502,17 @@ index 8c353af..33ec1f4 100644
|
||||
m_mixersteps = 1;
|
||||
}
|
||||
|
||||
From 562200d01eaaf57f307a228b06360a5a3aa969fc Mon Sep 17 00:00:00 2001
|
||||
From e41a871e824620d5b2d7f59cec4bcabba66d75ec Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Tue, 28 Jan 2014 10:05:26 +0100
|
||||
Subject: [PATCH 13/23] xbmc pr 3080
|
||||
Subject: [PATCH 12/24] xbmc pr 3080
|
||||
|
||||
---
|
||||
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 2d955c2..245ef50 100644
|
||||
index 84b1eff..67f0e80 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
@@ -475,6 +475,14 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
|
||||
@ -1513,10 +1531,10 @@ index 2d955c2..245ef50 100644
|
||||
* Setting it correctly would allow CorePNG decoding. */
|
||||
avpkt.flags = AV_PKT_FLAG_KEY;
|
||||
|
||||
From aad64950df2c09264bff2b96de02be539b3c4be0 Mon Sep 17 00:00:00 2001
|
||||
From 2c55fb28f8287d6fdc6dbca4b2f9dd2aea9fabe2 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Tue, 11 Feb 2014 18:15:06 +0100
|
||||
Subject: [PATCH 14/23] ActiveAE: add some debug logging
|
||||
Subject: [PATCH 13/24] ActiveAE: add some debug logging
|
||||
|
||||
---
|
||||
xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp | 6 ++++++
|
||||
@ -1541,64 +1559,15 @@ index 96bce12..7bd9c9b 100644
|
||||
return copied;
|
||||
}
|
||||
|
||||
From ec7b7635467812012195d432588068198e5afca9 Mon Sep 17 00:00:00 2001
|
||||
From 6c08bfc1b52f13e5a28aab3cf59bc780470c9fb8 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Sat, 23 Aug 2014 11:42:31 +0200
|
||||
Subject: [PATCH 15/23] dvdplayer: rename codec ctrl flags
|
||||
Subject: [PATCH 14/24] dvdplayer: rename codec ctrl flags
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 14 ++++++++------
|
||||
.../dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 2 +-
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++----
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 4 ++--
|
||||
4 files changed, 15 insertions(+), 13 deletions(-)
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
|
||||
index e80358f..1dd7590 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
|
||||
@@ -149,9 +149,9 @@ struct DVDVideoUserData
|
||||
#define DVP_FLAG_NOSKIP 0x00000010 // indicate this picture should never be dropped
|
||||
#define DVP_FLAG_DROPPED 0x00000020 // indicate that this picture has been dropped in decoder stage, will have no data
|
||||
|
||||
-#define DVP_FLAG_DROPDEINT 0x00000040 // indicate that this picture was requested to have been dropped in deint stage
|
||||
-#define DVP_FLAG_NO_POSTPROC 0x00000100 // see GetCodecStats
|
||||
-#define DVP_FLAG_DRAIN 0x00000200 // see GetCodecStats
|
||||
+#define DVD_CODEC_CTRL_SKIPDEINT 0x01000000 // indicate that this picture was requested to have been dropped in deint stage
|
||||
+#define DVD_CODEC_CTRL_NO_POSTPROC 0x02000000 // see GetCodecStats
|
||||
+#define DVD_CODEC_CTRL_DRAIN 0x04000000 // see GetCodecStats
|
||||
|
||||
// DVP_FLAG 0x00000100 - 0x00000f00 is in use by libmpeg2!
|
||||
|
||||
@@ -325,10 +325,12 @@ class CDVDVideoCodec
|
||||
/**
|
||||
* Codec can be informed by player with the following flags:
|
||||
*
|
||||
- * DVP_FLAG_NO_POSTPROC : if speed is not normal the codec can switch off
|
||||
- * postprocessing and de-interlacing
|
||||
+ * DVD_CODEC_CTRL_NO_POSTPROC :
|
||||
+ * if speed is not normal the codec can switch off
|
||||
+ * postprocessing and de-interlacing
|
||||
*
|
||||
- * DVP_FLAG_DRAIN : codecs may do postprocessing and de-interlacing.
|
||||
+ * DVD_CODEC_CTRL_DRAIN :
|
||||
+ * codecs may do postprocessing and de-interlacing.
|
||||
* If video buffers in RenderManager are about to run dry,
|
||||
* this is signaled to codec. Codec can wait for post-proc
|
||||
* to be finished instead of returning empty and getting another
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
index 245ef50..67f0e80 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
@@ -665,7 +665,7 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture)
|
||||
|
||||
if (m_requestSkipDeint)
|
||||
{
|
||||
- pDvdVideoPicture->iFlags |= DVP_FLAG_DROPDEINT;
|
||||
+ pDvdVideoPicture->iFlags |= DVD_CODEC_CTRL_SKIPDEINT;
|
||||
m_skippedDeint = 1;
|
||||
}
|
||||
else
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
index 33ec1f4..300b901 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||
@ -1639,27 +1608,11 @@ index 33ec1f4..300b901 100644
|
||||
{
|
||||
m_mixersteps = 1;
|
||||
}
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index bd97d62..d30a0ad 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -523,9 +523,9 @@ void CDVDPlayerVideo::Process()
|
||||
}
|
||||
int codecControl = 0;
|
||||
if (iDropDirective & EOS_BUFFER_LEVEL)
|
||||
- codecControl |= DVP_FLAG_DRAIN;
|
||||
+ codecControl |= DVD_CODEC_CTRL_DRAIN;
|
||||
if (m_speed > DVD_PLAYSPEED_NORMAL)
|
||||
- codecControl |= DVP_FLAG_NO_POSTPROC;
|
||||
+ codecControl |= DVD_CODEC_CTRL_NO_POSTPROC;
|
||||
m_pVideoCodec->SetCodecControl(codecControl);
|
||||
if (iDropDirective & EOS_DROPPED)
|
||||
{
|
||||
|
||||
From a10235c233e6033b0aa684fe4089871a703b5746 Mon Sep 17 00:00:00 2001
|
||||
From dcf0b4a0d5a8786f31eac6ee0693ab83d9f27cbc Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Fri, 13 Jun 2014 14:37:16 +0200
|
||||
Subject: [PATCH 16/23] VAAPI: implement codec control flags
|
||||
Subject: [PATCH 15/24] VAAPI: implement codec control flags
|
||||
|
||||
---
|
||||
.../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 21 ++++++++++++++++++---
|
||||
@ -1707,7 +1660,7 @@ index 67f0e80..2984847 100644
|
||||
pDvdVideoPicture->pts = DVD_NOPTS_VALUE;
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
|
||||
index 87e66fe..732e92b 100644
|
||||
index 707d609..e0709226 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
|
||||
@@ -739,6 +739,8 @@ int CDecoder::Decode(AVCodecContext* avctx, AVFrame* pFrame)
|
||||
@ -1763,56 +1716,54 @@ index 87e66fe..732e92b 100644
|
||||
VAProcFilterParameterBufferDeinterlacing *filterParams;
|
||||
VABufferID pipelineBuf;
|
||||
|
||||
From ebcd73d2e432a07f5b6a9730fb947ce3c09c3846 Mon Sep 17 00:00:00 2001
|
||||
From 8a0a138bad535b58fb0d485540c21b08888cecb1 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Thu, 4 Sep 2014 09:25:48 +0200
|
||||
Subject: [PATCH 17/23] consider rounding errors in dropping control
|
||||
Date: Sun, 28 Sep 2014 13:52:11 +0200
|
||||
Subject: [PATCH 16/24] pthreads: use mutex protocol PTHREAD_PRIO_INHERIT
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
xbmc/threads/platform/pthreads/Implementation.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index d30a0ad..c2d4b31 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -1606,7 +1606,7 @@ int CDVDPlayerVideo::CalcDropRequirement(double pts)
|
||||
m_droppingStats.m_dropRequests = 0;
|
||||
CLog::Log(LOGDEBUG,"CDVDPlayerVideo::CalcDropRequirement - dropped pictures, Sleeptime: %f, Bufferlevel: %d, Gain: %f", iSleepTime, iBufferLevel, iGain);
|
||||
}
|
||||
- else if (iDroppedPics < 0 && iGain > 1/m_fFrameRate)
|
||||
+ else if (iDroppedPics < 0 && iGain > (1/m_fFrameRate + 0.001))
|
||||
{
|
||||
CDroppingStats::CGain gain;
|
||||
gain.gain = iGain;
|
||||
diff --git a/xbmc/threads/platform/pthreads/Implementation.cpp b/xbmc/threads/platform/pthreads/Implementation.cpp
|
||||
index 628db54..123526d 100644
|
||||
--- a/xbmc/threads/platform/pthreads/Implementation.cpp
|
||||
+++ b/xbmc/threads/platform/pthreads/Implementation.cpp
|
||||
@@ -38,6 +38,7 @@ namespace XbmcThreads
|
||||
{
|
||||
pthread_mutexattr_init(&recursiveAttr);
|
||||
pthread_mutexattr_settype(&recursiveAttr,PTHREAD_MUTEX_RECURSIVE);
|
||||
+ pthread_mutexattr_setprotocol(&recursiveAttr,PTHREAD_PRIO_INHERIT);
|
||||
alreadyCalled = true;
|
||||
}
|
||||
return true; // note, we never call destroy.
|
||||
|
||||
|
||||
From c71b09b5a21b5ff95527e33ba4ad921ff64a64f3 Mon Sep 17 00:00:00 2001
|
||||
From 0d3311557fe32505770ed28bcb8fbcde7c751399 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Sat, 4 Oct 2014 21:25:31 +0200
|
||||
Subject: [PATCH 19/23] vaapi: lock gfx context on pre-cleanup
|
||||
Subject: [PATCH 17/24] vaapi: lock gfx context on pre-cleanup
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
|
||||
index 732e92b..849e26a 100644
|
||||
index e0709226..a086d13 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
|
||||
@@ -618,6 +618,7 @@ long CDecoder::Release()
|
||||
CSingleLock lock(m_DecoderSection);
|
||||
CLog::Log(LOGNOTICE,"VAAPI::Release pre-cleanup");
|
||||
CLog::Log(LOGDEBUG,"VAAPI::Release pre-cleanup");
|
||||
|
||||
+ CSingleLock lock1(g_graphicsContext);
|
||||
Message *reply;
|
||||
if (m_vaapiOutput.m_controlPort.SendOutMessageSync(COutputControlProtocol::PRECLEANUP,
|
||||
&reply,
|
||||
|
||||
From 7aea148f78db91c4a2e75c280972e98735791a28 Mon Sep 17 00:00:00 2001
|
||||
From 42bff6329800ba57459d135f54d0ca7d8eef1b79 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Sun, 19 Oct 2014 21:34:47 +0300
|
||||
Subject: [PATCH 20/23] [linux] Add FDEventMonitor for monitoring file
|
||||
Subject: [PATCH 18/24] [linux] Add FDEventMonitor for monitoring file
|
||||
descriptors
|
||||
|
||||
Add FDEventMonitor helper thread for monitoring file descriptors for
|
||||
@ -2192,10 +2143,10 @@ index c147d8f..744fd06 100644
|
||||
SRCS += LinuxTimezone.cpp
|
||||
SRCS += PosixMountProvider.cpp
|
||||
|
||||
From b465939ca69cc2e02190a815d7b3e7291e14ca87 Mon Sep 17 00:00:00 2001
|
||||
From a7369e2f95722730f22ebd72e1d22bbf3d0fabe5 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Sun, 19 Oct 2014 21:36:44 +0300
|
||||
Subject: [PATCH 21/23] [AE] ALSA: Add ALSADeviceMonitor for monitoring card
|
||||
Subject: [PATCH 19/24] [AE] ALSA: Add ALSADeviceMonitor for monitoring card
|
||||
removals/additions
|
||||
|
||||
---
|
||||
@ -2471,10 +2422,10 @@ index 0000000..f9e2f26
|
||||
+#endif
|
||||
+
|
||||
|
||||
From f5555b53d7886387a624f011e7a58ec5cd247635 Mon Sep 17 00:00:00 2001
|
||||
From 51947c5716e52af108d701b6fb573e8ca145f132 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Sun, 19 Oct 2014 21:37:49 +0300
|
||||
Subject: [PATCH 22/23] [AE] ALSA: Add ALSADeviceMonitor for monitoring ELD
|
||||
Subject: [PATCH 20/24] [AE] ALSA: Add ALSADeviceMonitor for monitoring ELD
|
||||
changes
|
||||
|
||||
ELD changes can happen e.g. when the connected HDMI sink is changed.
|
||||
@ -2815,17 +2766,120 @@ index 0000000..56dfd50
|
||||
+#endif
|
||||
+
|
||||
|
||||
From 09b1724482fd9666e976c831976e30afe33537ab Mon Sep 17 00:00:00 2001
|
||||
From 1800cdd76ee8224dce93b7cea3e96d2c3df9ee49 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Sun, 2 Nov 2014 21:10:51 +0200
|
||||
Subject: [PATCH 21/24] [AE] ALSA: Add more logging to device change triggers
|
||||
|
||||
---
|
||||
xbmc/cores/AudioEngine/Sinks/alsa/ALSADeviceMonitor.cpp | 13 +++++++++++--
|
||||
xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp | 2 ++
|
||||
2 files changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/AudioEngine/Sinks/alsa/ALSADeviceMonitor.cpp b/xbmc/cores/AudioEngine/Sinks/alsa/ALSADeviceMonitor.cpp
|
||||
index e3269ad..b0243b9 100644
|
||||
--- a/xbmc/cores/AudioEngine/Sinks/alsa/ALSADeviceMonitor.cpp
|
||||
+++ b/xbmc/cores/AudioEngine/Sinks/alsa/ALSADeviceMonitor.cpp
|
||||
@@ -113,12 +113,21 @@ void CALSADeviceMonitor::FDEventCallback(int id, int fd, short revents, void *da
|
||||
const char* action = udev_device_get_action(device);
|
||||
const char* soundInitialized = udev_device_get_property_value(device, "SOUND_INITIALIZED");
|
||||
|
||||
+ if (!action || !soundInitialized)
|
||||
+ continue;
|
||||
+
|
||||
/* cardX devices emit a "change" event when ready (i.e. all subdevices added) */
|
||||
- if (action && soundInitialized &&
|
||||
- (strcmp(action, "change") == 0 || strcmp(action, "remove") == 0))
|
||||
+ if (strcmp(action, "change") == 0)
|
||||
{
|
||||
+ CLog::Log(LOGDEBUG, "CALSADeviceMonitor - ALSA card added (\"%s\", \"%s\")", udev_device_get_syspath(device), udev_device_get_devpath(device));
|
||||
audioDevicesChanged = true;
|
||||
}
|
||||
+ else if (strcmp(action, "remove") == 0)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, "CALSADeviceMonitor - ALSA card removed");
|
||||
+ audioDevicesChanged = true;
|
||||
+ }
|
||||
+
|
||||
udev_device_unref(device);
|
||||
}
|
||||
|
||||
diff --git a/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp b/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp
|
||||
index 9b595ee..f9ca9ae 100644
|
||||
--- a/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp
|
||||
+++ b/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp
|
||||
@@ -120,6 +120,8 @@ int CALSAHControlMonitor::HCTLCallback(snd_hctl_elem_t *elem, unsigned int mask)
|
||||
*/
|
||||
if (mask & SND_CTL_EVENT_MASK_VALUE)
|
||||
{
|
||||
+ CLog::Log(LOGDEBUG, "CALSAHControlMonitor - Monitored ALSA hctl value changed");
|
||||
+
|
||||
CAEFactory::DeviceChange();
|
||||
}
|
||||
|
||||
|
||||
From f8baf30230b7db45865e13260298830313481263 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Tue, 4 Nov 2014 19:22:03 +0200
|
||||
Subject: [PATCH 22/24] [AE] ALSA: Fix DeviceChange event triggered by
|
||||
enumeration
|
||||
|
||||
All hctl elements get an SND_CTL_EVENT_MASK_REMOVE event when the ctl
|
||||
file descriptor is closed, which is done e.g. when re-enumerating
|
||||
devices.
|
||||
|
||||
(SND_CTL_EVENT_MASK_REMOVE & SND_CTL_EVENT_MASK_VALUE) is true, and
|
||||
therefore we re-triggered enumeration (depending a bit on timing).
|
||||
|
||||
Fix that by checking for the special _REMOVE value first and ignoring
|
||||
those events.
|
||||
---
|
||||
.../cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp | 16 ++++++++++++----
|
||||
1 file changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp b/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp
|
||||
index f9ca9ae..89a7585 100644
|
||||
--- a/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp
|
||||
+++ b/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp
|
||||
@@ -114,14 +114,22 @@ void CALSAHControlMonitor::Stop()
|
||||
|
||||
int CALSAHControlMonitor::HCTLCallback(snd_hctl_elem_t *elem, unsigned int mask)
|
||||
{
|
||||
- /*
|
||||
- * Currently we just re-enumerate on any change.
|
||||
- * Custom callbacks for handling other control monitoring may be implemented when needed.
|
||||
- */
|
||||
+ /* _REMOVE is a special value instead of a bit and must be checked first */
|
||||
+ if (mask == SND_CTL_EVENT_MASK_REMOVE)
|
||||
+ {
|
||||
+ /* Either the device was removed (which is handled in ALSADeviceMonitor instead)
|
||||
+ * or snd_hctl_close() got called. */
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
if (mask & SND_CTL_EVENT_MASK_VALUE)
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "CALSAHControlMonitor - Monitored ALSA hctl value changed");
|
||||
|
||||
+ /*
|
||||
+ * Currently we just re-enumerate on any change.
|
||||
+ * Custom callbacks for handling other control monitoring may be implemented when needed.
|
||||
+ */
|
||||
CAEFactory::DeviceChange();
|
||||
}
|
||||
|
||||
|
||||
From 8d85a4aec9e17f8ddb7e26e01df83f50b7c53eb2 Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Hochecker <fernetmenta@online.de>
|
||||
Date: Sat, 1 Nov 2014 07:47:16 +0100
|
||||
Subject: [PATCH 23/23] videorefclock: use videosync DRM on AMD systems
|
||||
Subject: [PATCH 23/24] videorefclock: use videosync DRM on AMD systems
|
||||
|
||||
---
|
||||
xbmc/video/VideoReferenceClock.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp
|
||||
index 03f8bf3..1d403bd 100644
|
||||
index be6be5f..2b506ad 100644
|
||||
--- a/xbmc/video/VideoReferenceClock.cpp
|
||||
+++ b/xbmc/video/VideoReferenceClock.cpp
|
||||
@@ -99,7 +99,8 @@ void CVideoReferenceClock::Process()
|
||||
@ -2838,3 +2892,44 @@ index 03f8bf3..1d403bd 100644
|
||||
m_pVideoSync = new CVideoSyncDRM();
|
||||
#if defined(HAS_GLX)
|
||||
else
|
||||
|
||||
From f5211d149c7af1b3f9273ed64c08a4af76fbc066 Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <Peter.Fruehberger@gmail.com>
|
||||
Date: Fri, 7 Nov 2014 14:56:49 +0100
|
||||
Subject: [PATCH 24/24] DVDVideoCodecFFmpeg: Squash me to: 2551ee3a
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
index 368de0e..e9edd0c 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
@@ -928,7 +928,7 @@ bool CDVDDemuxFFmpeg::SeekTime(int time, bool backwords, double *startpts)
|
||||
|
||||
// seek may fail silently on streams which allow discontinuity
|
||||
// if current timestamp is way off asume a pts overflow and try bisect seek
|
||||
- if (m_bPtsWrap && fabs(time - m_iCurrentPts/1000) > 10000)
|
||||
+ if (m_bPtsWrap && fabs(time - m_currentPts/1000) > 10000)
|
||||
{
|
||||
ret = SeekTimeDiscont(seek_pts, backwords) ? 1 : -1;
|
||||
}
|
||||
@@ -1026,7 +1026,7 @@ bool CDVDDemuxFFmpeg::SeekTimeDiscont(int64_t pts, bool backwards)
|
||||
bool ret = SeekByte(pos_max);
|
||||
if (ret)
|
||||
{
|
||||
- m_iCurrentPts = ConvertTimestamp(ts_max, m_pFormatContext->streams[defaultStream]->time_base.den,
|
||||
+ m_currentPts = ConvertTimestamp(ts_max, m_pFormatContext->streams[defaultStream]->time_base.den,
|
||||
m_pFormatContext->streams[defaultStream]->time_base.num);
|
||||
}
|
||||
return ret;
|
||||
@@ -1103,7 +1103,7 @@ bool CDVDDemuxFFmpeg::SeekTimeDiscont(int64_t pts, bool backwards)
|
||||
bool ret = SeekByte(pos);
|
||||
if (ret)
|
||||
{
|
||||
- m_iCurrentPts = ConvertTimestamp(ts, m_pFormatContext->streams[defaultStream]->time_base.den,
|
||||
+ m_currentPts = ConvertTimestamp(ts, m_pFormatContext->streams[defaultStream]->time_base.den,
|
||||
m_pFormatContext->streams[defaultStream]->time_base.num);
|
||||
}
|
||||
|
||||
|
@ -1,43 +0,0 @@
|
||||
From 65342cfaebe4fcbea2e44bb61791b82197772ca1 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Tue, 4 Nov 2014 19:22:03 +0200
|
||||
Subject: [PATCH] [AE] ALSA: Fix DeviceChange event triggered by enumeration
|
||||
|
||||
All hctl elements get an SND_CTL_EVENT_MASK_REMOVE event when the ctl
|
||||
file descriptor is closed, which is done e.g. when re-enumerating
|
||||
devices.
|
||||
|
||||
(SND_CTL_EVENT_MASK_REMOVE & SND_CTL_EVENT_MASK_VALUE) is true, and
|
||||
therefore we re-triggered enumeration (depending a bit on timing).
|
||||
|
||||
Fix that by checking for the special _REMOVE value first and ignoring
|
||||
those events.
|
||||
---
|
||||
diff -Naur kodi-14-d6947be/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp kodi-14-d6947be.patch/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp
|
||||
--- kodi-14-d6947be/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp 2014-11-05 09:22:22.494136199 +0100
|
||||
+++ kodi-14-d6947be.patch/xbmc/cores/AudioEngine/Sinks/alsa/ALSAHControlMonitor.cpp 2014-11-05 09:25:41.754440039 +0100
|
||||
@@ -114,12 +114,20 @@
|
||||
|
||||
int CALSAHControlMonitor::HCTLCallback(snd_hctl_elem_t *elem, unsigned int mask)
|
||||
{
|
||||
- /*
|
||||
- * Currently we just re-enumerate on any change.
|
||||
- * Custom callbacks for handling other control monitoring may be implemented when needed.
|
||||
- */
|
||||
+ /* _REMOVE is a special value instead of a bit and must be checked first */
|
||||
+ if (mask == SND_CTL_EVENT_MASK_REMOVE)
|
||||
+ {
|
||||
+ /* Either the device was removed (which is handled in ALSADeviceMonitor instead)
|
||||
+ * or snd_hctl_close() got called. */
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
if (mask & SND_CTL_EVENT_MASK_VALUE)
|
||||
{
|
||||
+ /*
|
||||
+ * Currently we just re-enumerate on any change.
|
||||
+ * Custom callbacks for handling other control monitoring may be implemented when needed.
|
||||
+ */
|
||||
CAEFactory::DeviceChange();
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user