Merge pull request #2830 from fritsch/master

Drop VPP support
This commit is contained in:
Stephan Raue
2013-12-24 05:56:45 -08:00
6 changed files with 0 additions and 1707 deletions

View File

@@ -1,55 +0,0 @@
From dd4346a0cfacbb62bc06644bdf471531ea1f5a8a Mon Sep 17 00:00:00 2001
From: BtbN <btbn@btbn.de>
Date: Mon, 9 Dec 2013 14:47:29 +0100
Subject: [PATCH] VAAPI, squash me: Attempt to fix mysterious non-smoothness
issue
---
xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI_VPP.cpp | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI_VPP.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI_VPP.cpp
index 78e786a..c88e402 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI_VPP.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI_VPP.cpp
@@ -406,6 +406,7 @@ CVPPPicture CVPP::DoDeint(const CVPPPicture& input, bool topFieldFirst, bool fir
VAProcPipelineParameterBuffer *pipelineParam;
VARectangle inputRegion;
VARectangle outputRegion;
+ unsigned int deint_flags = 0;
VASurfaceID *forwRefs = 0;
@@ -416,16 +417,16 @@ CVPPPicture CVPP::DoDeint(const CVPPPicture& input, bool topFieldFirst, bool fir
if(firstCall || m_forwardReferences.size() < m_forwardReferencesCount)
{
if(!topFieldFirst)
- deint->flags = VA_DEINTERLACING_BOTTOM_FIELD_FIRST | VA_DEINTERLACING_BOTTOM_FIELD;
+ deint_flags = deint->flags = VA_DEINTERLACING_BOTTOM_FIELD_FIRST | VA_DEINTERLACING_BOTTOM_FIELD;
else
- deint->flags = 0;
+ deint_flags = deint->flags = 0;
}
else
{
if(topFieldFirst)
- deint->flags = VA_DEINTERLACING_BOTTOM_FIELD;
+ deint_flags = deint->flags = VA_DEINTERLACING_BOTTOM_FIELD;
else
- deint->flags = VA_DEINTERLACING_BOTTOM_FIELD_FIRST;
+ deint_flags = deint->flags = VA_DEINTERLACING_BOTTOM_FIELD_FIRST;
}
CHECK_VA(vaUnmapBuffer(m_display->get(), m_deintFilter), 0);
@@ -449,7 +450,7 @@ CVPPPicture CVPP::DoDeint(const CVPPPicture& input, bool topFieldFirst, bool fir
pipelineParam->surface_region = &inputRegion;
pipelineParam->output_background_color = 0xff000000;
- pipelineParam->filter_flags = 0;
+ pipelineParam->filter_flags = (deint_flags & VA_DEINTERLACING_BOTTOM_FIELD) ? VA_BOTTOM_FIELD : VA_TOP_FIELD;
pipelineParam->filters = &m_deintFilter;
pipelineParam->num_filters = 1;
--
1.8.5.1

View File

@@ -1,69 +0,0 @@
From ba08b7255bd022f22de620d66366e85a48fe6a9f Mon Sep 17 00:00:00 2001
From: fritsch <Peter.Fruehberger@gmail.com>
Date: Sun, 22 Dec 2013 10:40:42 +0100
Subject: [PATCH] VPP: Introduce advanced setting to disable mpeg-2 decoding
cause of intel drivers for haswell are horrible broken (default enabled for
the rest of intel family)
---
xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 10 ++++++++--
xbmc/settings/AdvancedSettings.cpp | 2 ++
xbmc/settings/AdvancedSettings.h | 1 +
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index 5692faf..3acb109 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -104,8 +104,14 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
#endif
#ifdef HAVE_LIBVA
// mpeg4 vaapi decoding is disabled
- if(*cur == PIX_FMT_VAAPI_VLD && CSettings::Get().GetBool("videoplayer.usevaapi")
- && (avctx->codec_id != AV_CODEC_ID_MPEG4 || g_advancedSettings.m_videoAllowMpeg4VAAPI))
+ // some newer haswells have problems doing mpeg-2 deinterlacing
+ bool allowvaapi = true;
+ if (avctx->codec_id == AV_CODEC_ID_MPEG4 && !g_advancedSettings.m_videoAllowMpeg4VAAPI)
+ allowvaapi = false;
+ else if (avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO && !g_advancedSettings.m_videoAllowMpeg2VAAPI)
+ allowvaapi = false;
+
+ if(*cur == PIX_FMT_VAAPI_VLD && CSettings::Get().GetBool("videoplayer.usevaapi") && allowvaapi)
{
VAAPI::CDecoder* dec = new VAAPI::CDecoder();
if(dec->Open(avctx, *cur, ctx->m_uSurfacesCount))
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
index e148f1c..6cb2d91 100644
--- a/xbmc/settings/AdvancedSettings.cpp
+++ b/xbmc/settings/AdvancedSettings.cpp
@@ -163,6 +163,7 @@ void CAdvancedSettings::Initialize()
m_videoAutoScaleMaxFps = 30.0f;
m_videoAllowMpeg4VDPAU = false;
m_videoAllowMpeg4VAAPI = false;
+ m_videoAllowMpeg2VAAPI = true;
m_videoDisableBackgroundDeinterlace = false;
m_videoCaptureUseOcclusionQuery = -1; //-1 is auto detect
m_videoVDPAUtelecine = false;
@@ -602,6 +603,7 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
XMLUtils::GetBoolean(pElement,"allowmpeg4vdpau",m_videoAllowMpeg4VDPAU);
XMLUtils::GetBoolean(pElement,"disablehi10pmultithreading",m_videoDisableHi10pMultithreading);
XMLUtils::GetBoolean(pElement,"allowmpeg4vaapi",m_videoAllowMpeg4VAAPI);
+ XMLUtils::GetBoolean(pElement,"allowmpeg2vaapi",m_videoAllowMpeg2VAAPI);
XMLUtils::GetBoolean(pElement, "disablebackgrounddeinterlace", m_videoDisableBackgroundDeinterlace);
XMLUtils::GetInt(pElement, "useocclusionquery", m_videoCaptureUseOcclusionQuery, -1, 1);
XMLUtils::GetBoolean(pElement,"vdpauInvTelecine",m_videoVDPAUtelecine);
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
index 6eae4ee..070f754 100644
--- a/xbmc/settings/AdvancedSettings.h
+++ b/xbmc/settings/AdvancedSettings.h
@@ -184,6 +184,7 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler
float m_videoAutoScaleMaxFps;
bool m_videoAllowMpeg4VDPAU;
bool m_videoAllowMpeg4VAAPI;
+ bool m_videoAllowMpeg2VAAPI;
std::vector<RefreshOverride> m_videoAdjustRefreshOverrides;
std::vector<RefreshVideoLatency> m_videoRefreshLatency;
float m_videoDefaultLatency;
--
1.8.3.2

View File

@@ -1,16 +0,0 @@
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 31dafa2..a58eb7b 100755
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -2358,7 +2358,11 @@ i965_QuerySurfaceStatus(VADriverContextP ctx,
*status = VASurfaceReady;
}
} else {
+#ifdef HAVE_VA_SURFACE_STATUS_EMPTY
+ *status = VASurfaceReady | VASurfaceEmpty;
+#else
*status = VASurfaceReady;
+#endif
}
return VA_STATUS_SUCCESS;

View File

@@ -1,23 +0,0 @@
diff --git a/va/va.h b/va/va.h
index d9e4c7e..dc0f092 100644
--- a/va/va.h
+++ b/va/va.h
@@ -1905,6 +1905,8 @@ VAStatus vaSyncSurface (
VASurfaceID render_target
);
+#define HAVE_VA_SURFACE_STATUS_EMPTY 1
+
typedef enum
{
VASurfaceRendering = 1, /* Rendering in progress */
@@ -1912,7 +1914,8 @@ typedef enum
/* this status is useful if surface is used as the source */
/* of an overlay */
VASurfaceReady = 4, /* not being rendered or displayed */
- VASurfaceSkipped = 8 /* Indicate a skipped frame during encode */
+ VASurfaceSkipped = 8, /* Indicate a skipped frame during encode */
+ VASurfaceEmpty = 16 /* contains no actual data */
} VASurfaceStatus;
/*