From 341d0419e1291d5af524405d21d564aaf23dd409 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Wed, 24 Jan 2024 20:36:55 +0100 Subject: [PATCH] avcodec/texturedsp: Factor common code out Namely calling avctx->execute2(avctx,...). Signed-off-by: Andreas Rheinhardt --- libavcodec/dds.c | 2 +- libavcodec/dxvenc.c | 2 +- libavcodec/hapdec.c | 2 +- libavcodec/hapenc.c | 2 +- libavcodec/texturedsp.c | 2 +- libavcodec/texturedsp.h | 9 +++++---- libavcodec/texturedsp_template.c | 13 ++++++++++--- libavcodec/texturedspenc.c | 2 +- libavcodec/vbndec.c | 2 +- libavcodec/vbnenc.c | 2 +- 10 files changed, 23 insertions(+), 15 deletions(-) diff --git a/libavcodec/dds.c b/libavcodec/dds.c index 31a327a579..67e2325a2a 100644 --- a/libavcodec/dds.c +++ b/libavcodec/dds.c @@ -636,7 +636,7 @@ static int dds_decode(AVCodecContext *avctx, AVFrame *frame, ctx->dec.tex_data.in = gbc->buffer; ctx->dec.frame_data.out = frame->data[0]; ctx->dec.stride = frame->linesize[0]; - avctx->execute2(avctx, ff_texturedsp_decompress_thread, &ctx->dec, NULL, ctx->dec.slice_count); + ff_texturedsp_exec_decompress_threads(avctx, &ctx->dec); } else if (!ctx->paletted && ctx->bpp == 4 && avctx->pix_fmt == AV_PIX_FMT_PAL8) { uint8_t *dst = frame->data[0]; int x, y, i; diff --git a/libavcodec/dxvenc.c b/libavcodec/dxvenc.c index 280a965685..b274175689 100644 --- a/libavcodec/dxvenc.c +++ b/libavcodec/dxvenc.c @@ -236,7 +236,7 @@ static int dxv_encode(AVCodecContext *avctx, AVPacket *pkt, ctx->enc.tex_data.out = ctx->tex_data; ctx->enc.frame_data.in = frame->data[0]; ctx->enc.stride = frame->linesize[0]; - avctx->execute2(avctx, ff_texturedsp_compress_thread, &ctx->enc, NULL, ctx->enc.slice_count); + ff_texturedsp_exec_compress_threads(avctx, &ctx->enc); } else { /* unimplemented: YCoCg formats */ return AVERROR_INVALIDDATA; diff --git a/libavcodec/hapdec.c b/libavcodec/hapdec.c index 64e0494370..3a848e9f67 100644 --- a/libavcodec/hapdec.c +++ b/libavcodec/hapdec.c @@ -323,7 +323,7 @@ static int hap_decode(AVCodecContext *avctx, AVFrame *frame, ctx->dec[t].frame_data.out = frame->data[0]; ctx->dec[t].stride = frame->linesize[0]; - avctx->execute2(avctx, ff_texturedsp_decompress_thread, &ctx->dec[t], NULL, ctx->dec[t].slice_count); + ff_texturedsp_exec_decompress_threads(avctx, &ctx->dec[t]); } /* Frame is ready to be output */ diff --git a/libavcodec/hapenc.c b/libavcodec/hapenc.c index 92cd9c4d31..1464f743d6 100644 --- a/libavcodec/hapenc.c +++ b/libavcodec/hapenc.c @@ -63,7 +63,7 @@ static int compress_texture(AVCodecContext *avctx, uint8_t *out, int out_length, ctx->enc.tex_data.out = out; ctx->enc.frame_data.in = f->data[0]; ctx->enc.stride = f->linesize[0]; - avctx->execute2(avctx, ff_texturedsp_compress_thread, &ctx->enc, NULL, ctx->enc.slice_count); + ff_texturedsp_exec_compress_threads(avctx, &ctx->enc); return 0; } diff --git a/libavcodec/texturedsp.c b/libavcodec/texturedsp.c index b8938213ef..5fb79937da 100644 --- a/libavcodec/texturedsp.c +++ b/libavcodec/texturedsp.c @@ -653,6 +653,6 @@ av_cold void ff_texturedsp_init(TextureDSPContext *c) c->dxn3dc_block = dxn3dc_block; } -#define TEXTUREDSP_FUNC_NAME ff_texturedsp_decompress_thread +#define TEXTUREDSP_FUNC_NAME ff_texturedsp_exec_decompress_threads #define TEXTUREDSP_TEX_FUNC(a, b, c) tex_funct(a, b, c) #include "texturedsp_template.c" diff --git a/libavcodec/texturedsp.h b/libavcodec/texturedsp.h index 6de8fda690..86c8eea02d 100644 --- a/libavcodec/texturedsp.h +++ b/libavcodec/texturedsp.h @@ -39,8 +39,6 @@ #include #include -#include "avcodec.h" - #define TEXTURE_BLOCK_W 4 #define TEXTURE_BLOCK_H 4 @@ -89,7 +87,10 @@ typedef struct TextureDSPThreadContext { void ff_texturedsp_init(TextureDSPContext *c); void ff_texturedspenc_init(TextureDSPEncContext *c); -int ff_texturedsp_decompress_thread(AVCodecContext *avctx, void *arg, int slice, int thread_nb); -int ff_texturedsp_compress_thread(AVCodecContext *avctx, void *arg, int slice, int thread_nb); +struct AVCodecContext; +int ff_texturedsp_exec_decompress_threads(struct AVCodecContext *avctx, + TextureDSPThreadContext *ctx); +int ff_texturedsp_exec_compress_threads(struct AVCodecContext *avctx, + TextureDSPThreadContext *ctx); #endif /* AVCODEC_TEXTUREDSP_H */ diff --git a/libavcodec/texturedsp_template.c b/libavcodec/texturedsp_template.c index bd193aa97c..9589cc4187 100644 --- a/libavcodec/texturedsp_template.c +++ b/libavcodec/texturedsp_template.c @@ -20,10 +20,12 @@ * */ -int TEXTUREDSP_FUNC_NAME(AVCodecContext *avctx, void *arg, - int slice, int thread_nb) +#include "avcodec.h" + +static int exec_func(AVCodecContext *avctx, void *arg, + int slice, int thread_nb) { - TextureDSPThreadContext *ctx = arg; + const TextureDSPThreadContext *ctx = arg; uint8_t *d = ctx->tex_data.out; int w_block = avctx->coded_width / TEXTURE_BLOCK_W; int h_block = avctx->coded_height / TEXTURE_BLOCK_H; @@ -55,3 +57,8 @@ int TEXTUREDSP_FUNC_NAME(AVCodecContext *avctx, void *arg, return 0; } + +int TEXTUREDSP_FUNC_NAME(AVCodecContext *avctx, TextureDSPThreadContext *ctx) +{ + return avctx->execute2(avctx, exec_func, ctx, NULL, ctx->slice_count); +} diff --git a/libavcodec/texturedspenc.c b/libavcodec/texturedspenc.c index ffacf96d56..5657a6ef61 100644 --- a/libavcodec/texturedspenc.c +++ b/libavcodec/texturedspenc.c @@ -654,6 +654,6 @@ av_cold void ff_texturedspenc_init(TextureDSPEncContext *c) c->dxt5ys_block = dxt5ys_block; } -#define TEXTUREDSP_FUNC_NAME ff_texturedsp_compress_thread +#define TEXTUREDSP_FUNC_NAME ff_texturedsp_exec_compress_threads #define TEXTUREDSP_TEX_FUNC(a, b, c) tex_funct(c, b, a) #include "texturedsp_template.c" diff --git a/libavcodec/vbndec.c b/libavcodec/vbndec.c index 02ed43f874..83ce9e994b 100644 --- a/libavcodec/vbndec.c +++ b/libavcodec/vbndec.c @@ -162,7 +162,7 @@ static int vbn_decode_frame(AVCodecContext *avctx, ctx->dec.raw_ratio = 16; ctx->dec.frame_data.out = frame->data[0] + frame->linesize[0] * (frame->height - 1); ctx->dec.stride = -frame->linesize[0]; - avctx->execute2(avctx, ff_texturedsp_decompress_thread, &ctx->dec, NULL, ctx->dec.slice_count); + ff_texturedsp_exec_decompress_threads(avctx, &ctx->dec); } *got_frame = 1; diff --git a/libavcodec/vbnenc.c b/libavcodec/vbnenc.c index 01c2482bff..abdc33c2c9 100644 --- a/libavcodec/vbnenc.c +++ b/libavcodec/vbnenc.c @@ -114,7 +114,7 @@ static int vbn_encode(AVCodecContext *avctx, AVPacket *pkt, ctx->enc.frame_data.in = (frame->height - 1) * frame->linesize[0] + frame->data[0]; ctx->enc.stride = -frame->linesize[0]; ctx->enc.tex_data.out = pkt->data + VBN_HEADER_SIZE; - avctx->execute2(avctx, ff_texturedsp_compress_thread, &ctx->enc, NULL, ctx->enc.slice_count); + ff_texturedsp_exec_compress_threads(avctx, &ctx->enc); } else { const uint8_t *flipped = frame->data[0] + frame->linesize[0] * (frame->height - 1); av_image_copy_plane(pkt->data + VBN_HEADER_SIZE, linesize, flipped, -frame->linesize[0], linesize, frame->height);