I’m trying to make a player using the Nvidia decoder.
I’d like to run the (*.bin) file as a decoder and play from the desired frame before rendering.
(ex. Start rendering from 300 frames )
In other words, I want to make temporal random access.
I thought it was an option of -nframestart, -nframeend, and I confirmed that it was a way to save it.
If I could tell the location of the I-frame before decoding it in the (*.bin) file, It will help.
If you have any other way to render from the desired frame, please reply to me.
Thank you for your continued support.!!!
To support random access, you need to first make an index file giving the file offsets of all the SPS, PPS, and IDR NALU’s (assuming AVC video here). That needs to be done only once and the index file can then be used for all random accesses. The index file will have the data you need to know where to start pulling data from the file to inject into the decoder. Note that for AVC you will need to ensure that you have injected the appropriate SPS/PPS before injecting frame data.
You will always start decoding from an IDR (or RPS). If the desired starting frame is not one of those you simply discard the appropriate number of decoded frames starting from the preceding IDR/RPS.
This isn’t a trivial thing. For example, you have to allow for the difference between coded and display frame ordering when interpreting a frame number, etc. You may look at the tool mentioned in my signature, which is a full implementation of this idea. Have a look at the linked Quick Start Guide to see the general idea.