[Libav-user] Detection of the first NAL unit of a primary coded picture in H.264 bitstream

Joshua Kordani jkordani at lsa2.com
Mon Feb 24 16:51:33 CET 2014


On 2/23/14 5:38 PM, Stanislav Smida wrote:
> Hi everyone,
>
> I believe the problem will be trivial for experienced lib users, but I’m desperate (I’ve never used ffmpeg before). I have raw H.264 bitstream (NALUs as (const void *)bytes) and I need to determine which NALU is access unit (first NALU of the next frame). Can someone give me a hint how to do that?
>
> In <libavcodec/h264.h> I’ve found `H264Context` struct and its fields like `got_first` and `ref_count[]` but I don’t have an idea how to initialize this context and flow particular NALUs through this context.
>
> Thanks, best,
> Stano
>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user

The answer depends on the bitstream that you have, but as far as I can 
tell, you likely have a bitstream that ships frames in one of two ways.  
Those ways are outlined here:
http://en.wikipedia.org/wiki/Network_Abstraction_Layer#Access_Units
This section and the section right after should help you figure out

The second section might be a little obtuse at the moment, but what it 
describes is that (I think), if you find an IDR nalu, the decoder should 
be able to use the whole nalu for decoding one picture, and that 
subsequent i-frames will not refer to i-frames prior to the idr in front 
of them, as in (I think), one picture gets shipped as 
(idr)(non-idr)(non-idr)(non-idr)  ... (idr) <-this begins a new whole 
picture.  For one complete self-contained frame, you may obviously need 
the sps and pps.  So far, IDR, non IDR, and the units listed in the 
first section of the wiki link area all nalu types, refer to any google 
search for the values, or go download the spec.

-- 
Joshua Kordani
LSA Autonomy

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20140224/078eeced/attachment.html>


More information about the Libav-user mailing list