mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-08-02 23:47:49 +00:00
ffmpeg: update v4l2-request patch
Patch created using revisions 081225c..5607e91 from branch v4l2-request-hwaccel-4.4 of https://github.com/jernejsk/FFmpeg
This commit is contained in:
parent
ae5c4718af
commit
3b5f6c8b26
@ -1,7 +1,7 @@
|
||||
From 904af26693095364851bbc6c6557fca9b3437b69 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 3 Dec 2018 23:48:04 +0100
|
||||
Subject: [PATCH 01/16] avutil: add av_buffer_pool_flush()
|
||||
Subject: [PATCH 01/17] avutil: add av_buffer_pool_flush()
|
||||
|
||||
Used by V4L2 request API hwaccel
|
||||
|
||||
@ -55,7 +55,7 @@ index 241a80ed6709..f41363faf1dc 100644
|
||||
From ec84dc22e99f544e4de7c43e7f8ef9ab7ee8e19b Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 02/16] Add common V4L2 request API code
|
||||
Subject: [PATCH 02/17] Add common V4L2 request API code
|
||||
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
---
|
||||
@ -1242,7 +1242,7 @@ index 000000000000..58d2aa70af80
|
||||
From e432d3151f4c5507e40fb1fe8b3c3fb7c7a0a08c Mon Sep 17 00:00:00 2001
|
||||
From: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
Date: Wed, 20 Feb 2019 11:18:00 -0300
|
||||
Subject: [PATCH 03/16] h264dec: add idr_pic_id to slice context
|
||||
Subject: [PATCH 03/17] h264dec: add idr_pic_id to slice context
|
||||
|
||||
Used by V4L2 request API h264 hwaccel
|
||||
|
||||
@ -1282,7 +1282,7 @@ index b7b19ba4f162..0698ab95ba51 100644
|
||||
From 84564d13ec0ec40f408622ff6b0d900723bbab5b Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Wed, 22 May 2019 14:44:22 +0200
|
||||
Subject: [PATCH 04/16] h264dec: add ref_pic_marking and pic_order_cnt bit_size
|
||||
Subject: [PATCH 04/17] h264dec: add ref_pic_marking and pic_order_cnt bit_size
|
||||
to slice context
|
||||
|
||||
Used by V4L2 request API h264 hwaccel
|
||||
@ -1359,7 +1359,7 @@ index 0698ab95ba51..2b39e82c3b03 100644
|
||||
From 5a8628cf6368fe18457d02bf551d5935609efab5 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 05/16] Add V4L2 request API h264 hwaccel
|
||||
Subject: [PATCH 05/17] Add V4L2 request API h264 hwaccel
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
@ -1920,7 +1920,7 @@ index 000000000000..88da8f0a2db0
|
||||
From 02b8fb17c2a019463dcab4baa1cb0bec63353183 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 06/16] Add V4L2 request API mpeg2 hwaccel
|
||||
Subject: [PATCH 06/17] Add V4L2 request API mpeg2 hwaccel
|
||||
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
---
|
||||
@ -2170,7 +2170,7 @@ index 000000000000..84d53209c79d
|
||||
From 1cd61e5730acc12c39c964bcf13c73a54203a390 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Wed, 22 May 2019 14:46:58 +0200
|
||||
Subject: [PATCH 07/16] Add V4L2 request API vp8 hwaccel
|
||||
Subject: [PATCH 07/17] Add V4L2 request API vp8 hwaccel
|
||||
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
@ -2443,7 +2443,7 @@ index d16e7b6aa34e..8ee768d875ad 100644
|
||||
From 3c09465f9dee3355b0ef68140b86e9e66797b5fc Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 08/16] Add V4L2 request API hevc hwaccel
|
||||
Subject: [PATCH 08/17] Add V4L2 request API hevc hwaccel
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
@ -3157,7 +3157,7 @@ index 000000000000..3a9d564ce20b
|
||||
From 140874637c7d3d99b69e6b30f0ad32b07d4e43e8 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Thu, 12 Dec 2019 16:13:55 +0100
|
||||
Subject: [PATCH 09/16] Add V4L2 request API VP9 hwaccel
|
||||
Subject: [PATCH 09/17] Add V4L2 request API VP9 hwaccel
|
||||
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||
@ -3885,7 +3885,7 @@ index 54726df742f9..fee3568736f7 100644
|
||||
From ae118fbbef1e287c5101d7ceaa164727d825c4c2 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Thu, 14 Feb 2019 23:20:05 +0100
|
||||
Subject: [PATCH 10/16] Add and use private linux v5.16 headers for V4L2
|
||||
Subject: [PATCH 10/17] Add and use private linux v5.16 headers for V4L2
|
||||
request API ctrls
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
@ -4184,7 +4184,7 @@ index 3a9d564ce20b..f645c538c25c 100644
|
||||
From afe6727d8c300c77a72549b4e094910f09242a42 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 29 Apr 2019 22:08:59 +0000
|
||||
Subject: [PATCH 11/16] HACK: hwcontext_drm: do not require drm device
|
||||
Subject: [PATCH 11/17] HACK: hwcontext_drm: do not require drm device
|
||||
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
---
|
||||
@ -4211,7 +4211,7 @@ index 7a9fdbd263d4..6297d1f9b613 100644
|
||||
From bcad5ac25923b3d2395edceca821129c00b57b9e Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 12/16] WIP: hevc entry point offsets
|
||||
Subject: [PATCH 12/17] WIP: hevc entry point offsets
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
@ -4258,7 +4258,7 @@ index f645c538c25c..601202a77d7a 100644
|
||||
From 694b79d528295ae4d073c5972d35173116ff2b69 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Fri, 15 May 2020 16:54:05 +0000
|
||||
Subject: [PATCH 13/16] WIP: add NV15 and NV20 support
|
||||
Subject: [PATCH 13/17] WIP: add NV15 and NV20 support
|
||||
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
---
|
||||
@ -4345,7 +4345,7 @@ index 5234b5049b0d..0b294feff2eb 100644
|
||||
From dd29c8e4b504f12be27db8e188ba5bbaade7559f Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 27 Jul 2020 23:15:45 +0000
|
||||
Subject: [PATCH 14/16] HACK: define drm NV15 and NV20 format
|
||||
Subject: [PATCH 14/17] HACK: define drm NV15 and NV20 format
|
||||
|
||||
---
|
||||
libavcodec/v4l2_request.c | 8 ++++++++
|
||||
@ -4374,7 +4374,7 @@ index 0b294feff2eb..a8f0ee79eeef 100644
|
||||
From 0d56f3e7b04a5d574d38dd885000a6eb19eff903 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Wed, 13 May 2020 22:51:21 +0000
|
||||
Subject: [PATCH 15/16] WIP: hevc rkvdec fields
|
||||
Subject: [PATCH 15/17] WIP: hevc rkvdec fields
|
||||
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
---
|
||||
@ -4490,7 +4490,7 @@ index 601202a77d7a..be7838244447 100644
|
||||
From eb9a3213d56d9f6a177f16e907f57e0063b23244 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Bee <knaerzche@gmail.com>
|
||||
Date: Sun, 19 Sep 2021 13:10:55 +0200
|
||||
Subject: [PATCH 16/16] v4l2_request: validate supported framesizes
|
||||
Subject: [PATCH 16/17] v4l2_request: validate supported framesizes
|
||||
|
||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
---
|
||||
@ -4553,3 +4553,181 @@ index a8f0ee79eeef..2fbe16634160 100644
|
||||
|
||||
fmtdesc.index++;
|
||||
}
|
||||
|
||||
From 5607e918e68f9eb3280914b04e93ebff766e9e02 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||
Date: Sun, 27 Feb 2022 18:54:21 +0100
|
||||
Subject: [PATCH 17/17] Improve VP9 decoding
|
||||
|
||||
---
|
||||
libavcodec/v4l2_request_vp9.c | 110 +++++++++++++++++++---------------
|
||||
1 file changed, 62 insertions(+), 48 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/v4l2_request_vp9.c b/libavcodec/v4l2_request_vp9.c
|
||||
index 9b95c76cdb82..ec0300f66dbe 100644
|
||||
--- a/libavcodec/v4l2_request_vp9.c
|
||||
+++ b/libavcodec/v4l2_request_vp9.c
|
||||
@@ -22,78 +22,62 @@
|
||||
|
||||
typedef struct V4L2RequestControlsVP9 {
|
||||
struct v4l2_ctrl_vp9_frame decode_params;
|
||||
+ struct v4l2_ctrl_vp9_compressed_hdr chp;
|
||||
} V4L2RequestControlsVP9;
|
||||
|
||||
-static int v4l2_request_vp9_set_frame_ctx(AVCodecContext *avctx)
|
||||
+static void v4l2_request_vp9_set_frame_ctx(AVCodecContext *avctx)
|
||||
{
|
||||
VP9Context *s = avctx->priv_data;
|
||||
- struct v4l2_ctrl_vp9_compressed_hdr chp;
|
||||
- struct v4l2_ext_control control[] = {
|
||||
- {
|
||||
- .id = V4L2_CID_STATELESS_VP9_COMPRESSED_HDR,
|
||||
- .ptr = &chp,
|
||||
- .size = sizeof(chp),
|
||||
- },
|
||||
- };
|
||||
+ const VP9Frame *f = &s->s.frames[CUR_FRAME];
|
||||
+ V4L2RequestControlsVP9 *controls = f->hwaccel_picture_private;
|
||||
+ struct v4l2_ctrl_vp9_compressed_hdr *chp = &controls->chp;
|
||||
|
||||
- memset(&chp, 0, sizeof(chp));
|
||||
+ memset(chp, 0, sizeof(&chp));
|
||||
|
||||
- chp.tx_mode = s->s.h.txfmmode;
|
||||
- memcpy(chp.tx8, s->prob_raw.p.tx8p, sizeof(s->prob_raw.p.tx8p));
|
||||
- memcpy(chp.tx16, s->prob_raw.p.tx16p, sizeof(s->prob_raw.p.tx16p));
|
||||
- memcpy(chp.tx32, s->prob_raw.p.tx32p, sizeof(s->prob_raw.p.tx32p));
|
||||
+ chp->tx_mode = s->s.h.txfmmode;
|
||||
+ memcpy(chp->tx8, s->prob_raw.p.tx8p, sizeof(s->prob_raw.p.tx8p));
|
||||
+ memcpy(chp->tx16, s->prob_raw.p.tx16p, sizeof(s->prob_raw.p.tx16p));
|
||||
+ memcpy(chp->tx32, s->prob_raw.p.tx32p, sizeof(s->prob_raw.p.tx32p));
|
||||
for (unsigned i = 0; i < 4; i++) {
|
||||
for (unsigned j = 0; j < 2; j++) {
|
||||
for (unsigned k = 0; k < 2; k++) {
|
||||
for (unsigned l = 0; l < 6; l++) {
|
||||
for (unsigned m = 0; m < 6; m++) {
|
||||
- memcpy(chp.coef[i][j][k][l][m], s->prob_raw.coef[i][j][k][l][m], sizeof(chp.coef[0][0][0][0][0]));
|
||||
+ memcpy(chp->coef[i][j][k][l][m], s->prob_raw.coef[i][j][k][l][m], sizeof(chp->coef[0][0][0][0][0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
- memcpy(chp.skip, s->prob_raw.p.skip, sizeof(s->prob_raw.p.skip));
|
||||
- memcpy(chp.inter_mode, s->prob_raw.p.mv_mode, sizeof(s->prob_raw.p.mv_mode));
|
||||
- memcpy(chp.interp_filter, s->prob_raw.p.filter, sizeof(s->prob_raw.p.filter));
|
||||
- memcpy(chp.is_inter, s->prob_raw.p.intra, sizeof(s->prob_raw.p.intra));
|
||||
- memcpy(chp.comp_mode, s->prob_raw.p.comp, sizeof(s->prob_raw.p.comp));
|
||||
- memcpy(chp.single_ref, s->prob_raw.p.single_ref, sizeof(s->prob_raw.p.single_ref));
|
||||
- memcpy(chp.comp_ref, s->prob_raw.p.comp_ref, sizeof(s->prob_raw.p.comp_ref));
|
||||
- memcpy(chp.y_mode, s->prob_raw.p.y_mode, sizeof(s->prob_raw.p.y_mode));
|
||||
+ memcpy(chp->skip, s->prob_raw.p.skip, sizeof(s->prob_raw.p.skip));
|
||||
+ memcpy(chp->inter_mode, s->prob_raw.p.mv_mode, sizeof(s->prob_raw.p.mv_mode));
|
||||
+ memcpy(chp->interp_filter, s->prob_raw.p.filter, sizeof(s->prob_raw.p.filter));
|
||||
+ memcpy(chp->is_inter, s->prob_raw.p.intra, sizeof(s->prob_raw.p.intra));
|
||||
+ memcpy(chp->comp_mode, s->prob_raw.p.comp, sizeof(s->prob_raw.p.comp));
|
||||
+ memcpy(chp->single_ref, s->prob_raw.p.single_ref, sizeof(s->prob_raw.p.single_ref));
|
||||
+ memcpy(chp->comp_ref, s->prob_raw.p.comp_ref, sizeof(s->prob_raw.p.comp_ref));
|
||||
+ memcpy(chp->y_mode, s->prob_raw.p.y_mode, sizeof(s->prob_raw.p.y_mode));
|
||||
for (unsigned i = 0; i < 10; i++)
|
||||
- memcpy(chp.uv_mode[i], s->prob.p.uv_mode[i], sizeof(s->prob.p.uv_mode[0]));
|
||||
+ memcpy(chp->uv_mode[i], s->prob.p.uv_mode[i], sizeof(s->prob.p.uv_mode[0]));
|
||||
for (unsigned i = 0; i < 4; i++)
|
||||
- memcpy(chp.partition[i * 4], s->prob_raw.p.partition[i], sizeof(s->prob_raw.p.partition[0]));
|
||||
- memcpy(chp.mv.joint, s->prob_raw.p.mv_joint, sizeof(s->prob_raw.p.mv_joint));
|
||||
+ memcpy(chp->partition[i * 4], s->prob_raw.p.partition[i], sizeof(s->prob_raw.p.partition[0]));
|
||||
+ memcpy(chp->mv.joint, s->prob_raw.p.mv_joint, sizeof(s->prob_raw.p.mv_joint));
|
||||
for (unsigned i = 0; i < 2; i++) {
|
||||
- chp.mv.sign[i] = s->prob_raw.p.mv_comp[i].sign;
|
||||
- memcpy(chp.mv.classes[i], s->prob_raw.p.mv_comp[i].classes, sizeof(s->prob_raw.p.mv_comp[0].classes));
|
||||
- chp.mv.class0_bit[i] = s->prob_raw.p.mv_comp[i].class0;
|
||||
- memcpy(chp.mv.bits[i], s->prob_raw.p.mv_comp[i].bits, sizeof(s->prob_raw.p.mv_comp[0].bits));
|
||||
- memcpy(chp.mv.class0_fr[i], s->prob_raw.p.mv_comp[i].class0_fp, sizeof(s->prob_raw.p.mv_comp[0].class0_fp));
|
||||
- memcpy(chp.mv.fr[i], s->prob_raw.p.mv_comp[i].fp, sizeof(s->prob_raw.p.mv_comp[0].fp));
|
||||
- chp.mv.class0_hp[i] = s->prob_raw.p.mv_comp[i].class0_hp;
|
||||
- chp.mv.hp[i] = s->prob_raw.p.mv_comp[i].hp;
|
||||
+ chp->mv.sign[i] = s->prob_raw.p.mv_comp[i].sign;
|
||||
+ memcpy(chp->mv.classes[i], s->prob_raw.p.mv_comp[i].classes, sizeof(s->prob_raw.p.mv_comp[0].classes));
|
||||
+ chp->mv.class0_bit[i] = s->prob_raw.p.mv_comp[i].class0;
|
||||
+ memcpy(chp->mv.bits[i], s->prob_raw.p.mv_comp[i].bits, sizeof(s->prob_raw.p.mv_comp[0].bits));
|
||||
+ memcpy(chp->mv.class0_fr[i], s->prob_raw.p.mv_comp[i].class0_fp, sizeof(s->prob_raw.p.mv_comp[0].class0_fp));
|
||||
+ memcpy(chp->mv.fr[i], s->prob_raw.p.mv_comp[i].fp, sizeof(s->prob_raw.p.mv_comp[0].fp));
|
||||
+ chp->mv.class0_hp[i] = s->prob_raw.p.mv_comp[i].class0_hp;
|
||||
+ chp->mv.hp[i] = s->prob_raw.p.mv_comp[i].hp;
|
||||
}
|
||||
-
|
||||
- return ff_v4l2_request_set_controls(avctx, control, FF_ARRAY_ELEMS(control));
|
||||
}
|
||||
|
||||
-static int v4l2_request_vp9_start_frame(AVCodecContext *avctx,
|
||||
- av_unused const uint8_t *buffer,
|
||||
- av_unused uint32_t size)
|
||||
+static void fill_frame(struct v4l2_ctrl_vp9_frame *dec_params, AVCodecContext *avctx)
|
||||
{
|
||||
const VP9Context *s = avctx->priv_data;
|
||||
- const VP9Frame *f = &s->s.frames[CUR_FRAME];
|
||||
- V4L2RequestControlsVP9 *controls = f->hwaccel_picture_private;
|
||||
- struct v4l2_ctrl_vp9_frame *dec_params = &controls->decode_params;
|
||||
const ThreadFrame *ref;
|
||||
- int ret;
|
||||
-
|
||||
- ret = v4l2_request_vp9_set_frame_ctx(avctx);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
|
||||
memset(dec_params, 0, sizeof(*dec_params));
|
||||
|
||||
@@ -208,6 +192,19 @@ static int v4l2_request_vp9_start_frame(AVCodecContext *avctx,
|
||||
if (s->s.h.segmentation.feat[i].skip_enabled)
|
||||
dec_params->seg.feature_enabled[i] |= 1 << V4L2_VP9_SEG_LVL_SKIP;
|
||||
}
|
||||
+}
|
||||
+
|
||||
+static int v4l2_request_vp9_start_frame(AVCodecContext *avctx,
|
||||
+ av_unused const uint8_t *buffer,
|
||||
+ av_unused uint32_t size)
|
||||
+{
|
||||
+ const VP9Context *s = avctx->priv_data;
|
||||
+ const VP9Frame *f = &s->s.frames[CUR_FRAME];
|
||||
+ V4L2RequestControlsVP9 *controls = f->hwaccel_picture_private;
|
||||
+
|
||||
+ v4l2_request_vp9_set_frame_ctx(avctx);
|
||||
+
|
||||
+ fill_frame(&controls->decode_params, avctx);
|
||||
|
||||
return ff_v4l2_request_reset_frame(avctx, f->tf.f);
|
||||
}
|
||||
@@ -233,6 +230,11 @@ static int v4l2_request_vp9_end_frame(AVCodecContext *avctx)
|
||||
.ptr = &controls->decode_params,
|
||||
.size = sizeof(controls->decode_params),
|
||||
},
|
||||
+ {
|
||||
+ .id = V4L2_CID_STATELESS_VP9_COMPRESSED_HDR,
|
||||
+ .ptr = &controls->chp,
|
||||
+ .size = sizeof(controls->chp),
|
||||
+ },
|
||||
};
|
||||
|
||||
ret = ff_v4l2_request_decode_frame(avctx, f->tf.f, control, FF_ARRAY_ELEMS(control));
|
||||
@@ -247,8 +249,20 @@ static int v4l2_request_vp9_end_frame(AVCodecContext *avctx)
|
||||
|
||||
static int v4l2_request_vp9_init(AVCodecContext *avctx)
|
||||
{
|
||||
+ struct v4l2_ctrl_vp9_frame frame;
|
||||
+
|
||||
+ struct v4l2_ext_control control[] = {
|
||||
+ {
|
||||
+ .id = V4L2_CID_STATELESS_VP9_FRAME,
|
||||
+ .ptr = &frame,
|
||||
+ .size = sizeof(frame),
|
||||
+ },
|
||||
+ };
|
||||
+
|
||||
+ fill_frame(&frame, avctx);
|
||||
+
|
||||
// TODO: check V4L2_CID_MPEG_VIDEO_VP9_PROFILE
|
||||
- return ff_v4l2_request_init(avctx, V4L2_PIX_FMT_VP9_FRAME, 3 * 1024 * 1024, NULL, 0);
|
||||
+ return ff_v4l2_request_init(avctx, V4L2_PIX_FMT_VP9_FRAME, 3 * 1024 * 1024, control, FF_ARRAY_ELEMS(control));
|
||||
}
|
||||
|
||||
const AVHWAccel ff_vp9_v4l2request_hwaccel = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user