mirror of
https://github.com/openwrt/packages.git
synced 2026-10-12 05:57:04 +04:00
ffmpeg: add LibreELEC's Kodi compatibility patches
Patches:
110-libdav1d-get-format: carried over from LibreELEC (Lukas Rusak):
adds a get_format callback to the libdav1d decoder so Kodi's
hardware-first, software-fallback decoder setup initialises
multithreaded software decoding properly; without effect until the
libdav1d option is enabled
111-swscale-yuv2rgb-no-warning: carried over from LibreELEC
(Christian Hewitt): removes the warning swscale logs on every
context initialisation without an accelerated colourspace
conversion
LibreELEC keeps both in one file
(packages/multimedia/ffmpeg/patches/libreelec/0001-libreelec.patch as
of LibreELEC commit 5d54b2dd82); they are split here so each keeps its
own header. Headers unchanged, hunks refreshed with quilt; the patched
tree is identical to the one LibreELEC's file produces.
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
This commit is contained in:
1 parent
87a92bf189
commit
83f634c4b3
2 files changed
+68
No files matched your search
@@ -0,0 +1,46 @@
|
||||
From 342b6ab899e9c66286239c0717ea67183af505df Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Wed, 10 Apr 2019 13:39:21 -0700
|
||||
Subject: [PATCH 1/2] libavcodec/libdav1d: add libdav1d_get_format method to
|
||||
call ff_get_format
|
||||
|
||||
This will allow applications to properly init the decoder in
|
||||
cases where a hardware decoder is tried first and and software
|
||||
decoder is tried after by calling the get_format callback.
|
||||
|
||||
Even though there is no hardware pixel formats available
|
||||
we still need to return the software pixel format.
|
||||
|
||||
Tested with Kodi by checking if multithreaded software
|
||||
decoding is properly activated.
|
||||
---
|
||||
libavcodec/libdav1d.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- a/libavcodec/libdav1d.c
|
||||
+++ b/libavcodec/libdav1d.c
|
||||
@@ -67,6 +67,16 @@ static const enum AVPixelFormat pix_fmt_
|
||||
AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRP12,
|
||||
};
|
||||
|
||||
+static enum AVPixelFormat libdav1d_get_format(AVCodecContext *avctx, const Dav1dPicture *p)
|
||||
+{
|
||||
+ enum AVPixelFormat pix_fmts[2], *fmt = pix_fmts;
|
||||
+
|
||||
+ *fmt++ = pix_fmt[p->p.layout][p->seq_hdr->hbd];
|
||||
+ *fmt = AV_PIX_FMT_NONE;
|
||||
+
|
||||
+ return ff_get_format(avctx, pix_fmts);
|
||||
+}
|
||||
+
|
||||
static void libdav1d_log_callback(void *opaque, const char *fmt, va_list vl)
|
||||
{
|
||||
AVCodecContext *c = opaque;
|
||||
@@ -410,6 +420,7 @@ static int libdav1d_receive_frame(AVCode
|
||||
if (res < 0)
|
||||
goto fail;
|
||||
|
||||
+ frame->format = c->pix_fmt = libdav1d_get_format(c, p);
|
||||
frame->width = p->p.w;
|
||||
frame->height = p->p.h;
|
||||
if (c->width != p->p.w || c->height != p->p.h) {
|
||||
@@ -0,0 +1,22 @@
|
||||
From b8edcb3683570867864a3d26253c4e48be51baab Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <github@chrishewitt.net>
|
||||
Date: Sun, 11 Aug 2019 07:08:19 +0000
|
||||
Subject: [PATCH 2/2] add long-term yuv2rgb logging patch
|
||||
|
||||
---
|
||||
libswscale/yuv2rgb.c | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
--- a/libswscale/yuv2rgb.c
|
||||
+++ b/libswscale/yuv2rgb.c
|
||||
@@ -575,10 +575,6 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsInter
|
||||
if (t)
|
||||
return t;
|
||||
|
||||
- av_log(c, AV_LOG_WARNING,
|
||||
- "No accelerated colorspace conversion found from %s to %s.\n",
|
||||
- av_get_pix_fmt_name(c->opts.src_format), av_get_pix_fmt_name(c->opts.dst_format));
|
||||
-
|
||||
if (c->opts.src_format == AV_PIX_FMT_YUV422P) {
|
||||
switch (c->opts.dst_format) {
|
||||
case AV_PIX_FMT_BGR48BE:
|
||||
Reference in new issue
Block a user