[vlc-commits] Contribs: ffmpeg, fix hw decoding
Jean-Baptiste Kempf
git at videolan.org
Sun Dec 10 18:45:05 CET 2017
vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Sun Dec 10 18:02:52 2017 +0100| [2007dae6e53bcd89cf2286e5f152aacc51cea6e6] | committer: Jean-Baptiste Kempf
Contribs: ffmpeg, fix hw decoding
Patches from tguillem
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2007dae6e53bcd89cf2286e5f152aacc51cea6e6
---
...AD_HOC-method-for-DXVA2-D3D11-VAAPI-VDPAU.patch | 24 ++++++++++++
.../lavc-change-HW_CONFIG_HWACCEL-arguments.patch | 44 ++++++++++++++++++++++
contrib/src/ffmpeg/rules.mak | 2 +
3 files changed, 70 insertions(+)
diff --git a/contrib/src/ffmpeg/lavc-add-back-AD_HOC-method-for-DXVA2-D3D11-VAAPI-VDPAU.patch b/contrib/src/ffmpeg/lavc-add-back-AD_HOC-method-for-DXVA2-D3D11-VAAPI-VDPAU.patch
new file mode 100644
index 0000000000..08a98743dc
--- /dev/null
+++ b/contrib/src/ffmpeg/lavc-add-back-AD_HOC-method-for-DXVA2-D3D11-VAAPI-VDPAU.patch
@@ -0,0 +1,24 @@
+diff --git a/libavcodec/hwaccel.h b/libavcodec/hwaccel.h
+index 16ee822920..292a87f6b5 100644
+--- a/libavcodec/hwaccel.h
++++ b/libavcodec/hwaccel.h
+@@ -75,15 +75,15 @@ typedef struct AVCodecHWConfigInternal {
+ }
+
+ #define HWACCEL_DXVA2(codec) \
+- HW_CONFIG_HWACCEL(DXVA2_VLD, 0, DXVA2, ff_ ## codec ## _dxva2_hwaccel)
++ HW_CONFIG_HWACCEL(DXVA2_VLD, 1, DXVA2, ff_ ## codec ## _dxva2_hwaccel)
+ #define HWACCEL_D3D11VA2(codec) \
+- HW_CONFIG_HWACCEL(D3D11, 0, D3D11VA, ff_ ## codec ## _d3d11va2_hwaccel)
++ HW_CONFIG_HWACCEL(D3D11, 1, D3D11VA, ff_ ## codec ## _d3d11va2_hwaccel)
+ #define HWACCEL_NVDEC(codec) \
+ HW_CONFIG_HWACCEL(CUDA, 0, CUDA, ff_ ## codec ## _nvdec_hwaccel)
+ #define HWACCEL_VAAPI(codec) \
+- HW_CONFIG_HWACCEL(VAAPI, 0, VAAPI, ff_ ## codec ## _vaapi_hwaccel)
++ HW_CONFIG_HWACCEL(VAAPI, 1, VAAPI, ff_ ## codec ## _vaapi_hwaccel)
+ #define HWACCEL_VDPAU(codec) \
+- HW_CONFIG_HWACCEL(VDPAU, 0, VDPAU, ff_ ## codec ## _vdpau_hwaccel)
++ HW_CONFIG_HWACCEL(VDPAU, 1, VDPAU, ff_ ## codec ## _vdpau_hwaccel)
+ #define HWACCEL_VIDEOTOOLBOX(codec) \
+ HW_CONFIG_HWACCEL(VIDEOTOOLBOX, 0, VIDEOTOOLBOX, ff_ ## codec ## _videotoolbox_hwaccel)
+
diff --git a/contrib/src/ffmpeg/lavc-change-HW_CONFIG_HWACCEL-arguments.patch b/contrib/src/ffmpeg/lavc-change-HW_CONFIG_HWACCEL-arguments.patch
new file mode 100644
index 0000000000..1df7182298
--- /dev/null
+++ b/contrib/src/ffmpeg/lavc-change-HW_CONFIG_HWACCEL-arguments.patch
@@ -0,0 +1,44 @@
+diff --git a/libavcodec/hwaccel.h b/libavcodec/hwaccel.h
+index ae55527c2f..16ee822920 100644
+--- a/libavcodec/hwaccel.h
++++ b/libavcodec/hwaccel.h
+@@ -42,12 +42,13 @@ typedef struct AVCodecHWConfigInternal {
+
+ // These macros are used to simplify AVCodecHWConfigInternal definitions.
+
+-#define HW_CONFIG_HWACCEL(format, device, name) \
++#define HW_CONFIG_HWACCEL(format, ad_hoc, device, name) \
+ &(const AVCodecHWConfigInternal) { \
+ .public = { \
+ .pix_fmt = AV_PIX_FMT_ ## format, \
+ .methods = AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX | \
+- AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX, \
++ AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX | \
++ ad_hoc ? AV_CODEC_HW_CONFIG_METHOD_AD_HOC : 0, \
+ .device_type = AV_HWDEVICE_TYPE_ ## device, \
+ }, \
+ .hwaccel = &name, \
+@@ -74,17 +75,17 @@ typedef struct AVCodecHWConfigInternal {
+ }
+
+ #define HWACCEL_DXVA2(codec) \
+- HW_CONFIG_HWACCEL(DXVA2_VLD, DXVA2, ff_ ## codec ## _dxva2_hwaccel)
++ HW_CONFIG_HWACCEL(DXVA2_VLD, 0, DXVA2, ff_ ## codec ## _dxva2_hwaccel)
+ #define HWACCEL_D3D11VA2(codec) \
+- HW_CONFIG_HWACCEL(D3D11, D3D11VA, ff_ ## codec ## _d3d11va2_hwaccel)
++ HW_CONFIG_HWACCEL(D3D11, 0, D3D11VA, ff_ ## codec ## _d3d11va2_hwaccel)
+ #define HWACCEL_NVDEC(codec) \
+- HW_CONFIG_HWACCEL(CUDA, CUDA, ff_ ## codec ## _nvdec_hwaccel)
++ HW_CONFIG_HWACCEL(CUDA, 0, CUDA, ff_ ## codec ## _nvdec_hwaccel)
+ #define HWACCEL_VAAPI(codec) \
+- HW_CONFIG_HWACCEL(VAAPI, VAAPI, ff_ ## codec ## _vaapi_hwaccel)
++ HW_CONFIG_HWACCEL(VAAPI, 0, VAAPI, ff_ ## codec ## _vaapi_hwaccel)
+ #define HWACCEL_VDPAU(codec) \
+- HW_CONFIG_HWACCEL(VDPAU, VDPAU, ff_ ## codec ## _vdpau_hwaccel)
++ HW_CONFIG_HWACCEL(VDPAU, 0, VDPAU, ff_ ## codec ## _vdpau_hwaccel)
+ #define HWACCEL_VIDEOTOOLBOX(codec) \
+- HW_CONFIG_HWACCEL(VIDEOTOOLBOX, VIDEOTOOLBOX, ff_ ## codec ## _videotoolbox_hwaccel)
++ HW_CONFIG_HWACCEL(VIDEOTOOLBOX, 0, VIDEOTOOLBOX, ff_ ## codec ## _videotoolbox_hwaccel)
+
+ #define HWACCEL_D3D11VA(codec) \
+ HW_CONFIG_AD_HOC_HWACCEL(D3D11VA_VLD, ff_ ## codec ## _d3d11va_hwaccel)
diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
index 4a49cbc5be..b129d6a897 100644
--- a/contrib/src/ffmpeg/rules.mak
+++ b/contrib/src/ffmpeg/rules.mak
@@ -231,6 +231,8 @@ ffmpeg: ffmpeg-$(FFMPEG_BASENAME).tar.xz .sum-ffmpeg
tar xvJf "$<" --strip-components=1 -C $@-$(FFMPEG_BASENAME)
ifdef USE_FFMPEG
$(APPLY) $(SRC)/ffmpeg/armv7_fixup.patch
+ $(APPLY) $(SRC)/ffmpeg/lavc-change-HW_CONFIG_HWACCEL-arguments.patch
+ $(APPLY) $(SRC)/ffmpeg/lavc-add-back-AD_HOC-method-for-DXVA2-D3D11-VAAPI-VDPAU.patch
endif
ifdef USE_LIBAV
$(APPLY) $(SRC)/ffmpeg/libav_gsm.patch
More information about the vlc-commits
mailing list