Hi

this breaks brender

./ffmpeg -y -i 5-0-TESTMAP.PIX -vframes 1 /tmp/brender.tga

colors look very wrong

https://samples.ffmpeg.org/game-formats/brender/brender_pix.tar.gz

thx

On Thu, Feb 26, 2026 at 12:16:16PM +0200, Niklas Haas via ffmpeg-cvslog wrote:
> This is an automated email from the git hooks/post-receive script.
> 
> Git pushed a commit to branch master
> in repository ffmpeg.
> 
> commit 5fa2a65c110a942acba211ac3e6690ef244c8e9e
> Author:     Niklas Haas <[email protected]>
> AuthorDate: Tue Feb 24 19:01:05 2026 +0100
> Commit:     Niklas Haas <[email protected]>
> CommitDate: Thu Feb 26 10:15:52 2026 +0000
> 
>     swscale/unscaled: fix rgbToRgbWrapper for YUVX
>     
>     This code calculates the pixel step using c->dstFormatBpp, which is wrong;
>     should use the pixdesc step instead. (dstFormatBpp is 3 for YUVX, but
>     the actual pixel step is 4 bytes)
>     
>     This bug was mostly hidden by the fact that the same bug actually disabled
>     the fast path for the (common) case of strStride == dstStride. Uncovered 
> while
>     making changes to the swscale.c allocation code.
>     
>     Reproduced by modifying libswscale in such a way that the dst buffer 
> stride
>     happened to be exactly 4/3 larger than the src buffer stride, e.g. by 
> adding
>     extra padding to each dst buffer line, but reproducible in principle by 
> any
>     API user.
>     
>     Signed-off-by: Niklas Haas <[email protected]>
> ---
>  libswscale/swscale_unscaled.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
> index 38a9b467d4..f612f88c4d 100644
> --- a/libswscale/swscale_unscaled.c
> +++ b/libswscale/swscale_unscaled.c
> @@ -1994,8 +1994,8 @@ static int rgbToRgbWrapper(SwsInternal *c, const 
> uint8_t *const src[], const int
>      const enum AVPixelFormat dstFormat = c->opts.dst_format;
>      const AVPixFmtDescriptor *desc_src = 
> av_pix_fmt_desc_get(c->opts.src_format);
>      const AVPixFmtDescriptor *desc_dst = 
> av_pix_fmt_desc_get(c->opts.dst_format);
> -    const int srcBpp = (c->srcFormatBpp + 7) >> 3;
> -    const int dstBpp = (c->dstFormatBpp + 7) >> 3;
> +    const int srcBpp = desc_src->comp[0].step;
> +    const int dstBpp = desc_dst->comp[0].step;
>      rgbConvFn conv = findRgbConvFn(c);
>  
>      if (!conv) {
> @@ -2004,8 +2004,8 @@ static int rgbToRgbWrapper(SwsInternal *c, const 
> uint8_t *const src[], const int
>      } else {
>          const uint8_t *srcPtr = src[0];
>                uint8_t *dstPtr = dst[0];
> -        int src_bswap = IS_NOT_NE(c->srcFormatBpp, desc_src);
> -        int dst_bswap = IS_NOT_NE(c->dstFormatBpp, desc_dst);
> +        int src_bswap = IS_NOT_NE(srcBpp, desc_src);
> +        int dst_bswap = IS_NOT_NE(dstBpp, desc_dst);
>  
>          if ((srcFormat == AV_PIX_FMT_RGB32_1 || srcFormat == 
> AV_PIX_FMT_BGR32_1) &&
>              !isRGBA32(dstFormat))
> 
> _______________________________________________
> ffmpeg-cvslog mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> 

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Whats the most studid thing your enemy could do ? Blow himself up
Whats the most studid thing you could do ? Give up your rights and
freedom because your enemy blew himself up.

Attachment: signature.asc
Description: PGP signature

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to