I've been using and testing IPP (video coding) on many platforms for about 2 months now, and here are my firstimpressions :
- Performance is really quite impressive, for many functions. I won about 40% on my application.
- Quite easy to use / build custom DLL
- Good behaviour under Windows / Linux.
- Very active support !
- Found a bug in H.263+ db filter using SSE2 optims.
- Many functions don't exist for XScale whereas IPP are intended to be cross-platform.
- Many functions have the same name on PC's and XScale but don't make exactly the same job (quantification in H.263 for instance).
- Other functions don't have the same name ... but do the same job !
- HUGE restriction on PocketPC : every reconstruction functions only take 64-bit aligned pointers as inputs; It means that these functions are impossible to use with motions vectors that are not aligned on 8x8 block ! Actually, these functions are usable only for INTRA or skipped blocks (i.e without motion vectors) and make the dll crash if datas are not 64 bit aligned (whereas it should return an error code).
- Documentation is hardly understandable for some functions, or is incomplete (again, the H.263 quantif does half the job as it doesn't restrict values in the normative range -127;127). It's not a problem if we know that it doesn'tbut it becomes a problem when it's not documented. I spent 24 hours trying to understand the way InterpolateLumaH264 worked but I gave up ...
- Very bad performance on AMD (but I can understand that ;) )
- It would be great to be able to add version number to the custom built dll ...
But this is still good job. I sincerely hope the new version will bring corrections, especially regarding naming conventions, XScale portability and XScale 64bit aligned data problem ...