Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6708 Discussions

Why is Intel C++ compiler so fast ( Encoding time, decoding time )

suchethanswaroop
Beginner
683 Views
hi all,

I used the intel ipp to run the H.264 encoder and decoder through intel C++ compiler. There is a software called JM which is also used to implement H.264 codec.

I gave the same parameters in JM and intel ipp and intel ipp beats JM in all the parameters i measured (in terms of psnr, mse and ssim).

1. Could some one please give me one good reason as to why is the intel compiler almost 500 times faster , and better than JM output. What is making the compiler special ? Is motion estimation done in a different way in this encoder ?

2. what is this parameter " speed/quality grade [0,3] (0-maximum speed, 3-maximum quality) " all about ? what parameters are set to default when
a. 0,0 ( maximum speed, min quality ) is selected
b. 3,0 ( minimum speed , max quality ) is selected


Regards,
Suchethan
0 Kudos
8 Replies
JenniferJ
Moderator
683 Views
This is a question for IPP forum. So I'll transfer you to there and the IPP experts will answer your question.

Thanks,
Jennifer
0 Kudos
shyaki
Beginner
683 Views
hi all,

I used the intel ipp to run the H.264 encoder and decoder through intel C++ compiler. There is a software called JM which is also used to implement H.264 codec.

I gave the same parameters in JM and intel ipp and intel ipp beats JM in all the parameters i measured (in terms of psnr, mse and ssim).

1. Could some one please give me one good reason as to why is the intel compiler almost 500 times faster , and better than JM output. What is making the compiler special ? Is motion estimation done in a different way in this encoder ?

2. what is this parameter " speed/quality grade [0,3] (0-maximum speed, 3-maximum quality) " all about ? what parameters are set to default when
a. 0,0 ( maximum speed, min quality ) is selected
b. 3,0 ( minimum speed , max quality ) is selected


Regards,
Suchethan

The IntelH264Encoder is multi-threaded and uses CPU-optimized IPP routines. The JM reference encoder is just for the academic reference. Of course IntelH264Encoder is much faster. but if you compare it with x264, you will see which one is the real winner, ^-^.

The output image quality depends on many factors including motion search method, rate control algorithm.
Again, JM is not on the same level of IntelH264Encoder or x264.
0 Kudos
suchethanswaroop
Beginner
683 Views
Quoting - shyaki
My laptop has " intel core 2 duo processor" . so is this the reason why the encoding time of H.264 codec i implemented using intel ipp so fast ? what if i run the sequence in a mac pc. will i be getting the same performance ?
Could you please elaborate on "CPU optimized IPP routines" ?

Thanks and warm regards,
Suchethan

The IntelH264Encoder is multi-threaded and uses CPU-optimized IPP routines. The JM reference encoder is just for the academic reference. Of course IntelH264Encoder is much faster. but if you compare it with x264, you will see which one is the real winner, ^-^.

The output image quality depends on many factors including motion search method, rate control algorithm.
Again, JM is not on the same level of IntelH264Encoder or x264.

0 Kudos
Vladimir_Dudnik
Employee
683 Views
The one and simple reason is that IPP H.264 codec was designed to be fast and use Intel IPP libraries to exploit benefits from SIMD instructions available on modern processors. In addition to that it also able to utilize multiple cores doing some work in parallel. I do not know much on JM software but usually reference implementation is more focused on correct algorithm implementation rather than on performance.

And yes, IPP H.264 codec (found in IPP audio-video-codecs sample is available for Windows, Linux and MacOS)

Regards,
Vladimir
0 Kudos
suchethanswaroop
Beginner
683 Views
I am curious to know as to how the motion estimation part is done in the intel ipp H.264 encoder... Are there any changes than the conventional way it is done ( in terms of
a. different block sizes used for motion compensation
b. intra prediction modes used
c. inter prediction modes used
d. number of reference frames used
e. motion vectors used, etc ) ?
I wish to know the functioning of intel IPP h.264 codec and not the order of the classes in which they are called and executed.
(As you all know, Motion estimation is the most time consuming process in the encoder)

Regards,
Suchethan
The one and simple reason is that IPP H.264 codec was designed to be fast and use Intel IPP libraries to exploit benefits from SIMD instructions available on modern processors. In addition to that it also able to utilize multiple cores doing some work in parallel. I do not know much on JM software but usually reference implementation is more focused on correct algorithm implementation rather than on performance.

And yes, IPP H.264 codec (found in IPP audio-video-codecs sample is available for Windows, Linux and MacOS)

Regards,
Vladimir

0 Kudos
Vladimir_Dudnik
Employee
683 Views
Then why just don't take a look at IPP H.264 codec? It is available in source code form, you can study and profile it to get all details you are interested in

Regards,
Vladimir
0 Kudos
mdsaku
Beginner
683 Views
Can anyone let me know how can I compile Intel IPP H.264 codec? Previously I used JM codec. I dont have knowledge about the Intel IPP H.264.

Please help me.
0 Kudos
Naveen_G_Intel
Employee
683 Views

Hi,

Refer to readme.htm file in the IPP sample code to build the IPP based H.264 codec.

To get IPP sample - http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-code-samples/.

Refer to - w_ipp-samples_p_7.0.4.054\ipp-samples\audio-video-codecs

To run this sample code, make sure that you have lasted version of IPP main package installed.

Regards,

Naveen Gv

0 Kudos
Reply