lavc/texturedsp: require explicitly-set frame dimensions

This change decouples the frame dimensions from avctx, which is useful
for DXV decoding, and fixes incorrect behavior in the existing
implementation.

Tested with `make fate THREADS=7` and
`make fate THREADS=7 THREAD_TYPE=slice`.

Signed-off-by: Connor Worley <connorbworley@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
Connor Worley
2024-02-14 21:44:38 -08:00
committed by Anton Khirnov
parent 0895ef0d6d
commit 1487f6198c
9 changed files with 25 additions and 11 deletions

View File

@@ -636,6 +636,8 @@ 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];
ctx->dec.width = avctx->coded_width;
ctx->dec.height = avctx->coded_height;
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];