[Libav-user] Decode every 24-th frame. Cached decoded frames?
James Board
jpboard2 at yahoo.com
Sat Oct 12 21:51:04 CEST 2013
I have a C program that is using libav in a video editor. I want to decode
every 24th frame of the video (and nothing else). I wrote a loop which
uses avformat_seek_file() to seek to frame 0, then frame24, then frame 48,
then frame 72, etc. My input file is AVI container with the ffvhuff codec.
The problem is that whenever I seek to frame N, it also decodes the next
12 frames after N (which I don't want). This is slowing things down
by a factor of 12 since I don't need those extra frames. What is the name of
this 'feature'? (so I can search for it in the documentation)? How can I tell libAV
to only decode frame N when I seek to frame N?
The high-level psuedo-code looks like this
for (int f = 0 ; f < LargeNumber; f+= 24) {
avformat_seek_file(ctx, 0, f, f, f, AVSEEK_FLAG_FRAME, AVSEEK_FLAG_ANY);
av_read_frame(....)
avcodec_decode_video2(....)
}
In the above code, when I look at best_effort_timestamp for the decoded frame, it will equal the
seek position 'f' only for the first iteration of the loop, then the next decoded frame has
best_effort_timestamp of 1, then the next is 2, etc. How can I tell libAV to turn off this
feature?
Thank you all.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20131012/a5c258d1/attachment.html>
More information about the Libav-user
mailing list