linuxOS_AP05/buildroot/package/ffmpeg/0001-find_codec-prefer-hardware-capability.patch

49 lines
1.6 KiB
Diff
Raw Normal View History

2025-06-02 05:59:07 +00:00
From 7b677a25ac08940b78bf7d24908ae76757c60475 Mon Sep 17 00:00:00 2001
From: Hertz Wang <wangh@rock-chips.com>
Date: Mon, 29 Oct 2018 11:28:40 +0800
Subject: [PATCH 01/11] find_codec prefer hardware capability
Change-Id: Ib885af15b8942ea13cc1e944ab84ecb6b939ac70
Signed-off-by: Hertz Wang <wangh@rock-chips.com>
---
libavcodec/allcodecs.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 1b8144a..a8fa898 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -853,7 +853,7 @@ static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id)
static AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *))
{
- const AVCodec *p, *experimental = NULL;
+ const AVCodec *p, *experimental = NULL, *first = NULL;
void *i = 0;
id = remap_deprecated_codec_id(id);
@@ -864,12 +864,17 @@ static AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *))
if (p->id == id) {
if (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL && !experimental) {
experimental = p;
- } else
- return (AVCodec*)p;
+ } else {
+ if (!first)
+ first = p;
+ // prefer hardware
+ if (p->capabilities & AV_CODEC_CAP_HARDWARE)
+ return (AVCodec*)p;
+ }
}
}
- return (AVCodec*)experimental;
+ return first ? (AVCodec*)first : (AVCodec*)experimental;
}
AVCodec *avcodec_find_encoder(enum AVCodecID id)
--
2.7.4