mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
/*
|
||||
Reference in New Issue
Block a user