Community
cancel
Showing results for 
Search instead for 
Did you mean: 
evgeny777
Beginner
66 Views

H.264 Encoder/decoder latency

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
66 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
evgeny777
Beginner
66 Views

Yes, it was my mistake, cos decoder is really the issue. I found the related topics, so marking this question as answered. Thanks.
shyaki
Beginner
66 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;
Reply