Anton Issaikin
Anton Issaikin

Reputation: 23

How to validate properly ffmpeg pts/dts after demuxing/decoding?

How should I validate pts/dts after demuxing and then after decoding?

For me it is significant to have valid pts all the time for days and possibly weeks of continuous streaming.

After demuxing I check:

  1. dts <= pts
  2. prev_packet_dts < next_packet_pts
  3. I also discard packets with AV_NOPTS_VALUE and wait for packets with proper pts, because I don't know video duration at this case.

What about decoded AVFrames?

  1. Should 'pts' be increasing all the time?
  2. Why at some point 'pts' could lag behind 'dts'?
  3. Why pict_type is a parameter of AVFrame? Should be at AVPacket, because AVPacket is a compressed frame, not the opposite?

Upvotes: 2

Views: 795

Answers (2)

Anton Issaikin
Anton Issaikin

Reputation: 23

At libav support I was advised to not rely on decoder output. It is more solid to produce pts/dts for encoding/muxing manually and I should search for ffmpeg tools sources to proper implementation. I will search for this approach.

For now I discard AVFrames only with AV_NOPTS_VALUE, and the rest of encoding/muxing works fine.

Validation of AVPackets after Demuxing remains the same, as described above.

Upvotes: 0

Gyan
Gyan

Reputation: 93261

  1. Ideally, yes. Unless if your format allows discontinuities, or wraps timestamps around due to overflow, like MPEG-TS.

  2. Writing error.

  3. It is an informational field, indicating the provenance of the frame. It can be used by filters or encoders, e.g. keyframe alignment during a re-encode.

Upvotes: 1

Related Questions