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`.
Showing the changes to libavcodec/dds.c (1 of 9 files). Show all
Unified · Split
| @@ -636,6 +636,8 @@ static int dds_decode(AVCodecContext *avctx, AVFrame *frame, · 635 unmodified lines | ||
| 636 | 636 | ctx->dec.tex_data.in = gbc->buffer; |
| 637 | 637 | ctx->dec.frame_data.out = frame->data[0]; |
| 638 | 638 | ctx->dec.stride = frame->linesize[0]; |
| 639 | + ctx->dec.width = avctx->coded_width; | |
| 640 | + ctx->dec.height = avctx->coded_height; | |
| 639 | 641 | ff_texturedsp_exec_decompress_threads(avctx, &ctx->dec); |
| 640 | 642 | } else if (!ctx->paletted && ctx->bpp == 4 && avctx->pix_fmt == AV_PIX_FMT_PAL8) { |
| 641 | 643 | uint8_t *dst = frame->data[0]; |