Hello,
I am decoding h264 live stream (I-Frames & P-Frames only) and the
FF_THREAD_FRAME flag is turned off to keep small latency.
In my app I need to know exactly when an AVPacket is decoded and produces an
AVFrame. To do so I am using the AVFrame.pkt_pts and AVFrame.pkt_dts fields to
find the AVPacket this frame was produced of. Most of the time everything works
as expected. Each AVPacket input produces AVFrame output and the fields are
matching. But I do have a stream when the behavior is different:
The first frame: AVPacket1 à AVFrame1 and all is OK. The resulting
AVFrame1.ptk_pts == AVPacket1.pts and AVFrame1.ptk_dts == AVPacket1.dts and the
produced frame is an I_FRAME.
The second frame: AVPacket2 à AVFrame2. The resulting AVFrame2.pkt_dts ==
AVPacket2.dts BUT AVFrame2.pkt_pts != AVPacket2.pts, instead AVFrame2.pkt_pts
== AVPacket1.pts!!!! and the produced frame is again an I_FRAME. The is
unexpected, the second frame should be a P-FRAME (according to the h264 stream)
and now I cannot tell for sure that the second AVFrame2 was produced from
AVPacker2. Was it? Or the decoder returns twice the same frame?
My main questions is if using the pkt_pts & pkt_dts is the right solution for
me? Is there a most reliable way to do it?
Many thanks,
Alina
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user