la, 2006-09-16 kello 17:59 +0200, Stefan Lucke kirjoitti:
> On Samstag 16 September 2006 16:42, Heikki Lindholm wrote:
> > la, 2006-09-16 kello 15:25 +0200, Stefan Lucke kirjoitti:
> > > On Samstag 16 September 2006 13:38, Heikki Lindholm wrote:
> > > > YV12 has different U/V plane order compared to I420. This patch fixes 
> > > > the YUV() method in the dfb driver accordingly. Without the patch YV12 
> > > > has wrong colours.
> > > 
> > > So you get wrong colors when YV12 is selected.
> > 
> > Yes.
> > 
> > > Do you get wrong colors too when I420 is selected ?
> > 
> > No. By the spec the U/V ordering is not the same for the I420 and YV12
> > color spaces, hence we need to swap pointers somewhere if the source
> > data (the video) is always in the same format. When looking at different
> > sources of information, there might well be some inconsistency in what
> > exactly is the U/V order for the YV12 (or I420.) Anyway, if my patch
> > works correctly for other hw (I have g400) then it's probably correct.
> > 
> 
> From naming that would be correct.
> 
> I want to explain my argumentation again.
> We get some date from the decoder. Ffmpeg's name for that is YV12.
> - If we select X11-Xv with YV12 we get correct colors.
> - We get correct colors if we convert YV12 -> YUY2 and allocate an X11-Xv 
> surface
>   for format YUY2.
> - We get correct colors (same decoder + same YV12 -> YUY2 converter) when
>   we use a YUY2 surface of directfb.
> - Our software OSD converter (RGB -> YV12) produces correct colors too.
> 
> By this, it is proven to my opinion that our interpertation of decoded planes 
> is correct.
> First plane Y, second plane U and third plane V.
> 
> - We have to specify I420 insteadof YV12 for most DirectFB drivers. So 
> DirectFB
>   does something bad.
> 
> Quoted code from DirectFB is a prove for the fact that they have mixed I420 
> and YV12,
> as it is not executed in case of I420. With I420 we get correct colors.
> If they would swap chroma components in case of DSPF_I420 every thing would 
> be fine.
> 
> It should be an acceptable action for users to toggle between I420 and YV12 
> to get
> the correct colors. 

Ok, first, ffmpeg calls it YUV420P, whatever that means. Second, I take
no stance as to whether DirectFB is right or wrong*, all I'm saying is
that (1) AFAIK I420 is not the same is YV12 and, therefore, should not
be handled with the exact same code and (2) my patch works for me. I
have not seen definitions set in stone (I looked from fourcc.org) for
either of the YV12 or I420 colorspaces, so, I cannot really refer to
anything there. I don't care if you apply the patch or not, I simply
sent it in case someone else wonders the wrong colours like me. 

(*) Guessing off hand, the code you pointed in radeon-overlay would
indeed indicate that directfb might be wrong, because they do a swap
when colourspace is YV12, but the hardware constant used to setup the
engine calls its native mode YV12.

-- Heikki Lindholm


_______________________________________________
Softdevice-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/softdevice-devel

Reply via email to