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

H.264 Encoder/decoder latency

evgeny777
Beginner
371 Views

Hi, all!

Just implemented sample app which captures video from camera, encodes it using IPP H.264 encoder (128 Kbps), then decodes and plays back. I noticed that there is latency in 5 frames, which as far as I understood are buffered somewhere in encoder processing pipeline. I not very familiar with H.264 standard, so may be mistaken about this. I'm using "high profile". Tested with "baseline" and "main" profiles (had to turn off transform8x8 flag), but situation is just the same.

Is there any way to decrease the latency? Although 5 frames may seem not very high - for VoIP application latency is a serious issue.

0 Kudos
3 Replies
Emmanuel_W_
New Contributor I
371 Views
Quoting - evgeny777

Hi, all!

Just implemented sample app which captures video from camera, encodes it using IPP H.264 encoder (128 Kbps), then decodes and plays back. I noticed that there is latency in 5 frames, which as far as I understood are buffered somewhere in encoder processing pipeline. I not very familiar with H.264 standard, so may be mistaken about this. I'm using "high profile". Tested with "baseline" and "main" profiles (had to turn off transform8x8 flag), but situation is just the same.

Is there any way to decrease the latency? Although 5 frames may seem not very high - for VoIP application latency is a serious issue.


Are you sure that the latency is not in the decoder. There are couple thread in this forum that describe latency issue.

Emmanuel
0 Kudos
evgeny777
Beginner
371 Views
Yes, it was my mistake, cos decoder is really the issue. I found the related topics, so marking this question as answered. Thanks.
0 Kudos
shyaki
Beginner
371 Views
Quoting - evgeny777
Yes, it was my mistake, cos decoder is really the issue. I found the related topics, so marking this question as answered. Thanks.

The H264 decoder waits for additional frames for start decoding in order to improve the threading performance.
Check method TaskBroker::IsEnoughForStartDecoding().

you can change the following code:

if (au_count >= m_iConsumerNumber || (force && au_count)) decoding
return true;
0 Kudos
Reply