mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
ffmpeg: drop kodi patch
Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
parent
8f8e40c3af
commit
c57e7bc283
@ -10,7 +10,7 @@ PKG_SITE="https://ffmpeg.org"
|
|||||||
PKG_URL="http://ffmpeg.org/releases/ffmpeg-${PKG_VERSION}.tar.xz"
|
PKG_URL="http://ffmpeg.org/releases/ffmpeg-${PKG_VERSION}.tar.xz"
|
||||||
PKG_DEPENDS_TARGET="toolchain zlib bzip2 openssl speex"
|
PKG_DEPENDS_TARGET="toolchain zlib bzip2 openssl speex"
|
||||||
PKG_LONGDESC="FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video."
|
PKG_LONGDESC="FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video."
|
||||||
PKG_PATCH_DIRS="kodi libreelec"
|
PKG_PATCH_DIRS="libreelec"
|
||||||
|
|
||||||
case "${PROJECT}" in
|
case "${PROJECT}" in
|
||||||
Amlogic)
|
Amlogic)
|
||||||
|
@ -1,215 +0,0 @@
|
|||||||
From c4b5aa630053c59eac2c2fe52071cd26c570107a Mon Sep 17 00:00:00 2001
|
|
||||||
From: marc <mhocking@ubuntu-desktop.(none)>
|
|
||||||
Date: Mon, 18 Feb 2013 17:18:18 +0000
|
|
||||||
Subject: [PATCH 1/6] dxva-h264: Fix an AMD driver issue with playback of
|
|
||||||
streams that don't start with an I-Frame
|
|
||||||
|
|
||||||
---
|
|
||||||
libavcodec/dxva2_h264.c | 8 ++++++++
|
|
||||||
libavcodec/h264_slice.c | 1 +
|
|
||||||
libavcodec/h264dec.c | 1 +
|
|
||||||
libavcodec/h264dec.h | 2 ++
|
|
||||||
4 files changed, 12 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
|
|
||||||
index 6300b1418d..9e53355fae 100644
|
|
||||||
--- a/libavcodec/dxva2_h264.c
|
|
||||||
+++ b/libavcodec/dxva2_h264.c
|
|
||||||
@@ -506,6 +506,14 @@ static int dxva2_h264_end_frame(AVCodecContext *avctx)
|
|
||||||
|
|
||||||
if (ctx_pic->slice_count <= 0 || ctx_pic->bitstream_size <= 0)
|
|
||||||
return -1;
|
|
||||||
+
|
|
||||||
+ // Wait for an I-frame before start decoding. Workaround for ATI UVD and UVD+ GPUs
|
|
||||||
+ if (!h->got_first_iframe) {
|
|
||||||
+ if (!(ctx_pic->pp.wBitFields & (1 << 15)))
|
|
||||||
+ return -1;
|
|
||||||
+ h->got_first_iframe = 1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
ret = ff_dxva2_common_end_frame(avctx, h->cur_pic_ptr->f,
|
|
||||||
&ctx_pic->pp, sizeof(ctx_pic->pp),
|
|
||||||
&ctx_pic->qm, sizeof(ctx_pic->qm),
|
|
||||||
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
|
|
||||||
index d56722a5c2..a94a5a1784 100644
|
|
||||||
--- a/libavcodec/h264_slice.c
|
|
||||||
+++ b/libavcodec/h264_slice.c
|
|
||||||
@@ -971,6 +971,7 @@ static int h264_slice_header_init(H264Context *h)
|
|
||||||
|
|
||||||
h->first_field = 0;
|
|
||||||
h->prev_interlaced_frame = 1;
|
|
||||||
+ h->got_first_iframe = 0;
|
|
||||||
|
|
||||||
init_scan_tables(h);
|
|
||||||
ret = ff_h264_alloc_tables(h);
|
|
||||||
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
|
|
||||||
index 2a5b53ea56..8689b462d1 100644
|
|
||||||
--- a/libavcodec/h264dec.c
|
|
||||||
+++ b/libavcodec/h264dec.c
|
|
||||||
@@ -448,6 +448,7 @@ void ff_h264_flush_change(H264Context *h)
|
|
||||||
|
|
||||||
h->next_outputed_poc = INT_MIN;
|
|
||||||
h->prev_interlaced_frame = 1;
|
|
||||||
+ h->got_first_iframe = 0;
|
|
||||||
idr(h);
|
|
||||||
|
|
||||||
h->poc.prev_frame_num = -1;
|
|
||||||
diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h
|
|
||||||
index 9a1ec1bace..eab495cdd0 100644
|
|
||||||
--- a/libavcodec/h264dec.h
|
|
||||||
+++ b/libavcodec/h264dec.h
|
|
||||||
@@ -532,6 +532,8 @@ typedef struct H264Context {
|
|
||||||
* slices) anymore */
|
|
||||||
int setup_finished;
|
|
||||||
|
|
||||||
+ int got_first_iframe;
|
|
||||||
+
|
|
||||||
int cur_chroma_format_idc;
|
|
||||||
int cur_bit_depth_luma;
|
|
||||||
int16_t slice_row[MAX_SLICES]; ///< to detect when MAX_SLICES is too low
|
|
||||||
|
|
||||||
From df996a4c35b85b61c73fa7cabc587299ed6b3957 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rechi <Rechi@users.noreply.github.com>
|
|
||||||
Date: Tue, 21 Nov 2017 08:16:53 +0100
|
|
||||||
Subject: [PATCH 2/6] use Kodi as extra version
|
|
||||||
|
|
||||||
---
|
|
||||||
Makefile | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
|
||||||
index 61f79e27ae..7ab083fd70 100644
|
|
||||||
--- a/Makefile
|
|
||||||
+++ b/Makefile
|
|
||||||
@@ -137,7 +137,7 @@ GIT_LOG = $(SRC_PATH)/.git/logs/HEAD
|
|
||||||
.version: M=@
|
|
||||||
|
|
||||||
libavutil/ffversion.h .version:
|
|
||||||
- $(M)$(VERSION_SH) $(SRC_PATH) libavutil/ffversion.h $(EXTRA_VERSION)
|
|
||||||
+ $(M)$(VERSION_SH) $(SRC_PATH) libavutil/ffversion.h Kodi
|
|
||||||
$(Q)touch .version
|
|
||||||
|
|
||||||
# force version.sh to run whenever version might have changed
|
|
||||||
|
|
||||||
From e02f5681f78b18d886af512d0ad5d553faa8968d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rechi <Rechi@users.noreply.github.com>
|
|
||||||
Date: Tue, 21 Nov 2017 08:16:53 +0100
|
|
||||||
Subject: [PATCH 3/6] common.mak: never ignore an error if strip doesn't
|
|
||||||
succeed
|
|
||||||
|
|
||||||
---
|
|
||||||
ffbuild/common.mak | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/ffbuild/common.mak b/ffbuild/common.mak
|
|
||||||
index f52473453e..85f1d43bb8 100644
|
|
||||||
--- a/ffbuild/common.mak
|
|
||||||
+++ b/ffbuild/common.mak
|
|
||||||
@@ -101,7 +101,7 @@ COMPILE_LASX = $(call COMPILE,CC,LASXFLAGS)
|
|
||||||
|
|
||||||
%.o: %.asm
|
|
||||||
$(COMPILE_X86ASM)
|
|
||||||
- -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@)
|
|
||||||
+ $(if $(STRIP), $(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@))
|
|
||||||
|
|
||||||
%.o: %.rc
|
|
||||||
$(WINDRES) $(IFLAGS) $(foreach ARG,$(CC_DEPFLAGS),--preprocessor-arg "$(ARG)") -o $@ $<
|
|
||||||
|
|
||||||
From 43ad570ce0dd168bdcc206244594302f922d95f2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: wsnipex <wsnipex@a1.net>
|
|
||||||
Date: Tue, 21 Nov 2017 08:16:53 +0100
|
|
||||||
Subject: [PATCH 4/6] only check for a git rev if the src tree is in a git repo
|
|
||||||
|
|
||||||
fixes the version string when building from the kodi depends src tree
|
|
||||||
---
|
|
||||||
ffbuild/version.sh | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/ffbuild/version.sh b/ffbuild/version.sh
|
|
||||||
index edc4dd33c5..239a138ca7 100755
|
|
||||||
--- a/ffbuild/version.sh
|
|
||||||
+++ b/ffbuild/version.sh
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
|
|
||||||
# Usage: version.sh <ffmpeg-root-dir> <output-version.h> <extra-version>
|
|
||||||
|
|
||||||
+if [ -d $1/.git ]; then # only check for a git rev, if the src tree is in a git repo
|
|
||||||
# check for git short hash
|
|
||||||
if ! test "$revision"; then
|
|
||||||
if (cd "$1" && grep git RELEASE 2> /dev/null >/dev/null) ; then
|
|
||||||
@@ -27,6 +28,7 @@ if [ -z "$revision" ]; then
|
|
||||||
git_hash="${srcdir##*-}";;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
+fi
|
|
||||||
|
|
||||||
# no revision number found
|
|
||||||
test "$revision" || revision=$(cd "$1" && cat RELEASE 2> /dev/null)
|
|
||||||
|
|
||||||
From fec4c2031296c414685477c75e6a4bdff105a3ac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Anton Fedchin <afedchin at ruswizards.com>
|
|
||||||
Date: Fri, 11 Jan 2019 10:47:43 +0100
|
|
||||||
Subject: [PATCH 5/6] after 153b36f there is a possibility to crash when trying
|
|
||||||
to get index of a surface which points to nirvana.
|
|
||||||
|
|
||||||
it may occurs when a stream starts with non i-frame.
|
|
||||||
---
|
|
||||||
libavcodec/dxva2.c | 10 ++++++----
|
|
||||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c
|
|
||||||
index 568d686f39..735127f83a 100644
|
|
||||||
--- a/libavcodec/dxva2.c
|
|
||||||
+++ b/libavcodec/dxva2.c
|
|
||||||
@@ -777,16 +777,18 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx,
|
|
||||||
#if CONFIG_D3D11VA
|
|
||||||
if (avctx->pix_fmt == AV_PIX_FMT_D3D11)
|
|
||||||
return (intptr_t)frame->data[1];
|
|
||||||
- if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD) {
|
|
||||||
+ if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD && surface) {
|
|
||||||
D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC viewDesc;
|
|
||||||
ID3D11VideoDecoderOutputView_GetDesc((ID3D11VideoDecoderOutputView*) surface, &viewDesc);
|
|
||||||
return viewDesc.Texture2D.ArraySlice;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if CONFIG_DXVA2
|
|
||||||
- for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) {
|
|
||||||
- if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD && ctx->dxva2.surface[i] == surface)
|
|
||||||
- return i;
|
|
||||||
+ if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD) {
|
|
||||||
+ for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) {
|
|
||||||
+ if (ctx->dxva2.surface[i] == surface)
|
|
||||||
+ return i;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
From ca8882fcaf5da0192772733a7ba832765df7c391 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rainer Hochecker <fernetmenta@online.de>
|
|
||||||
Date: Sat, 26 Jan 2019 19:48:35 +0100
|
|
||||||
Subject: [PATCH 6/6] avcodec/vaapi_h264: skip decode if pic has no slices
|
|
||||||
|
|
||||||
This fixes / workarounds https://bugs.freedesktop.org/show_bug.cgi?id=105368.
|
|
||||||
It was hit frequently when watching h264 channels received via DVB-X.
|
|
||||||
Corresponding kodi bug: https://github.com/xbmc/xbmc/issues/15704
|
|
||||||
---
|
|
||||||
libavcodec/vaapi_h264.c | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c
|
|
||||||
index 9332aa6f31..d4494beebf 100644
|
|
||||||
--- a/libavcodec/vaapi_h264.c
|
|
||||||
+++ b/libavcodec/vaapi_h264.c
|
|
||||||
@@ -314,6 +314,11 @@ static int vaapi_h264_end_frame(AVCodecContext *avctx)
|
|
||||||
H264SliceContext *sl = &h->slice_ctx[0];
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
+ if (pic->nb_slices == 0) {
|
|
||||||
+ ret = AVERROR_INVALIDDATA;
|
|
||||||
+ goto finish;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
ret = ff_vaapi_decode_issue(avctx, pic);
|
|
||||||
if (ret < 0)
|
|
||||||
goto finish;
|
|
Loading…
x
Reference in New Issue
Block a user