diff --git a/packages/multimedia/ffmpeg/patches/libreelec/ffmpeg-001-libreelec.patch b/packages/multimedia/ffmpeg/patches/libreelec/ffmpeg-001-libreelec.patch new file mode 100644 index 0000000000..9db1e95648 --- /dev/null +++ b/packages/multimedia/ffmpeg/patches/libreelec/ffmpeg-001-libreelec.patch @@ -0,0 +1,73 @@ +From 823b70bfa0f451a0f8cd0539e1707f7bb7ff5891 Mon Sep 17 00:00:00 2001 +From: Lukas Rusak +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(+) + +diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c +index bbb3ec1e6c..d8a7555c29 100644 +--- a/libavcodec/libdav1d.c ++++ b/libavcodec/libdav1d.c +@@ -55,6 +55,16 @@ static const enum AVPixelFormat pix_fmt_rgb[3] = { + 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; +@@ -259,6 +269,7 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) + c->profile = p->seq_hdr->profile; + c->level = ((p->seq_hdr->operating_points[0].major_level - 2) << 2) + | p->seq_hdr->operating_points[0].minor_level; ++ 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) { + +From 1485078472d107806d1d3f52f89e3ff47ae8715c Mon Sep 17 00:00:00 2001 +From: chewitt +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(-) + +diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c +index 588462504e..20364ff318 100644 +--- a/libswscale/yuv2rgb.c ++++ b/libswscale/yuv2rgb.c +@@ -688,10 +688,6 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c) + 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->srcFormat), av_get_pix_fmt_name(c->dstFormat)); +- + switch (c->dstFormat) { + case AV_PIX_FMT_BGR48BE: + case AV_PIX_FMT_BGR48LE: