[Ffmpeg-devel] swscaler BUG in PIX_FMT_YUV410P -> PIX_FMT_RGBA32

gizmo_video gizmo_video
Tue Feb 20 08:29:43 CET 2007



				Fr?n: Michael Niedermayer <michaelni at gmx.at>
Skickat: den 20 februari 2007 01:10
Till: FFmpeg development discussions and patches <ffmpeg-devel at mplayerhq.hu>
?mne: Re: [Ffmpeg-devel] swscaler BUG in PIX_FMT_YUV410P -> PIX_FMT_RGBA32 

Hi

On Mon, Feb 19, 2007 at 10:11:07PM +0100, GizmoSDK wrote:
> 
> 19 feb 2007 kl. 21.45 skrev GizmoSDK:
> 
> >When converting a image of format PIX_FMT_YUV410P to 
> >PIX_FMT_RGBA32, using MMX but not MMX2 the blue rgb component is 
> >mixed into the green so a blue image gets green.
> >
> >The context is initialised with
> >
> > m_img_convert_ctx = sws_getContext( 
> > m_pVideoCodecCtx->width, m_pVideoCodecCtx->height,
> > PIX_FMT_RGBA32,
> > m_pVideoCodecCtx->width, m_pVideoCodecCtx->height,
> > m_pVideoCodecCtx->pix_fmt,
> > 0, NULL, NULL, NULL);
> >
> >and the conversion is done with
> >
> >sws_scale(m_img_convert_ctx, m_pFrame->data, m_pFrame->linesize,0, 
> >m_pVideoCodecCtx->height, m_pFrameRGB->data, m_pFrameRGB->linesize);
> >
> >The size of src==dst so its a plain translation of format A to B.
> >
> >This bug occurs in
> >FFmpeg version SVN-r8028, Copyright (c) 2000-2007 Fabrice Bellard, 
> >et al.
> > configuration: --disable-opts --disable-strip --enable-swscaler -- 
> >enable-xvid --enable-libfaad --extra-cflags=-I/Users/amo/ 
> >xvidcore-1.1.0/src -I/Users/amo/faad2/include --enable-gpl --extra- 
> >ldflags=-L/Users/amo/xvidcore-1.1.0/build/generic/=build -L/Users/ 
> >amo/faad2/libfaad/.libs --disable-dv1394 --disable-ipv6 --disable- 
> >vhook --disable-bktr --disable-v4l2 --disable-v4l
> > libavutil version: 49.3.0
> > libavcodec version: 51.33.0
> > libavformat version: 51.10.0
> > built on Feb 19 2007 20:26:15, gcc: 4.0.1 (Apple Computer, Inc. 
> >build 5367)
> 
> I suspect that the error is in swscale_template.c:1107
> 
> switch(c->dstFormat)
> {
> case PIX_FMT_RGB32:
> YSCALEYUV2PACKEDX
> YSCALEYUV2RGBX
> WRITEBGR32(%4, %5, %%REGa)
> YSCALEYUV2PACKEDX_END
> return;
> 
> 
> where the rgb gets mangled some how. But its just a guess as all 
> these macros makes it virtually impossibly to debug without bettr 
> knowledge of the code...

>mplayer -vf scale,format=YVU9,scale,format=bgr32,scale and rgb32 works
>that is with mmx2 disabled
>-> bug closed / not reproduceable

I think that there is a bug anyway ! Here is a sample that when unpacked with the code above gets green instead of blue.

swscaler is enabled. Bug reproducable on  OSX and on MingW Win32 when unpacking to PIX_FMT_RGB32. 

The bug doesn't occur using img_convert without swscaler enabled.

http://www.gizmosdk.se/vid1.mov

/Anders Mod?n




More information about the ffmpeg-devel mailing list