summaryrefslogtreecommitdiff
path: root/libavcodec/bitpacked_dec.c
diff options
context:
space:
mode:
authorLimin Wang <lance.lmwang@gmail.com>2021-11-26 20:20:15 +0800
committerLimin Wang <lance.lmwang@gmail.com>2021-12-09 09:10:35 +0800
commitd39f667da155054307e143dc23b225ca88a59dc9 (patch)
tree7d9eb481115b4deb2a0ef1555717eab8964c7013 /libavcodec/bitpacked_dec.c
parent17b434f1ce0bb1687460ee5539fa8038bbc9018c (diff)
downloadffmpeg-d39f667da155054307e143dc23b225ca88a59dc9.tar.gz
avcodec/bitpacked_dec: support for frame thread decode
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Diffstat (limited to 'libavcodec/bitpacked_dec.c')
-rw-r--r--libavcodec/bitpacked_dec.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/bitpacked_dec.c b/libavcodec/bitpacked_dec.c
index a2edccc43c..69fea9c366 100644
--- a/libavcodec/bitpacked_dec.c
+++ b/libavcodec/bitpacked_dec.c
@@ -30,6 +30,7 @@
#include "internal.h"
#include "get_bits.h"
#include "libavutil/imgutils.h"
+#include "thread.h"
struct BitpackedContext {
int (*decode)(AVCodecContext *avctx, AVFrame *frame,
@@ -64,11 +65,12 @@ static int bitpacked_decode_yuv422p10(AVCodecContext *avctx, AVFrame *frame,
{
uint64_t frame_size = (uint64_t)avctx->width * (uint64_t)avctx->height * 20;
uint64_t packet_size = (uint64_t)avpkt->size * 8;
+ ThreadFrame tframe = { .f = frame };
GetBitContext bc;
uint16_t *y, *u, *v;
int ret, i, j;
- ret = ff_get_buffer(avctx, frame, 0);
+ ret = ff_thread_get_buffer(avctx, &tframe, 0);
if (ret < 0)
return ret;
@@ -149,6 +151,7 @@ const AVCodec ff_bitpacked_decoder = {
.priv_data_size = sizeof(struct BitpackedContext),
.init = bitpacked_init_decoder,
.decode = bitpacked_decode,
+ .capabilities = AV_CODEC_CAP_FRAME_THREADS,
.codec_tags = (const uint32_t []){
MKTAG('U', 'Y', 'V', 'Y'),
FF_CODEC_TAGS_END,