I would like to check with our IPP team to see how we can best assist you. In the meantime, can you let me know which exact Intel Atom Processor you are using? Since many Intel Atom Processor based platform have different SoC components the answer may differ based on your design.
here are some more informations about out environment. As OS we have Xpe.:
Version: IPP 7_0_1_104 Edit
Subcomponent: Video Coding Edit
Development OS: Windows* XP Professional Edit
Development Host: Intel Atom processor Edit
Target Host: Other (note below) Edit
Target OS: Windows XP* Edit
Other Environment (not listed above): ATOM on Q7 module with 1.1GHZ or 1.6GHz Edit
Windows* Development Environment: Microsoft Visual C++* 2008 Edit
One interesting hint came from the IPP's support, see the following point 3:
3) Regarding the software decoder quality itself.
You mentioned," We analyzed that deinterlacing and hardware overlay support cannot be the difference", so the problem mainly are YUV format and scaling function.
Could you tell what scaling function/deinterlacing and YUV format are you using????
If IPP scaling function and deinterlacing function, IPP experts recommended that the best quality for 352x288 -> 800x600 will be achieved with ippiResizeSqrPixel with Lanczos interpolation mode instead of NN
or use ippiDeinterlaceFilterCAVT or ippiDeinterlaceMotionAdaptive instead of ippiDeinterlaceFilterTriangle.
YUV format, it call IPP color conversion function to produce what you expected. For example, YUV420->YUV422, ippiYCbCr420ToYCbCr422_8u_P3R
I talked with our developer then. We cannot do scaling in software because our hardware platform is not fast enough. Therefore we must do scaling with help of the hardware. At the moment we do not know how to use other YUV formats or other scaling functions on the ATOM's hardware. It seems to be that VLC knows it how it can be done to get the best video quality. The IPP itself do not support the using of special hardware features. I suppose that we have to find out how the can use better scaling function on our hardware.
as driver we use the IEGD 10.3 for the ATOM US15W chipset.
YUV conversion is done by IPP functions on demand. Deinterlacing is done by IPP functions.
As color format we use UYVY at the moment. The simple MS function IDirectDrawSurface7::Blt() is used to show video frames. This Blt() function does the scaling from 352x288 to 800x600.
With regard to VLC I can say that VLC uses hardware overlay and acceleration on our hardware platform. Even conversion from YUV to RGB is activated. Deinterlacing is set on blend mode. To see a video on the screen DirectX output must be activated in VLC's preferences for video decoding.
So the hardware and the OS should support various hardware accelerated functions. VLC manages it to show a better scaling result of the SIF video on the 800x600 screen.
Nevertheless VLC consumes a lot the system's performance in kernel instead of Windows' user mode. For example VLC needs 20% of the system's performance and 15% of the 20% runs in kernel mode. Our player with the IPP needs 15% of the system's performance and a maximum of 3% are in kernel mode. I guess VLC does a lot with the graphics driver in a direct way.