mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-08-01 06:57:50 +00:00
xbmc-pvr: update internal FFMPEG
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
0ddf2008b6
commit
480b709270
@ -201,6 +201,9 @@ cd $PKG_BUILD
|
|||||||
# Clean the generated files
|
# Clean the generated files
|
||||||
find . -depth -type d -name "autom4te.cache" -exec rm -rf {} \;
|
find . -depth -type d -name "autom4te.cache" -exec rm -rf {} \;
|
||||||
|
|
||||||
|
# hack: make codec_names.sh executable
|
||||||
|
chmod +x lib/ffmpeg/libavcodec/codec_names.sh
|
||||||
|
|
||||||
./configure --host=$TARGET_NAME \
|
./configure --host=$TARGET_NAME \
|
||||||
--build=$HOST_NAME \
|
--build=$HOST_NAME \
|
||||||
--with-arch=$TARGET_ARCH \
|
--with-arch=$TARGET_ARCH \
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,35 @@
|
|||||||
|
From 45e41b9096869062a2113590f3158321d06dea8b Mon Sep 17 00:00:00 2001
|
||||||
|
From: elupus <elupus@xbmc.org>
|
||||||
|
Date: Tue, 17 Apr 2012 01:13:15 +0200
|
||||||
|
Subject: [PATCH] fixed: dvd still frames ended up in internal lavf buffer
|
||||||
|
|
||||||
|
This is very hackish, but it's the old solution we had for dvd
|
||||||
|
still frames. The problem is that the demuxer asks for probing
|
||||||
|
of the codec in the mpeg stream. This causes lavf to read the
|
||||||
|
whole menu structure into internal buffers. After which, it
|
||||||
|
won't read from input stream anymore and no events triggers.
|
||||||
|
|
||||||
|
The only proper fix to avoid this is to allow this situation
|
||||||
|
in our navigator. This needs further work so that we can
|
||||||
|
process HOP/ACTIVATION events in libdvdnav without advancing
|
||||||
|
stream.
|
||||||
|
---
|
||||||
|
lib/ffmpeg/libavformat/utils.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/ffmpeg/libavformat/utils.c b/lib/ffmpeg/libavformat/utils.c
|
||||||
|
index 4729a40..63f89dd 100644
|
||||||
|
--- a/lib/ffmpeg/libavformat/utils.c
|
||||||
|
+++ b/lib/ffmpeg/libavformat/utils.c
|
||||||
|
@@ -833,7 +833,7 @@ int av_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||||
|
|
||||||
|
if(end || av_log2(pd->buf_size) != av_log2(pd->buf_size - pkt->size)){
|
||||||
|
int score= set_codec_from_probe_data(s, st, pd);
|
||||||
|
- if( (st->codec->codec_id != CODEC_ID_NONE && score > AVPROBE_SCORE_MAX/4)
|
||||||
|
+ if( (st->codec->codec_id != CODEC_ID_NONE && score > AVPROBE_SCORE_MAX/4-1)
|
||||||
|
|| end){
|
||||||
|
pd->buf_size=0;
|
||||||
|
av_freep(&pd->buf);
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
@ -0,0 +1,813 @@
|
|||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/configure xbmc-11.0.1.patch/lib/ffmpeg/configure
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/configure 2012-05-12 21:45:47.005596234 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/configure 2012-05-12 21:46:03.902936436 +0200
|
||||||
|
@@ -113,6 +113,7 @@
|
||||||
|
--enable-vdpau enable VDPAU code [autodetect]
|
||||||
|
--disable-dxva2 disable DXVA2 code
|
||||||
|
--disable-vda disable VDA code
|
||||||
|
+ --disable-xvba disable XVBA code
|
||||||
|
--enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
|
||||||
|
--enable-hardcoded-tables use hardcoded tables instead of runtime generation
|
||||||
|
--disable-safe-bitstream-reader
|
||||||
|
@@ -1084,6 +1085,7 @@
|
||||||
|
vaapi
|
||||||
|
vda
|
||||||
|
vdpau
|
||||||
|
+ xvba
|
||||||
|
version3
|
||||||
|
x11grab
|
||||||
|
zlib
|
||||||
|
@@ -1423,6 +1425,7 @@
|
||||||
|
h264_vaapi_hwaccel_select="vaapi h264_decoder"
|
||||||
|
h264_vda_hwaccel_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
|
||||||
|
h264_vda_hwaccel_select="vda h264_decoder"
|
||||||
|
+h264_xvba_hwaccel_select="xvba"
|
||||||
|
h264_vdpau_decoder_select="vdpau h264_decoder"
|
||||||
|
imc_decoder_select="fft mdct sinewin"
|
||||||
|
jpegls_decoder_select="golomb"
|
||||||
|
@@ -1459,6 +1462,7 @@
|
||||||
|
mpeg4_decoder_select="h263_decoder mpeg4video_parser"
|
||||||
|
mpeg4_encoder_select="h263_encoder"
|
||||||
|
mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
|
||||||
|
+mpeg2_xvba_hwaccel_select="xvba mpeg2video_decoder"
|
||||||
|
mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
|
||||||
|
msmpeg4_crystalhd_decoder_select="crystalhd"
|
||||||
|
msmpeg4v1_decoder_select="h263_decoder"
|
||||||
|
@@ -1501,6 +1505,7 @@
|
||||||
|
vc1_dxva2_hwaccel_deps="dxva2api_h"
|
||||||
|
vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
|
||||||
|
vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
|
||||||
|
+vc1_xvba_hwaccel_select="xvba vc1_decoder"
|
||||||
|
vc1_vdpau_decoder_select="vdpau vc1_decoder"
|
||||||
|
vc1image_decoder_select="vc1_decoder"
|
||||||
|
vorbis_decoder_select="mdct"
|
||||||
|
@@ -1525,6 +1530,7 @@
|
||||||
|
wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
|
||||||
|
wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
|
||||||
|
wmv3image_decoder_select="wmv3_decoder"
|
||||||
|
+wmv3_xvba_hwaccel_select="vc1_xvba_hwaccel"
|
||||||
|
zlib_decoder_select="zlib"
|
||||||
|
zlib_encoder_select="zlib"
|
||||||
|
zmbv_decoder_select="zlib"
|
||||||
|
@@ -1533,6 +1539,7 @@
|
||||||
|
crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
|
||||||
|
vaapi_deps="va_va_h"
|
||||||
|
vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
|
||||||
|
+xvba_deps="amd_amdxvba_h"
|
||||||
|
vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
|
||||||
|
|
||||||
|
# parsers
|
||||||
|
@@ -3062,6 +3069,7 @@
|
||||||
|
check_header termios.h
|
||||||
|
check_header vdpau/vdpau.h
|
||||||
|
check_header vdpau/vdpau_x11.h
|
||||||
|
+check_header amd/amdxvba.h
|
||||||
|
check_cpp_condition vdpau/vdpau.h "defined(VDP_DECODER_PROFILE_MPEG4_PART2_SP)" && enable vdpau_mpeg4_support
|
||||||
|
|
||||||
|
check_header X11/extensions/XvMClib.h
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/allcodecs.c xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/allcodecs.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/allcodecs.c 2012-05-12 21:45:47.257601308 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/allcodecs.c 2012-05-12 21:46:03.905936496 +0200
|
||||||
|
@@ -59,14 +59,18 @@
|
||||||
|
REGISTER_HWACCEL (H264_VAAPI, h264_vaapi);
|
||||||
|
REGISTER_HWACCEL (H264_VDA, h264_vda);
|
||||||
|
REGISTER_HWACCEL (MPEG1_VDPAU, mpeg1_vdpau);
|
||||||
|
+ REGISTER_HWACCEL (H264_XVBA, h264_xvba);
|
||||||
|
REGISTER_HWACCEL (MPEG2_DXVA2, mpeg2_dxva2);
|
||||||
|
REGISTER_HWACCEL (MPEG2_VAAPI, mpeg2_vaapi);
|
||||||
|
REGISTER_HWACCEL (MPEG2_VDPAU, mpeg2_vdpau);
|
||||||
|
REGISTER_HWACCEL (MPEG4_VAAPI, mpeg4_vaapi);
|
||||||
|
+ REGISTER_HWACCEL (MPEG2_XVBA, mpeg2_xvba);
|
||||||
|
REGISTER_HWACCEL (VC1_DXVA2, vc1_dxva2);
|
||||||
|
REGISTER_HWACCEL (VC1_VAAPI, vc1_vaapi);
|
||||||
|
+ REGISTER_HWACCEL (VC1_XVBA, vc1_xvba);
|
||||||
|
REGISTER_HWACCEL (WMV3_DXVA2, wmv3_dxva2);
|
||||||
|
REGISTER_HWACCEL (WMV3_VAAPI, wmv3_vaapi);
|
||||||
|
+ REGISTER_HWACCEL (WMV3_XVBA, wmv3_xvba);
|
||||||
|
|
||||||
|
/* video codecs */
|
||||||
|
REGISTER_ENCODER (A64MULTI, a64multi);
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/h264.c xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/h264.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/h264.c 2012-05-12 21:45:47.757611376 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/h264.c 2012-05-12 21:46:03.908936558 +0200
|
||||||
|
@@ -60,6 +60,7 @@
|
||||||
|
PIX_FMT_DXVA2_VLD,
|
||||||
|
PIX_FMT_VAAPI_VLD,
|
||||||
|
PIX_FMT_VDA_VLD,
|
||||||
|
+ PIX_FMT_XVBA_VLD,
|
||||||
|
PIX_FMT_YUVJ420P,
|
||||||
|
PIX_FMT_NONE
|
||||||
|
};
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/Makefile xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/Makefile
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/Makefile 2012-05-12 21:45:47.927614798 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/Makefile 2012-05-12 21:46:03.904936476 +0200
|
||||||
|
@@ -3,7 +3,7 @@
|
||||||
|
NAME = avcodec
|
||||||
|
FFLIBS = avutil
|
||||||
|
|
||||||
|
-HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vda.h vdpau.h version.h xvmc.h
|
||||||
|
+HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vda.h vdpau.h version.h xvmc.h xvba.h
|
||||||
|
|
||||||
|
OBJS = allcodecs.o \
|
||||||
|
audioconvert.o \
|
||||||
|
@@ -51,6 +51,7 @@
|
||||||
|
OBJS-$(CONFIG_VAAPI) += vaapi.o
|
||||||
|
OBJS-$(CONFIG_VDA) += vda.o
|
||||||
|
OBJS-$(CONFIG_VDPAU) += vdpau.o
|
||||||
|
+OBJS-$(CONFIG_XVBA) += xvba.o
|
||||||
|
|
||||||
|
# decoders/encoders/hardware accelerators
|
||||||
|
OBJS-$(CONFIG_A64MULTI_ENCODER) += a64multienc.o elbg.o
|
||||||
|
@@ -201,6 +202,7 @@
|
||||||
|
OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o
|
||||||
|
OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o
|
||||||
|
OBJS-$(CONFIG_H264_VDA_HWACCEL) += vda_h264.o
|
||||||
|
+OBJS-$(CONFIG_H264_XVBA_HWACCEL) += xvba_h264.o
|
||||||
|
OBJS-$(CONFIG_HUFFYUV_DECODER) += huffyuv.o
|
||||||
|
OBJS-$(CONFIG_HUFFYUV_ENCODER) += huffyuv.o
|
||||||
|
OBJS-$(CONFIG_IDCIN_DECODER) += idcinvideo.o
|
||||||
|
@@ -284,6 +286,7 @@
|
||||||
|
mpegvideo.o error_resilience.o
|
||||||
|
OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o
|
||||||
|
OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o
|
||||||
|
+OBJS-$(CONFIG_MPEG2_XVBA_HWACCEL) += xvba_mpeg2.o
|
||||||
|
OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12.o mpeg12data.o \
|
||||||
|
mpegvideo.o error_resilience.o
|
||||||
|
OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpegvideo_enc.o \
|
||||||
|
@@ -431,6 +434,7 @@
|
||||||
|
intrax8.o intrax8dsp.o
|
||||||
|
OBJS-$(CONFIG_VC1_DXVA2_HWACCEL) += dxva2_vc1.o
|
||||||
|
OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o
|
||||||
|
+OBJS-$(CONFIG_VC1_XVBA_HWACCEL) += xvba_vc1.o
|
||||||
|
OBJS-$(CONFIG_VCR1_DECODER) += vcr1.o
|
||||||
|
OBJS-$(CONFIG_VCR1_ENCODER) += vcr1.o
|
||||||
|
OBJS-$(CONFIG_VMDAUDIO_DECODER) += vmdav.o
|
||||||
|
@@ -732,6 +736,7 @@
|
||||||
|
SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER) += libschroedinger.h
|
||||||
|
SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_internal.h
|
||||||
|
SKIPHEADERS-$(CONFIG_VDA) += vda_internal.h
|
||||||
|
+SKIPHEADERS-$(CONFIG_XVBA) += xvba_internal.h
|
||||||
|
SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h
|
||||||
|
SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h
|
||||||
|
SKIPHEADERS-$(HAVE_W32THREADS) += w32pthreads.h
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/mpegvideo.c xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/mpegvideo.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/mpegvideo.c 2012-05-12 21:45:48.027616812 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/mpegvideo.c 2012-05-12 21:46:03.910936598 +0200
|
||||||
|
@@ -136,6 +136,7 @@
|
||||||
|
PIX_FMT_DXVA2_VLD,
|
||||||
|
PIX_FMT_VAAPI_VLD,
|
||||||
|
PIX_FMT_VDA_VLD,
|
||||||
|
+ PIX_FMT_XVBA_VLD,
|
||||||
|
PIX_FMT_YUV420P,
|
||||||
|
PIX_FMT_NONE
|
||||||
|
};
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba.c xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba.c 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba.c 2012-05-12 21:46:03.918936758 +0200
|
||||||
|
@@ -0,0 +1,66 @@
|
||||||
|
+/*
|
||||||
|
+ * HW decode acceleration for MPEG-2, H.264 and VC-1
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2005-2011 Team XBMC
|
||||||
|
+ *
|
||||||
|
+ * This file is part of FFmpeg.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ * License along with FFmpeg; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * \addtogroup XVBA_Decoding
|
||||||
|
+ *
|
||||||
|
+ * @{
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <stdint.h>
|
||||||
|
+#include "xvba.h"
|
||||||
|
+#include "xvba_internal.h"
|
||||||
|
+#include "avcodec.h"
|
||||||
|
+
|
||||||
|
+int ff_xvba_translate_profile(int profile) {
|
||||||
|
+
|
||||||
|
+ if (profile == 66)
|
||||||
|
+ return 1;
|
||||||
|
+ else if (profile == 77)
|
||||||
|
+ return 2;
|
||||||
|
+ else if (profile == 100)
|
||||||
|
+ return 3;
|
||||||
|
+ else if (profile == 0)
|
||||||
|
+ return 4;
|
||||||
|
+ else if (profile == 1)
|
||||||
|
+ return 5;
|
||||||
|
+ else if (profile == 3)
|
||||||
|
+ return 6;
|
||||||
|
+ else
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void ff_xvba_add_slice_data(struct xvba_render_state *render, const uint8_t *buffer, uint32_t size) {
|
||||||
|
+
|
||||||
|
+ render->buffers = av_fast_realloc(
|
||||||
|
+ render->buffers,
|
||||||
|
+ &render->buffers_alllocated,
|
||||||
|
+ sizeof(struct xvba_bitstream_buffers)*(render->num_slices + 1)
|
||||||
|
+ );
|
||||||
|
+
|
||||||
|
+ render->buffers[render->num_slices].buffer = buffer;
|
||||||
|
+ render->buffers[render->num_slices].size = size;
|
||||||
|
+
|
||||||
|
+ render->num_slices++;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba.h xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba.h
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba.h 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba.h 2012-05-12 21:46:03.918936758 +0200
|
||||||
|
@@ -0,0 +1,71 @@
|
||||||
|
+/*
|
||||||
|
+ * HW decode acceleration for MPEG-2, H.264 and VC-1
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2005-2011 Team XBMC
|
||||||
|
+ *
|
||||||
|
+ * This file is part of FFmpeg.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ * License along with FFmpeg; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#ifndef AVCODEC_XVBA_H
|
||||||
|
+#define AVCODEC_XVBA_H
|
||||||
|
+
|
||||||
|
+#include <stdint.h>
|
||||||
|
+#include <X11/Xlib.h>
|
||||||
|
+#include <amd/amdxvba.h>
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * \defgroup XVBA_Decoding VA API Decoding
|
||||||
|
+ * \ingroup Decoder
|
||||||
|
+ * @{
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/** \brief The videoSurface is used for rendering. */
|
||||||
|
+#define FF_XVBA_STATE_USED_FOR_RENDER 1
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * \brief The videoSurface is needed for reference/prediction.
|
||||||
|
+ * The codec manipulates this.
|
||||||
|
+ */
|
||||||
|
+#define FF_XVBA_STATE_USED_FOR_REFERENCE 2
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * \brief The videoSurface holds a decoded frame.
|
||||||
|
+ * The codec manipulates this.
|
||||||
|
+ */
|
||||||
|
+#define FF_XVBA_STATE_DECODED 4
|
||||||
|
+
|
||||||
|
+/* @} */
|
||||||
|
+
|
||||||
|
+struct xvba_bitstream_buffers
|
||||||
|
+{
|
||||||
|
+ const void *buffer;
|
||||||
|
+ unsigned int size;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct xvba_render_state {
|
||||||
|
+
|
||||||
|
+ int state; ///< Holds FF_XVBA_STATE_* values.
|
||||||
|
+ void *surface;
|
||||||
|
+ XVBAPictureDescriptor *picture_descriptor;
|
||||||
|
+ XVBAQuantMatrixAvc *iq_matrix;
|
||||||
|
+ int num_slices;
|
||||||
|
+ struct xvba_bitstream_buffers *buffers;
|
||||||
|
+ uint32_t buffers_alllocated;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#endif /* AVCODEC_XVBA_H */
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_h264.c xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_h264.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_h264.c 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_h264.c 2012-05-12 21:46:03.919936778 +0200
|
||||||
|
@@ -0,0 +1,180 @@
|
||||||
|
+/*
|
||||||
|
+ * H.264 HW decode acceleration through XVBA
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2005-2011 Team XBMC
|
||||||
|
+ *
|
||||||
|
+ * This file is part of FFmpeg.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ * License along with FFmpeg; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "xvba.h"
|
||||||
|
+#include "xvba_internal.h"
|
||||||
|
+#include "h264.h"
|
||||||
|
+#include <assert.h>
|
||||||
|
+
|
||||||
|
+/** @file
|
||||||
|
+ * This file implements the glue code between FFmpeg's and XvBA API's
|
||||||
|
+ * structures for H.264 decoding.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/** Initialize and start decoding a frame with XVBA. */
|
||||||
|
+static int start_frame(AVCodecContext *avctx,
|
||||||
|
+ av_unused const uint8_t *buffer,
|
||||||
|
+ av_unused uint32_t size)
|
||||||
|
+{
|
||||||
|
+ H264Context * const h = avctx->priv_data;
|
||||||
|
+ MpegEncContext * const s = &h->s;
|
||||||
|
+ struct xvba_render_state *render;
|
||||||
|
+ XVBAPictureDescriptor *pic_descriptor;
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0];
|
||||||
|
+ assert(render);
|
||||||
|
+
|
||||||
|
+ if (render->picture_descriptor == 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ pic_descriptor = render->picture_descriptor;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < 2; ++i) {
|
||||||
|
+ int foc = s->current_picture_ptr->field_poc[i];
|
||||||
|
+ if (foc == INT_MAX)
|
||||||
|
+ foc = 0;
|
||||||
|
+ pic_descriptor->avc_curr_field_order_cnt_list[i] = foc;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ pic_descriptor->avc_frame_num = h->frame_num;
|
||||||
|
+
|
||||||
|
+ render->num_slices = 0;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/** End a hardware decoding based frame. */
|
||||||
|
+static int end_frame(AVCodecContext *avctx)
|
||||||
|
+{
|
||||||
|
+ H264Context * const h = avctx->priv_data;
|
||||||
|
+ MpegEncContext * const s = &h->s;
|
||||||
|
+ struct xvba_render_state *render;
|
||||||
|
+ XVBAPictureDescriptor *pic_descriptor;
|
||||||
|
+ XVBAQuantMatrixAvc *iq_matrix;
|
||||||
|
+
|
||||||
|
+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0];
|
||||||
|
+ assert(render);
|
||||||
|
+
|
||||||
|
+ if (render->picture_descriptor == 0 || render->iq_matrix == 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ pic_descriptor = render->picture_descriptor;
|
||||||
|
+ iq_matrix = render->iq_matrix;
|
||||||
|
+
|
||||||
|
+ av_dlog(avctx, "end_frame()\n");
|
||||||
|
+
|
||||||
|
+ /* Fill in Picture Parameters*/
|
||||||
|
+ pic_descriptor->profile = ff_xvba_translate_profile(avctx->profile);
|
||||||
|
+ pic_descriptor->level = avctx->level;
|
||||||
|
+ pic_descriptor->width_in_mb = s->mb_width;
|
||||||
|
+ pic_descriptor->height_in_mb = s->mb_height;
|
||||||
|
+ pic_descriptor->picture_structure = s->picture_structure;
|
||||||
|
+ pic_descriptor->chroma_format = s->chroma_format ? s->chroma_format : 1;
|
||||||
|
+ pic_descriptor->avc_intra_flag = (h->slice_type == FF_I_TYPE) ? 1 : 0;
|
||||||
|
+ pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0;
|
||||||
|
+
|
||||||
|
+ pic_descriptor->avc_bit_depth_luma_minus8 = h->sps.bit_depth_luma - 8;
|
||||||
|
+ pic_descriptor->avc_bit_depth_chroma_minus8 = h->sps.bit_depth_chroma - 8;
|
||||||
|
+ pic_descriptor->avc_log2_max_frame_num_minus4 = h->sps.log2_max_frame_num -4;
|
||||||
|
+ pic_descriptor->avc_pic_order_cnt_type = h->sps.poc_type;
|
||||||
|
+ pic_descriptor->avc_log2_max_pic_order_cnt_lsb_minus4 = h->sps.log2_max_poc_lsb - 4;
|
||||||
|
+ pic_descriptor->avc_num_ref_frames = h->sps.ref_frame_count;
|
||||||
|
+ pic_descriptor->avc_reserved_8bit = 0;
|
||||||
|
+
|
||||||
|
+ pic_descriptor->avc_num_slice_groups_minus1 = h->pps.slice_group_count - 1;
|
||||||
|
+ pic_descriptor->avc_num_ref_idx_l0_active_minus1 = h->pps.ref_count[0] - 1;
|
||||||
|
+ pic_descriptor->avc_num_ref_idx_l1_active_minus1 = h->pps.ref_count[1] - 1;
|
||||||
|
+
|
||||||
|
+ pic_descriptor->avc_pic_init_qp_minus26 = h->pps.init_qp - 26;
|
||||||
|
+ pic_descriptor->avc_pic_init_qs_minus26 = h->pps.init_qs - 26;
|
||||||
|
+ pic_descriptor->avc_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[0];
|
||||||
|
+ pic_descriptor->avc_second_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[1];
|
||||||
|
+ pic_descriptor->avc_slice_group_change_rate_minus1 = 0; // not implemented in ffmpeg
|
||||||
|
+ pic_descriptor->avc_reserved_16bit = 0; // must be 0
|
||||||
|
+ memset(pic_descriptor->avc_field_order_cnt_list,0,sizeof(pic_descriptor->avc_field_order_cnt_list)); // must be 0
|
||||||
|
+ memset(pic_descriptor->avc_slice_group_map,0,sizeof(pic_descriptor->avc_slice_group_map)); // must be 0
|
||||||
|
+
|
||||||
|
+ // sps
|
||||||
|
+ pic_descriptor->sps_info.avc.delta_pic_always_zero_flag = h->sps.delta_pic_order_always_zero_flag;
|
||||||
|
+ pic_descriptor->sps_info.avc.direct_8x8_inference_flag = h->sps.direct_8x8_inference_flag;
|
||||||
|
+ pic_descriptor->sps_info.avc.frame_mbs_only_flag = h->sps.frame_mbs_only_flag;
|
||||||
|
+ pic_descriptor->sps_info.avc.gaps_in_frame_num_value_allowed_flag = h->sps.gaps_in_frame_num_allowed_flag;
|
||||||
|
+ pic_descriptor->sps_info.avc.mb_adaptive_frame_field_flag = h->sps.mb_aff;
|
||||||
|
+ pic_descriptor->sps_info.avc.residual_colour_transform_flag = h->sps.residual_color_transform_flag;
|
||||||
|
+ pic_descriptor->sps_info.avc.xvba_avc_sps_reserved = 0;
|
||||||
|
+
|
||||||
|
+ // pps
|
||||||
|
+ pic_descriptor->pps_info.avc.entropy_coding_mode_flag = h->pps.cabac;
|
||||||
|
+ pic_descriptor->pps_info.avc.pic_order_present_flag = h->pps.pic_order_present;
|
||||||
|
+ pic_descriptor->pps_info.avc.weighted_pred_flag = h->pps.weighted_pred;
|
||||||
|
+ pic_descriptor->pps_info.avc.weighted_bipred_idc = h->pps.weighted_bipred_idc;
|
||||||
|
+ pic_descriptor->pps_info.avc.deblocking_filter_control_present_flag = h->pps.deblocking_filter_parameters_present;
|
||||||
|
+ pic_descriptor->pps_info.avc.constrained_intra_pred_flag = h->pps.constrained_intra_pred;
|
||||||
|
+ pic_descriptor->pps_info.avc.redundant_pic_cnt_present_flag = h->pps.redundant_pic_cnt_present;
|
||||||
|
+ pic_descriptor->pps_info.avc.transform_8x8_mode_flag = h->pps.transform_8x8_mode;
|
||||||
|
+ pic_descriptor->pps_info.avc.xvba_avc_pps_reserved = 0; // must be 0
|
||||||
|
+
|
||||||
|
+ memcpy(iq_matrix->bScalingLists4x4, h->pps.scaling_matrix4, sizeof(iq_matrix->bScalingLists4x4));
|
||||||
|
+ memcpy(iq_matrix->bScalingLists8x8, h->pps.scaling_matrix8, sizeof(iq_matrix->bScalingLists8x8));
|
||||||
|
+
|
||||||
|
+ // Wait for an I-frame before start decoding. Workaround for ATI UVD and UVD+ GPUs
|
||||||
|
+ if (!h->got_first_iframe) {
|
||||||
|
+ if (h->slice_type != FF_I_TYPE && h->slice_type != FF_SI_TYPE)
|
||||||
|
+ return -1;
|
||||||
|
+ h->got_first_iframe = 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ff_draw_horiz_band(s, 0, s->avctx->height);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/** Decode the given H.264 slice with XVBA. */
|
||||||
|
+static int decode_slice(AVCodecContext *avctx,
|
||||||
|
+ const uint8_t *buffer,
|
||||||
|
+ uint32_t size)
|
||||||
|
+{
|
||||||
|
+ H264Context * const h = avctx->priv_data;
|
||||||
|
+ MpegEncContext * const s = &h->s;
|
||||||
|
+ struct xvba_render_state *render;
|
||||||
|
+
|
||||||
|
+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0];
|
||||||
|
+ assert(render);
|
||||||
|
+
|
||||||
|
+ ff_xvba_add_slice_data(render, buffer, size);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+AVHWAccel ff_h264_xvba_hwaccel = {
|
||||||
|
+ .name = "h264_xvba",
|
||||||
|
+ .type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
+ .id = CODEC_ID_H264,
|
||||||
|
+ .pix_fmt = PIX_FMT_XVBA_VLD,
|
||||||
|
+ .capabilities = 0,
|
||||||
|
+ .start_frame = start_frame,
|
||||||
|
+ .end_frame = end_frame,
|
||||||
|
+ .decode_slice = decode_slice,
|
||||||
|
+ .priv_data_size = 0,
|
||||||
|
+};
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_internal.h xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_internal.h
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_internal.h 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_internal.h 2012-05-12 21:46:03.920936798 +0200
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+/*
|
||||||
|
+ * HW decode acceleration for MPEG-2, H.264 and VC-1
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2005-2011 Team XBMC
|
||||||
|
+ *
|
||||||
|
+ * This file is part of FFmpeg.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ * License along with FFmpeg; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+int ff_xvba_translate_profile(int profile);
|
||||||
|
+void ff_xvba_add_slice_data(struct xvba_render_state *render, const uint8_t *buffer, uint32_t size);
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_mpeg2.c xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_mpeg2.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_mpeg2.c 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_mpeg2.c 2012-05-12 21:46:03.920936798 +0200
|
||||||
|
@@ -0,0 +1,52 @@
|
||||||
|
+/*
|
||||||
|
+ * MPEG-2 HW decode acceleration through XVBA
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2005-2011 Team XBMC
|
||||||
|
+ *
|
||||||
|
+ * This file is part of FFmpeg.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ * License along with FFmpeg; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "dsputil.h"
|
||||||
|
+
|
||||||
|
+static int start_frame(AVCodecContext *avctx, av_unused const uint8_t *buffer, av_unused uint32_t size)
|
||||||
|
+{
|
||||||
|
+ struct MpegEncContext * const s = avctx->priv_data;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int end_frame(AVCodecContext *avctx)
|
||||||
|
+{
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
|
||||||
|
+{
|
||||||
|
+ struct MpegEncContext * const s = avctx->priv_data;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+AVHWAccel ff_mpeg2_xvba_hwaccel = {
|
||||||
|
+ .name = "mpeg2_xvba",
|
||||||
|
+ .type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
+ .id = CODEC_ID_MPEG2VIDEO,
|
||||||
|
+ .pix_fmt = PIX_FMT_XVBA_VLD,
|
||||||
|
+ .capabilities = 0,
|
||||||
|
+ .start_frame = start_frame,
|
||||||
|
+ .end_frame = end_frame,
|
||||||
|
+ .decode_slice = decode_slice,
|
||||||
|
+ .priv_data_size = 0,
|
||||||
|
+};
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_vc1.c xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_vc1.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/xvba_vc1.c 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvba_vc1.c 2012-05-12 21:46:03.921936819 +0200
|
||||||
|
@@ -0,0 +1,194 @@
|
||||||
|
+/*
|
||||||
|
+ * VC-1 HW decode acceleration through XVBA
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2005-2011 Team XBMC
|
||||||
|
+ *
|
||||||
|
+ * This file is part of FFmpeg.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ * License along with FFmpeg; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "xvba.h"
|
||||||
|
+#include "xvba_internal.h"
|
||||||
|
+#include "vc1.h"
|
||||||
|
+#include "vc1data.h"
|
||||||
|
+#include <assert.h>
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/** @file
|
||||||
|
+ * Implement structures of ffmpeg <-> XvBA
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/* Initialize and start decoding a frame with XvBA */
|
||||||
|
+static int start_frame(AVCodecContext *avctx,
|
||||||
|
+ av_unused const uint8_t *buffer,
|
||||||
|
+ av_unused uint32_t size)
|
||||||
|
+{
|
||||||
|
+ VC1Context * const v = avctx->priv_data;
|
||||||
|
+ MpegEncContext * const s = &v->s;
|
||||||
|
+ struct xvba_render_state *render;
|
||||||
|
+
|
||||||
|
+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0];
|
||||||
|
+ assert(render);
|
||||||
|
+
|
||||||
|
+ render->num_slices = 0;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* End a hardware decoding based frame */
|
||||||
|
+static int end_frame(AVCodecContext *avctx)
|
||||||
|
+{
|
||||||
|
+ VC1Context* const v = avctx->priv_data;
|
||||||
|
+ MpegEncContext* const s = &v->s;
|
||||||
|
+ struct xvba_render_state *render, *last, *next;
|
||||||
|
+ XVBAPictureDescriptor *pic_descriptor;
|
||||||
|
+
|
||||||
|
+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0];
|
||||||
|
+ assert(render);
|
||||||
|
+
|
||||||
|
+ if (render->picture_descriptor == 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ pic_descriptor = render->picture_descriptor;
|
||||||
|
+
|
||||||
|
+ av_dlog(avctx, "xvba_vc1_end_frame()\n");
|
||||||
|
+
|
||||||
|
+ memset(pic_descriptor, 0, sizeof(*pic_descriptor));
|
||||||
|
+
|
||||||
|
+ /* Fill in Parameters - for reference see AMD sdk documentation */
|
||||||
|
+ pic_descriptor->profile = ff_xvba_translate_profile(v->profile);
|
||||||
|
+ pic_descriptor->level = v->level;
|
||||||
|
+ //done like in va-driver and vaapi
|
||||||
|
+ if (v->profile == PROFILE_ADVANCED) {
|
||||||
|
+ pic_descriptor->width_in_mb = s->avctx->coded_width;
|
||||||
|
+ pic_descriptor->height_in_mb = s->avctx->coded_height;
|
||||||
|
+ } else {
|
||||||
|
+ pic_descriptor->width_in_mb = s->mb_width;
|
||||||
|
+ pic_descriptor->height_in_mb = s->mb_height;
|
||||||
|
+ }
|
||||||
|
+ pic_descriptor->picture_structure = s->picture_structure;
|
||||||
|
+ // xvba-video set this to 1 only 4:2:0 supported
|
||||||
|
+ // doc says: if not set, choose 1 - we try this
|
||||||
|
+ pic_descriptor->chroma_format = 1;
|
||||||
|
+ pic_descriptor->avc_intra_flag = s->pict_type == FF_I_TYPE || v->bi_type == 1;
|
||||||
|
+ pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0;
|
||||||
|
+
|
||||||
|
+ // VC-1 explicit parameters see page 30 of sdk
|
||||||
|
+ // sps_info
|
||||||
|
+ pic_descriptor->sps_info.vc1.postprocflag = v->postprocflag;
|
||||||
|
+
|
||||||
|
+ // done as in vaapi
|
||||||
|
+ pic_descriptor->sps_info.vc1.pulldown = v->broadcast;
|
||||||
|
+ pic_descriptor->sps_info.vc1.interlace = v->interlace;
|
||||||
|
+ pic_descriptor->sps_info.vc1.tfcntrflag = v->tfcntrflag;
|
||||||
|
+ pic_descriptor->sps_info.vc1.finterpflag = v->finterpflag;
|
||||||
|
+ pic_descriptor->sps_info.vc1.reserved = 1;
|
||||||
|
+ // eventually check if this makes sense together with interlace
|
||||||
|
+ pic_descriptor->sps_info.vc1.psf = v->psf;
|
||||||
|
+ // what about if it is a frame (page 31)
|
||||||
|
+ // looked at xvba-driver
|
||||||
|
+ pic_descriptor->sps_info.vc1.second_field = !s->first_field;
|
||||||
|
+ pic_descriptor->sps_info.vc1.xvba_vc1_sps_reserved = 0;
|
||||||
|
+
|
||||||
|
+ // VC-1 explicit parameters see page 30 of sdk
|
||||||
|
+ // pps_info
|
||||||
|
+ pic_descriptor->pps_info.vc1.panscan_flag = v->panscanflag;
|
||||||
|
+ pic_descriptor->pps_info.vc1.refdist_flag = v->refdist_flag;
|
||||||
|
+ pic_descriptor->pps_info.vc1.loopfilter = s->loop_filter;
|
||||||
|
+ pic_descriptor->pps_info.vc1.fastuvmc = v->fastuvmc;
|
||||||
|
+ pic_descriptor->pps_info.vc1.extended_mv = v->extended_mv;
|
||||||
|
+ pic_descriptor->pps_info.vc1.dquant = v->dquant;
|
||||||
|
+ pic_descriptor->pps_info.vc1.vstransform = v->vstransform;
|
||||||
|
+ pic_descriptor->pps_info.vc1.overlap = v->overlap;
|
||||||
|
+ pic_descriptor->pps_info.vc1.quantizer = v->quantizer_mode;
|
||||||
|
+ pic_descriptor->pps_info.vc1.extended_dmv = v->extended_dmv;
|
||||||
|
+ pic_descriptor->pps_info.vc1.maxbframes = s->avctx->max_b_frames;
|
||||||
|
+ pic_descriptor->pps_info.vc1.rangered = (pic_descriptor->profile == PROFILE_SIMPLE) ? 0 : v->rangered;
|
||||||
|
+ pic_descriptor->pps_info.vc1.syncmarker = (pic_descriptor->profile == PROFILE_SIMPLE) ? 0 : s->resync_marker;
|
||||||
|
+ pic_descriptor->pps_info.vc1.multires = v->multires;
|
||||||
|
+ pic_descriptor->pps_info.vc1.reserved = 1;
|
||||||
|
+ pic_descriptor->pps_info.vc1.range_mapy_flag = v->range_mapy_flag;
|
||||||
|
+ pic_descriptor->pps_info.vc1.range_mapy = v->range_mapy;
|
||||||
|
+ pic_descriptor->pps_info.vc1.range_mapuv_flag = v->range_mapuv_flag;
|
||||||
|
+ pic_descriptor->pps_info.vc1.range_mapuv = v->range_mapuv;
|
||||||
|
+ pic_descriptor->pps_info.vc1.xvba_vc1_pps_reserved = 0;
|
||||||
|
+
|
||||||
|
+ pic_descriptor->past_surface = 0;
|
||||||
|
+ pic_descriptor->future_surface = 0;
|
||||||
|
+ switch (s->pict_type) {
|
||||||
|
+ case FF_B_TYPE:
|
||||||
|
+ next = (struct xvba_render_state *)s->next_picture.f.data[0];
|
||||||
|
+ assert(next);
|
||||||
|
+ if (next)
|
||||||
|
+ pic_descriptor->past_surface = next->surface;
|
||||||
|
+ // fall-through
|
||||||
|
+ case FF_P_TYPE:
|
||||||
|
+ last = (struct xvba_render_state *)s->last_picture.f.data[0];
|
||||||
|
+ assert(last);
|
||||||
|
+ if (last)
|
||||||
|
+ pic_descriptor->future_surface = last->surface;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ff_draw_horiz_band(s, 0, s->avctx->height);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
|
||||||
|
+{
|
||||||
|
+ VC1Context* const v = avctx->priv_data;
|
||||||
|
+ MpegEncContext* const s = &v->s;
|
||||||
|
+ struct xvba_render_state *render;
|
||||||
|
+
|
||||||
|
+ render = (struct xvba_render_state *)s->current_picture_ptr->f.data[0];
|
||||||
|
+ assert(render);
|
||||||
|
+
|
||||||
|
+ if (avctx->codec_id == CODEC_ID_VC1 &&
|
||||||
|
+ size >= 4 && IS_MARKER(AV_RB32(buffer))) {
|
||||||
|
+ buffer += 4;
|
||||||
|
+ size -= 4;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ff_xvba_add_slice_data(render, buffer, size);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#if CONFIG_WMV3_XVBA_HWACCEL
|
||||||
|
+AVHWAccel ff_wmv3_xvba_hwaccel = {
|
||||||
|
+ .name = "wmv3_xvba",
|
||||||
|
+ .type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
+ .id = CODEC_ID_WMV3,
|
||||||
|
+ .pix_fmt = PIX_FMT_XVBA_VLD,
|
||||||
|
+ .capabilities = 0,
|
||||||
|
+ .start_frame = start_frame,
|
||||||
|
+ .end_frame = end_frame,
|
||||||
|
+ .decode_slice = decode_slice,
|
||||||
|
+ .priv_data_size = 0,
|
||||||
|
+};
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+AVHWAccel ff_vc1_xvba_hwaccel = {
|
||||||
|
+ .name = "vc1_xvba",
|
||||||
|
+ .type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
+ .id = CODEC_ID_VC1,
|
||||||
|
+ .pix_fmt = PIX_FMT_XVBA_VLD,
|
||||||
|
+ .capabilities = 0,
|
||||||
|
+ .start_frame = start_frame,
|
||||||
|
+ .end_frame = end_frame,
|
||||||
|
+ .decode_slice = decode_slice,
|
||||||
|
+ .priv_data_size = 0,
|
||||||
|
+};
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavcodec/xvmc_internal.h xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvmc_internal.h
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavcodec/xvmc_internal.h 2012-05-12 21:45:48.572627784 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavcodec/xvmc_internal.h 2012-05-12 21:46:03.922936840 +0200
|
||||||
|
@@ -1,5 +1,7 @@
|
||||||
|
/*
|
||||||
|
- * XVideo Motion Compensation internal functions
|
||||||
|
+ * HW decode acceleration for MPEG-2, H.264 and VC-1
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2005-2011 Team XBMC
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavutil/pixdesc.c xbmc-11.0.1.patch/lib/ffmpeg/libavutil/pixdesc.c
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavutil/pixdesc.c 2012-05-12 21:45:49.442645301 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavutil/pixdesc.c 2012-05-12 21:46:03.923936860 +0200
|
||||||
|
@@ -874,6 +874,12 @@
|
||||||
|
.log2_chroma_h = 1,
|
||||||
|
.flags = PIX_FMT_HWACCEL,
|
||||||
|
},
|
||||||
|
+ [PIX_FMT_XVBA_VLD] = {
|
||||||
|
+ .name = "xvba_vld",
|
||||||
|
+ .log2_chroma_w = 1,
|
||||||
|
+ .log2_chroma_h = 1,
|
||||||
|
+ .flags = PIX_FMT_HWACCEL,
|
||||||
|
+ },
|
||||||
|
[PIX_FMT_YUV420P9LE] = {
|
||||||
|
.name = "yuv420p9le",
|
||||||
|
.nb_components = 3,
|
||||||
|
diff -Naur xbmc-11.0.1/lib/ffmpeg/libavutil/pixfmt.h xbmc-11.0.1.patch/lib/ffmpeg/libavutil/pixfmt.h
|
||||||
|
--- xbmc-11.0.1/lib/ffmpeg/libavutil/pixfmt.h 2012-05-12 21:45:49.445645361 +0200
|
||||||
|
+++ xbmc-11.0.1.patch/lib/ffmpeg/libavutil/pixfmt.h 2012-05-12 21:46:03.924936880 +0200
|
||||||
|
@@ -129,6 +129,7 @@
|
||||||
|
PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||||
|
PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
|
||||||
|
+ PIX_FMT_XVBA_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
|
||||||
|
PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0
|
||||||
|
PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0
|
@ -0,0 +1,50 @@
|
|||||||
|
From 1f4d4832065673eaa989bd8d45f55703d8a135ab Mon Sep 17 00:00:00 2001
|
||||||
|
From: xbmc <xbmc@AD02.(none)>
|
||||||
|
Date: Mon, 30 Apr 2012 13:58:29 +0200
|
||||||
|
Subject: [PATCH] ffmpeg: xvba, adapt to new ffmpeg, fix artifacts for h.264
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/ffmpeg/libavcodec/xvba_h264.c | 9 ++++-----
|
||||||
|
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/ffmpeg/libavcodec/xvba_h264.c b/lib/ffmpeg/libavcodec/xvba_h264.c
|
||||||
|
index 1f737b0..9be6ffb 100644
|
||||||
|
--- a/lib/ffmpeg/libavcodec/xvba_h264.c
|
||||||
|
+++ b/lib/ffmpeg/libavcodec/xvba_h264.c
|
||||||
|
@@ -91,7 +91,7 @@ static int end_frame(AVCodecContext *avctx)
|
||||||
|
pic_descriptor->height_in_mb = s->mb_height;
|
||||||
|
pic_descriptor->picture_structure = s->picture_structure;
|
||||||
|
pic_descriptor->chroma_format = s->chroma_format ? s->chroma_format : 1;
|
||||||
|
- pic_descriptor->avc_intra_flag = (h->slice_type == FF_I_TYPE) ? 1 : 0;
|
||||||
|
+ pic_descriptor->avc_intra_flag = (h->slice_type == AV_PICTURE_TYPE_I) ? 1 : 0;
|
||||||
|
pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0;
|
||||||
|
|
||||||
|
pic_descriptor->avc_bit_depth_luma_minus8 = h->sps.bit_depth_luma - 8;
|
||||||
|
@@ -136,11 +136,12 @@ static int end_frame(AVCodecContext *avctx)
|
||||||
|
pic_descriptor->pps_info.avc.xvba_avc_pps_reserved = 0; // must be 0
|
||||||
|
|
||||||
|
memcpy(iq_matrix->bScalingLists4x4, h->pps.scaling_matrix4, sizeof(iq_matrix->bScalingLists4x4));
|
||||||
|
- memcpy(iq_matrix->bScalingLists8x8, h->pps.scaling_matrix8, sizeof(iq_matrix->bScalingLists8x8));
|
||||||
|
+ memcpy(iq_matrix->bScalingLists8x8[0], h->pps.scaling_matrix8[0], sizeof(iq_matrix->bScalingLists8x8[0]));
|
||||||
|
+ memcpy(iq_matrix->bScalingLists8x8[1], h->pps.scaling_matrix8[3], sizeof(iq_matrix->bScalingLists8x8[0]));
|
||||||
|
|
||||||
|
// Wait for an I-frame before start decoding. Workaround for ATI UVD and UVD+ GPUs
|
||||||
|
if (!h->got_first_iframe) {
|
||||||
|
- if (h->slice_type != FF_I_TYPE && h->slice_type != FF_SI_TYPE)
|
||||||
|
+ if (h->slice_type != AV_PICTURE_TYPE_I && h->slice_type != AV_PICTURE_TYPE_SI)
|
||||||
|
return -1;
|
||||||
|
h->got_first_iframe = 1;
|
||||||
|
}
|
||||||
|
@@ -172,9 +173,7 @@ static int decode_slice(AVCodecContext *avctx,
|
||||||
|
.type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
.id = CODEC_ID_H264,
|
||||||
|
.pix_fmt = PIX_FMT_XVBA_VLD,
|
||||||
|
- .capabilities = 0,
|
||||||
|
.start_frame = start_frame,
|
||||||
|
.end_frame = end_frame,
|
||||||
|
.decode_slice = decode_slice,
|
||||||
|
- .priv_data_size = 0,
|
||||||
|
};
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
@ -0,0 +1,64 @@
|
|||||||
|
From 81d1514a1daf379d58c61080244bb01c7ee7e662 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fritsch <peter.fruehberger@gmail.com>
|
||||||
|
Date: Mon, 30 Apr 2012 21:33:18 +0200
|
||||||
|
Subject: [PATCH] xvba: (VC-1) rename FF_P_TYPE, FF_B_TYPE and FF_I_TYPE to
|
||||||
|
new ffmpeg conventions
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/ffmpeg/libavcodec/xvba_vc1.c | 10 +++-------
|
||||||
|
1 file changed, 3 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/ffmpeg/libavcodec/xvba_vc1.c b/lib/ffmpeg/libavcodec/xvba_vc1.c
|
||||||
|
index c202b9c..7315b62 100644
|
||||||
|
--- a/lib/ffmpeg/libavcodec/xvba_vc1.c
|
||||||
|
+++ b/lib/ffmpeg/libavcodec/xvba_vc1.c
|
||||||
|
@@ -82,7 +82,7 @@ static int end_frame(AVCodecContext *avctx)
|
||||||
|
// xvba-video set this to 1 only 4:2:0 supported
|
||||||
|
// doc says: if not set, choose 1 - we try this
|
||||||
|
pic_descriptor->chroma_format = 1;
|
||||||
|
- pic_descriptor->avc_intra_flag = s->pict_type == FF_I_TYPE || v->bi_type == 1;
|
||||||
|
+ pic_descriptor->avc_intra_flag = s->pict_type == AV_PICTURE_TYPE_I || v->bi_type == 1;
|
||||||
|
pic_descriptor->avc_reference = (s->current_picture_ptr->f.reference & 3) ? 1 : 0;
|
||||||
|
|
||||||
|
// VC-1 explicit parameters see page 30 of sdk
|
||||||
|
@@ -128,13 +128,13 @@ static int end_frame(AVCodecContext *avctx)
|
||||||
|
pic_descriptor->past_surface = 0;
|
||||||
|
pic_descriptor->future_surface = 0;
|
||||||
|
switch (s->pict_type) {
|
||||||
|
- case FF_B_TYPE:
|
||||||
|
+ case AV_PICTURE_TYPE_B:
|
||||||
|
next = (struct xvba_render_state *)s->next_picture.f.data[0];
|
||||||
|
assert(next);
|
||||||
|
if (next)
|
||||||
|
pic_descriptor->past_surface = next->surface;
|
||||||
|
// fall-through
|
||||||
|
- case FF_P_TYPE:
|
||||||
|
+ case AV_PICTURE_TYPE_P:
|
||||||
|
last = (struct xvba_render_state *)s->last_picture.f.data[0];
|
||||||
|
assert(last);
|
||||||
|
if (last)
|
||||||
|
@@ -173,11 +173,9 @@ static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t s
|
||||||
|
.type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
.id = CODEC_ID_WMV3,
|
||||||
|
.pix_fmt = PIX_FMT_XVBA_VLD,
|
||||||
|
- .capabilities = 0,
|
||||||
|
.start_frame = start_frame,
|
||||||
|
.end_frame = end_frame,
|
||||||
|
.decode_slice = decode_slice,
|
||||||
|
- .priv_data_size = 0,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -186,9 +184,7 @@ static int decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t s
|
||||||
|
.type = AVMEDIA_TYPE_VIDEO,
|
||||||
|
.id = CODEC_ID_VC1,
|
||||||
|
.pix_fmt = PIX_FMT_XVBA_VLD,
|
||||||
|
- .capabilities = 0,
|
||||||
|
.start_frame = start_frame,
|
||||||
|
.end_frame = end_frame,
|
||||||
|
.decode_slice = decode_slice,
|
||||||
|
- .priv_data_size = 0,
|
||||||
|
};
|
||||||
|
--
|
||||||
|
1.7.10
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
diff -Naur xbmc-pvr-11.0.1/language/Dutch/strings.xml xbmc-pvr-11.0.1.patch/language/Dutch/strings.xml
|
diff -Naur xbmc-pvr-11.0.1/language/Dutch/strings.xml xbmc-pvr-11.0.1.patch/language/Dutch/strings.xml
|
||||||
--- xbmc-pvr-11.0.1/language/Dutch/strings.xml 2012-03-27 17:55:51.000000000 +0200
|
--- xbmc-pvr-11.0.1/language/Dutch/strings.xml 2012-03-27 17:55:51.000000000 +0200
|
||||||
+++ xbmc-pvr-11.0.1.patch/language/Dutch/strings.xml 2012-05-14 09:40:49.363267601 +0200
|
+++ xbmc-pvr-11.0.1.patch/language/Dutch/strings.xml 2012-05-14 14:13:28.656860932 +0200
|
||||||
@@ -1542,7 +1542,6 @@
|
@@ -1542,7 +1542,6 @@
|
||||||
<string id="16322">Spline36</string>
|
<string id="16322">Spline36</string>
|
||||||
<string id="16323">Spline36 geoptimaliseerd</string>
|
<string id="16323">Spline36 geoptimaliseerd</string>
|
||||||
@ -11,7 +11,7 @@ diff -Naur xbmc-pvr-11.0.1/language/Dutch/strings.xml xbmc-pvr-11.0.1.patch/lang
|
|||||||
|
|
||||||
diff -Naur xbmc-pvr-11.0.1/language/English/strings.xml xbmc-pvr-11.0.1.patch/language/English/strings.xml
|
diff -Naur xbmc-pvr-11.0.1/language/English/strings.xml xbmc-pvr-11.0.1.patch/language/English/strings.xml
|
||||||
--- xbmc-pvr-11.0.1/language/English/strings.xml 2012-03-27 17:55:51.000000000 +0200
|
--- xbmc-pvr-11.0.1/language/English/strings.xml 2012-03-27 17:55:51.000000000 +0200
|
||||||
+++ xbmc-pvr-11.0.1.patch/language/English/strings.xml 2012-05-14 09:40:49.366267654 +0200
|
+++ xbmc-pvr-11.0.1.patch/language/English/strings.xml 2012-05-14 14:13:28.661861033 +0200
|
||||||
@@ -1539,9 +1539,7 @@
|
@@ -1539,9 +1539,7 @@
|
||||||
<string id="16321">DXVA Best</string>
|
<string id="16321">DXVA Best</string>
|
||||||
<string id="16322">Spline36</string>
|
<string id="16322">Spline36</string>
|
||||||
@ -23,8 +23,8 @@ diff -Naur xbmc-pvr-11.0.1/language/English/strings.xml xbmc-pvr-11.0.1.patch/la
|
|||||||
<string id="16400">Post-processing</string>
|
<string id="16400">Post-processing</string>
|
||||||
|
|
||||||
diff -Naur xbmc-pvr-11.0.1/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-pvr-11.0.1.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
diff -Naur xbmc-pvr-11.0.1/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-pvr-11.0.1.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
|
||||||
--- xbmc-pvr-11.0.1/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-03-27 17:55:38.000000000 +0200
|
--- xbmc-pvr-11.0.1/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-05-14 14:11:52.791931577 +0200
|
||||||
+++ xbmc-pvr-11.0.1.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-05-14 09:40:49.371267744 +0200
|
+++ xbmc-pvr-11.0.1.patch/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-05-14 14:13:28.663861073 +0200
|
||||||
@@ -531,8 +531,7 @@
|
@@ -531,8 +531,7 @@
|
||||||
bool CVDPAU::Supports(EINTERLACEMETHOD method)
|
bool CVDPAU::Supports(EINTERLACEMETHOD method)
|
||||||
{
|
{
|
||||||
@ -59,7 +59,7 @@ diff -Naur xbmc-pvr-11.0.1/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-p
|
|||||||
{
|
{
|
||||||
VdpBool enabled[]={1,0,0};
|
VdpBool enabled[]={1,0,0};
|
||||||
vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled);
|
vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled);
|
||||||
@@ -1401,16 +1387,14 @@
|
@@ -1399,16 +1385,14 @@
|
||||||
if (mode == VS_DEINTERLACEMODE_FORCE
|
if (mode == VS_DEINTERLACEMODE_FORCE
|
||||||
|| (mode == VS_DEINTERLACEMODE_AUTO && m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED))
|
|| (mode == VS_DEINTERLACEMODE_AUTO && m_DVDVideoPics.front().iFlags & DVP_FLAG_INTERLACED))
|
||||||
{
|
{
|
||||||
@ -80,7 +80,7 @@ diff -Naur xbmc-pvr-11.0.1/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-p
|
|||||||
m_mixerstep = 0;
|
m_mixerstep = 0;
|
||||||
diff -Naur xbmc-pvr-11.0.1/xbmc/video/dialogs/GUIDialogVideoSettings.cpp xbmc-pvr-11.0.1.patch/xbmc/video/dialogs/GUIDialogVideoSettings.cpp
|
diff -Naur xbmc-pvr-11.0.1/xbmc/video/dialogs/GUIDialogVideoSettings.cpp xbmc-pvr-11.0.1.patch/xbmc/video/dialogs/GUIDialogVideoSettings.cpp
|
||||||
--- xbmc-pvr-11.0.1/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2012-03-27 17:55:34.000000000 +0200
|
--- xbmc-pvr-11.0.1/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2012-03-27 17:55:34.000000000 +0200
|
||||||
+++ xbmc-pvr-11.0.1.patch/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2012-05-14 09:40:52.908330712 +0200
|
+++ xbmc-pvr-11.0.1.patch/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2012-05-14 14:13:28.664861093 +0200
|
||||||
@@ -113,7 +113,6 @@
|
@@ -113,7 +113,6 @@
|
||||||
entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE , 16314));
|
entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE , 16314));
|
||||||
entries.push_back(make_pair(VS_INTERLACEMETHOD_DXVA_BOB , 16320));
|
entries.push_back(make_pair(VS_INTERLACEMETHOD_DXVA_BOB , 16320));
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user