Identifying h264 frame types?

Stephane Cerveau scerveau at gmail.com
Thu Jan 25 14:48:40 UTC 2024


Dear Will,

Could you be interested by the library ESExtractor ?

https://github.com/Igalia/ESExtractor

Best regards.

Stephane

On 25/1/24 13:25, will--- via gstreamer-devel wrote:
> Hi All,
> 
> 
> Short version:
>    Is there a way to identify if a sample/frame provided to an appsink 
> has been produced from an h264 I-frame (or P-frame/B-frame)?
> 
> Long version:
> 
> As I've already discussed on this list (thanks to Nicolas for his 
> input), I've been investigating seeking to a specific frame.
> I am building a table of frame index to frame time, however that's not 
> as simple as it may first seem.
> 
> Some behaviour around seeking requires knowing what type of frame is 
> being indexed for seeking to later (e.g. I-frame or P-frame - there are 
> no B-frames in my data at present).
> 
> I can identify all key frames by using an extra "key frame 
> identification process".
> The identification process is to repetitively seek using 
> 'Gst.SeekFlags.KEY_UNIT | Gst.SeekFlags.SNAP_AFTER | 
> Gst.SeekFlags.FLUSH', then requesting the frame and building a list of 
> metadata that can be used to identify the key frames.
> 
> When iterating over all frames to build the index, I can then lookup to 
> confirm if this frame is an I-frame using the metadata.
> 
> It strikes me that this may be redundant if I have missed some metadata 
> about the frame.
> 
>      Can anyone suggest a faster way to identify the type of the frame?
> 
> Speeding this up with a single pass over the data would be very useful.
> 
> Thanks!
> 
> Will.


More information about the gstreamer-devel mailing list