On Tue, 5 Feb 2013 11:05:22 +0100, Ronny Wegener <[email protected]> wrote: > Hi, > > i'm running a simple while loop, reading all video packets, decode the > corresponding frames and print the timestamps. > > The first frame is successfully decoded after reading the fifth > packet. So the while loop stops after reading the last packet, before > i decoded all frames: > > [OUTPUT] > packet.pts=0 => GOT NO PICTURE > packet.pts=1 => GOT NO PICTURE > packet.pts=2 => GOT NO PICTURE > packet.pts=3 => GOT NO PICTURE > packet.pts=4 => frame.pts=0 > packet.pts=5 => frame.pts=1 > packet.pts=6 => frame.pts=2 > packet.pts=7 => frame.pts=3 > packet.pts=8 => frame.pts=4 > packet.pts=9 => frame.pts=5 > [END] > > It seems the packets are buffered, how can i decode the last frames > from the internal buffered packets? >
As described in the documentation [1], to flush the decoder you must call avcodec_decode_x with empty AVPackets, i.e. data = NULL and size = 0 [1] http://libav.org/doxygen/master/group__lavc__decoding.html#ga3e4048fd6893d4a001bdaa3d251f3c03 -- Anton Khirnov _______________________________________________ libav-api mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-api
