Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
公告
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
6814 讨论

how to do YUV422 resize with IPP in linux kernel module

PeterLin
初学者
1,997 次查看

Hi,

I am new to this forum. I work in a company to make video capture card.

I need to do YUV422 resize with IPP in linux kernel module for freeware application. I will post my code and Makefile.

In IPP 8.1, I can succeed to use ippsGetLibVersion(); and ippsSum_16s_Sfs().

However, ippiResizeYUV422_8u_C2R(), ippiResizeYUV422Nearest_8u_C2R(), ippiResizeYUV422Linear_8u_C2R() all with link error, such as "floor. undefined!" ( it seemed to be a function call in application layer).

In Oneapi Basekit 2021.03,  my code got worse,  with link error "ippInit(); undefined!" 

All system information are in Makefile (OS version , kernel version, gcc version ...)

Any help will be grateful!

0 项奖励
4 回复数
NoorjahanSk_Intel
主持人
1,904 次查看

Hi,

Thanks for reaching out to us.

>>ippiResizeYUV422_8u_C2R()

This function is not supported in the current version(2021.3.0) of IPP

For more details please refer to the below link:

https://software.intel.com/content/www/us/en/develop/documentation/ipp-dev-reference/top/volume-2-image-processing/ipp-ref-removed-functions.html

>> with link error "ippInit(); undefined!" 

To remove this linking error, you can try linking the library files to your command.

-I $IPPROOT/include -L $IPPROOT/lib/<arch> -add the necessary library files(you can get that from document of required function)

 

For example:

icc *.c -o ipptest -I $IPPROOT/include -L $IPPROOT/lib/ia32 -lippcore -lippvm -lippi -lipps

 

>>I need to do YUV422 resize with IPP

We are looking into it. We will get back to you soon

 

Thanks & Regards

Noorjahan.

 

0 项奖励
Gennady_F_Intel
主持人
1,889 次查看

Peter,
ippInit API is available in the current version of IPP 2021.3. You may check ippcore.h.

ippiResizeYUV422_8u_C2R() -
// This API has been removed and is not available. See IPP Reference Manual Appendix C: Removed Functions for Image and Video Processing
// There is no replacement.


ippiResizeYUV422Nearest_8u_C2R() - available into version 2021.3
ippiResizeYUV422Linear_8u_C2R() - available into version 2021.3

I sligtly modify your original example ( see main_mod.c file) and compiled and linked against
IPP 2021.3:

icc -I/opt/intel/oneapi/ipp/2021.3.0/include main_mod.c -o 3.x \
/opt/intel/oneapi/ipp/2021.3.0/lib/intel64/nonpic/libippi.a \
/opt/intel/oneapi/ipp/2021.3.0/lib/intel64/nonpic/libipps.a \
/opt/intel/oneapi/ipp/2021.3.0/lib/intel64/nonpic/libippcore.a

The compilation was successful.

both of ippiResizeYUV422Nearest_8u_C2R() and ippiResizeYUV422Linear_8u_C2R() functions as well as ippInit were called and compiled.

The runtime has not been checked. as it is out of the scope of this thread. 

0 项奖励
Gennady_F_Intel
主持人
1,844 次查看

are there any updates?


0 项奖励
Gennady_F_Intel
主持人
1,818 次查看

This issue has been resolved and we will no longer respond to this thread. If you require additional assistance from Intel, please start a new thread. Any further interaction in this thread will be considered community only. 



0 项奖励
回复