I'm a new user of IPP in C, and I would like to know if image processing should be done using IplImage structure and casting to process with IPP functions, or if it is possible to manage all the programming only with IPP8u? So the main question is related to: is IPP only usefull for functions (because they are optimized) or also for images structures?
Intel IPP product was designed on base of experience we had with previous version of Performance Libraries (Intel Signal Procesing, Intel Image Processing, Intel Recognition Primitives and Intel JPEG libraries). The previous Performance Libraries defined some domain specific structures and data types which require from application development adoption of their code to these structures, which on practice lead to copying data from application structures to (for example) IPL structures and back. One of the main idea behind the IPP is that we provide low level optimized kernels or building blocks which require minimal adoption on application level. If you look through IPP APIs you will find that IPP functions usually refer to processed data directly by pointer. That provide easy and flexible way for application developer to map IPP functions to particular performance critical parts of the application, without need to adopt application code to IPP data structures. Because IPP provides low level functions you are free in choosing higher level abstraction which might be built on top of IPP. You may choose to build your application on old IPL APIs implemented with IPP functions and we provide code example for IPL API implemented with IPP. Or you may choose to build another higher level of API, like one demostrated in other IPP samples (please check image-processing-functions or UIC samples).
To answer your main question, Iwould say thatIPP is useful for performance provided due to optimization and it is also easy to integrate into whatever higher level image processing stack due to low level IPP API.