I have a stream that has correct input pts/dts packet order. By 'correct'
I mean all pts >= dts and dts is monotonically increasing. From some point
I start to decode that stream from key_packet. And to validate result
before muxing it again, I check pts/pkt_dts of AVFrame again.

It happens when at some point next packet didn't produce any frames without
errors. And with next packet my next frame's "pts" can't keep up with
"pkt_dts"

while (ret >= 0) {
    AVFrame *frame = av_frame_alloc();
    ret = avcodec_receive_frame(context_, frame);

    if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
        break;
    }

}


 And my pts became less than pkt_dts. Example:
 source pts/dts: 255600/255600  decoded pts/dts 252000 255600 type: P
 source pts/dts: 259200/259200  decoded pts/dts 255600 259200 type: P
 source pts/dts: 262800/262800  decoded pts/dts 259200 262800 type: P
 source pts/dts: 266400/266400  decoded pts/dts 262800 266400 type: P

 I drop this avframe because mixer won't consume it anyways as I checked.
 So why pts became bigger. What checks I really have to do to ensure
correctness of frames?
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to