On Mon, 10 Jun 2019 at 23:02, Lauri Kasanen <[email protected]> wrote: > On Mon, 10 Jun 2019 17:42:00 -0700 > Adrian Tong <[email protected]> wrote: > > > I have been trying to implement yuv420_to_bgr24 using SSE2 instruction. I > > ran into the case where the output of C implemented yuv420_to_bgr24 has > > slightly different resulting bgr24 image from MMX implemented > > yuv420_to_bgr24. Is this expected behavior ? > > Yes, some of the MMX implementations choose speed over accuracy, I ran > to that myself when doing PPC versions. For a SSE version, if an > accurate version is fast enough, please try to match the C version. > Otherwise try to match MMX. >
Thanks for confirming, Lauri. I am reading the MMX code for YUV420 to BGR24, I am a little bit confused by it. Particularly, we shift left by 3 bits (multiply by 8) for better precision. How does this increase precision ? Also, the conversion formula has some floating point numbers as coefficient, But we are doing integer type multiplication here. https://github.com/FFmpeg/FFmpeg/blob/master/libswscale/x86/yuv2rgb_template.c#L92 Thanks - Adrian > > - Lauri > _______________________________________________ > ffmpeg-devel mailing list > [email protected] > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > [email protected] with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
