Surely the problem is that AVPacket is buffering B and P frames for you - all of which are referenced to decode video. Those refs are released once they're used, so it will be non-trivial to 'decode again'.
On 18 Jun 2014, at 14:31, Slash <[email protected]> wrote: > Thanks. I have tried it just now but unfortunately it won't enter the second > while loop (so it doesn't seem to decode anything for the 2nd time..) > > Now I have also tried avformat_seek_file(pFormatCtx, -1, 0, 0, 0, > AVSEEK_FLAG_BACKWARD); (correct usage?) and it makes no difference. > > Is it maybe the case that once the whole file is decoded, you cannot go back? > > > On 18 June 2014 15:04, Info || Non-Lethal Applications > <[email protected]> wrote: > I’d say av_seek_frame (or avformat_seek_file) is what you’re after. > > av_seek_frame(pFormatContext, -1, 0, AVSEEK_FLAG_BACKWARD); > > Best, > > Flo > > On 18 Jun 2014, at 14:54, Slash <[email protected]> wrote: > >> Hello, >> >> I'm developing a crypto-related application using h264 streams (only video). >> I'd like to decode the frames multiple times after changing some info in >> them (dct, mv, whatever), so the decoded result is always different a little >> bit but I always want to deal with same input file. >> >> I followed the tutorial here (tutorial01.c): >> https://github.com/chelyaev/ffmpeg-tutorial >> >> so the decoding code in question looks like this: >> >> while (av_read_frame(pFormatCtx, &packet) >= 0) { >> // Is this a packet from the video stream? >> if (packet.stream_index == videoStream) { >> // Decode video frame >> avcodec_decode_video2(pCodecCtx, pFrame, >> &frameFinished, &packet); >> } >> } >> // Free the packet that was allocated by av_read_frame >> av_free_packet(&packet); >> } >> >> After this while loop, all the frames are decoded. What I want is to change >> something and then redo the previous while loop to decode the frames again. >> How can I start it all over again? >> >> I have tried using av_seek_frame(pFormatCtx, videoStream, 0, >> AVSEEK_FLAG_ANY) to jump back to the beginning but apparently I didn't get >> any new decoded data so it is not doing what I need. >> >> Thanks for help. >> _______________________________________________ >> Libav-user mailing list >> [email protected] >> http://ffmpeg.org/mailman/listinfo/libav-user > > > _______________________________________________ > Libav-user mailing list > [email protected] > http://ffmpeg.org/mailman/listinfo/libav-user > > > _______________________________________________ > Libav-user mailing list > [email protected] > http://ffmpeg.org/mailman/listinfo/libav-user
_______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
