Encoders that generate seekable non-IDR frames are recommended to insert "recovery point" SEI messages. But there is no required syntax element that inherently marks every seekable frame.
--------------------- Kai Xing -85 M635CSi - Diamondschwartz -08 M5 6-Speed - Black Sapphire -70 Chang Jiang 750 Sidecar - Army Green Southeast Sharkfest 2018 - April 26th - April 29th - Spartanburg, SC
Thank you. That's what I was afraid of. Would it be possible to inspect the P frame itself to check its references or something like that? Failing that, I'll have to add an option "Treat I Frames as IDR Frames" to make it possible to support these streams. Any other thoughts?
--------------------- 92 awd talon Buschur 2.5 inch turbo back exhaust, no cat, free mods, autometer a/f and boost gauges
For most normal streams, it should be possible to start at an I-frame, assume an empty DPB, run the DPB update algorithm for each subsequent frame, and check whether any frame refers to frames that aren't in your assumed DPB (either explicitly by MMCO, or implicitly by num_ref_idx_l0_active) until the DPB is full. But even that isn't guaranteed: A sufficiently perverse stream could keep a long-term ref from before the I-frame. That would change the DPB update algorithm without ever being explicitly mentioned again, and you'd never know.
Not sure if this is helpful. Handbrake determines if a non-IDR frame is an I-frame using the following code. Are you already doing something similar? Code:
--------------------- Chris Powell Racer and Instructor since, well. decades, ok?
Thanks, but the problem is not recognizing I frames; it is determining whether any following P frames reference frames prior to the I frame, i.e., is the I frame seekable.