Message ID | 20220824084318.333-18-anton@khirnov.net |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,01/18] tests/fate/mov: add a test for dv audio demuxed through dv demuxer | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | fail | Make fate failed |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | fail | Make fate failed |
Anton Khirnov: > The code will call avpriv_set_pts_info() for each video frame, possibly > setting a different timebase if the stream framerate changes. This > violates API conventions, as the timebase is supposed to stay constant > after stream creation. > > Change the demuxer to set a single timebase that is granular enough to > handle all supported DV framerates. > > The seek tests change slightly because the new timebase is more > granular. > --- > libavformat/dv.c | 16 ++++++++++++---- > tests/ref/seek/lavf-dv | 30 +++++++++++++++--------------- > tests/ref/seek/vsynth_lena-dv | 24 ++++++++++++------------ > tests/ref/seek/vsynth_lena-dv-411 | 24 ++++++++++++------------ > tests/ref/seek/vsynth_lena-dv-50 | 24 ++++++++++++------------ > 5 files changed, 63 insertions(+), 55 deletions(-) > > diff --git a/libavformat/dv.c b/libavformat/dv.c > index ffed1a7a90..e2f7a6d313 100644 > --- a/libavformat/dv.c > +++ b/libavformat/dv.c > @@ -69,6 +69,8 @@ struct DVDemuxContext { > uint8_t audio_buf[4][8192]; > int ach; > int frames; > + > + int64_t next_pts; > }; > > static inline uint16_t dv_audio_12to16(uint16_t sample) > @@ -314,8 +316,6 @@ static int dv_extract_video_info(DVDemuxContext *c, const uint8_t *frame) > > par = c->vst->codecpar; > > - avpriv_set_pts_info(c->vst, 64, c->sys->time_base.num, > - c->sys->time_base.den); > c->vst->avg_frame_rate = av_inv_q(c->vst->time_base); This will now set the avg_frame_rate to 60000fps. Obviously wrong. Anyway, this field should probably not be set for every frame. > > /* finding out SAR is a little bit messy */ > @@ -360,6 +360,8 @@ static int dv_init_demux(AVFormatContext *s, DVDemuxContext *c) > c->vst->codecpar->bit_rate = 25000000; > c->vst->start_time = 0; > > + avpriv_set_pts_info(c->vst, 64, 1, 60000); > + > /* Audio streams are added later as they are encountered. */ > s->ctx_flags |= AVFMTCTX_NOHEADER; > > @@ -463,7 +465,10 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, > pkt->size = size; > pkt->flags |= AV_PKT_FLAG_KEY; > pkt->stream_index = c->vst->index; > - pkt->pts = c->frames; > + pkt->pts = c->next_pts; > + pkt->duration = av_rescale_q(1, c->sys->time_base, c->vst->time_base); > + > + c->next_pts += pkt->duration; > } > > c->frames++; > @@ -477,11 +482,12 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, > // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk) > FFFormatContext *const si = ffformatcontext(s); > const int frame_size = c->sys->frame_size; > + int64_t frame_count = av_rescale_q(timestamp, c->vst->time_base, c->sys->time_base); > int64_t offset; > int64_t size = avio_size(s->pb) - si->data_offset; > int64_t max_offset = ((size - 1) / frame_size) * frame_size; > > - offset = frame_size * timestamp; > + offset = frame_size * frame_count; > > if (size >= 0 && offset > max_offset) > offset = max_offset; > @@ -494,6 +500,8 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, > void ff_dv_offset_reset(DVDemuxContext *c, int64_t frame_offset) > { > c->frames = frame_offset; > + if (c->sys) > + c->next_pts = av_rescale_q(frame_offset, c->sys->time_base, c->vst->time_base); > c->audio_pkt[0].size = c->audio_pkt[1].size = 0; > c->audio_pkt[2].size = c->audio_pkt[3].size = 0; > } > diff --git a/tests/ref/seek/lavf-dv b/tests/ref/seek/lavf-dv > index f63e4460be..356f05546b 100644 > --- a/tests/ref/seek/lavf-dv > +++ b/tests/ref/seek/lavf-dv > @@ -3,50 +3,50 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:0 ts: 2.560000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 This is IMO more than "slightly". > ret: 0 st: 1 flags:1 ts: 1.480000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 0.365002 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.740831 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:0 ts: 2.160000 > +ret: 0 st: 0 flags:0 ts: 2.153333 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > -ret: 0 st: 0 flags:1 ts: 1.040000 > +ret: 0 st: 0 flags:1 ts: 1.047500 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > ret: 0 st: 1 flags:0 ts:-0.040000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:1 ts: 2.840000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > ret: 0 st: 1 flags:0 ts: 1.320000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:1 ts: 0.200000 > -ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts:-0.904994 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.989173 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.880000 > +ret: 0 st: 0 flags:0 ts: 0.883333 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.240000 > +ret: 0 st: 0 flags:1 ts:-0.222500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:0 ts: 2.680000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:1 ts: 1.560000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.645825 > diff --git a/tests/ref/seek/vsynth_lena-dv b/tests/ref/seek/vsynth_lena-dv > index d318794157..afed1fbe72 100644 > --- a/tests/ref/seek/vsynth_lena-dv > +++ b/tests/ref/seek/vsynth_lena-dv > @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.576668 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.470835 > ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.360000 > +ret: 0 st: 0 flags:0 ts: 0.365000 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.760000 > +ret: 0 st: 0 flags:1 ts:-0.740833 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.153336 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.047503 > ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.040000 > +ret: 0 st: 0 flags:0 ts:-0.058333 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.840000 > +ret: 0 st: 0 flags:1 ts: 2.835833 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.306672 > ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.200839 > ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.920000 > +ret: 0 st: 0 flags:0 ts:-0.905000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.000000 > +ret: 0 st: 0 flags:1 ts: 1.989167 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.883340 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.222493 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:0 ts: 2.680000 > +ret: 0 st: 0 flags:0 ts: 2.671667 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > -ret: 0 st: 0 flags:1 ts: 1.560000 > +ret: 0 st: 0 flags:1 ts: 1.565833 > ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 > diff --git a/tests/ref/seek/vsynth_lena-dv-411 b/tests/ref/seek/vsynth_lena-dv-411 > index d318794157..afed1fbe72 100644 > --- a/tests/ref/seek/vsynth_lena-dv-411 > +++ b/tests/ref/seek/vsynth_lena-dv-411 > @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.576668 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.470835 > ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.360000 > +ret: 0 st: 0 flags:0 ts: 0.365000 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.760000 > +ret: 0 st: 0 flags:1 ts:-0.740833 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.153336 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.047503 > ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.040000 > +ret: 0 st: 0 flags:0 ts:-0.058333 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.840000 > +ret: 0 st: 0 flags:1 ts: 2.835833 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.306672 > ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.200839 > ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.920000 > +ret: 0 st: 0 flags:0 ts:-0.905000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.000000 > +ret: 0 st: 0 flags:1 ts: 1.989167 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.883340 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.222493 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:0 ts: 2.680000 > +ret: 0 st: 0 flags:0 ts: 2.671667 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > -ret: 0 st: 0 flags:1 ts: 1.560000 > +ret: 0 st: 0 flags:1 ts: 1.565833 > ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 > diff --git a/tests/ref/seek/vsynth_lena-dv-50 b/tests/ref/seek/vsynth_lena-dv-50 > index fae6d1b225..3b1d69ffa6 100644 > --- a/tests/ref/seek/vsynth_lena-dv-50 > +++ b/tests/ref/seek/vsynth_lena-dv-50 > @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:13536000 size:288000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:5760000 size:288000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > ret: 0 st:-1 flags:0 ts: 2.576668 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:1 ts: 1.470835 > ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:10656000 size:288000 > -ret: 0 st: 0 flags:0 ts: 0.360000 > +ret: 0 st: 0 flags:0 ts: 0.365000 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:2592000 size:288000 > -ret: 0 st: 0 flags:1 ts:-0.760000 > +ret: 0 st: 0 flags:1 ts:-0.740833 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > ret: 0 st:-1 flags:0 ts: 2.153336 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:1 ts: 1.047503 > ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:7488000 size:288000 > -ret: 0 st: 0 flags:0 ts:-0.040000 > +ret: 0 st: 0 flags:0 ts:-0.058333 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:1 ts: 2.840000 > +ret: 0 st: 0 flags:1 ts: 2.835833 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:12384000 size:288000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:4608000 size:288000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:0 ts: 1.306672 > ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:9504000 size:288000 > ret: 0 st:-1 flags:1 ts: 0.200839 > ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:1440000 size:288000 > -ret: 0 st: 0 flags:0 ts:-0.920000 > +ret: 0 st: 0 flags:0 ts:-0.905000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:1 ts: 2.000000 > +ret: 0 st: 0 flags:1 ts: 1.989167 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:0 ts: 0.883340 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:6336000 size:288000 > ret: 0 st:-1 flags:1 ts:-0.222493 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:0 ts: 2.680000 > +ret: 0 st: 0 flags:0 ts: 2.671667 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > -ret: 0 st: 0 flags:1 ts: 1.560000 > +ret: 0 st: 0 flags:1 ts: 1.565833 > ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:11232000 size:288000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:3456000 size:288000
On Wed, 24 Aug 2022, Anton Khirnov wrote: > The code will call avpriv_set_pts_info() for each video frame, possibly > setting a different timebase if the stream framerate changes. This > violates API conventions, as the timebase is supposed to stay constant > after stream creation. > > Change the demuxer to set a single timebase that is granular enough to > handle all supported DV framerates. > > The seek tests change slightly because the new timebase is more > granular. Just because the timebase is more granular the packet timestamps should not change. Regards, Marton > --- > libavformat/dv.c | 16 ++++++++++++---- > tests/ref/seek/lavf-dv | 30 +++++++++++++++--------------- > tests/ref/seek/vsynth_lena-dv | 24 ++++++++++++------------ > tests/ref/seek/vsynth_lena-dv-411 | 24 ++++++++++++------------ > tests/ref/seek/vsynth_lena-dv-50 | 24 ++++++++++++------------ > 5 files changed, 63 insertions(+), 55 deletions(-) > > diff --git a/libavformat/dv.c b/libavformat/dv.c > index ffed1a7a90..e2f7a6d313 100644 > --- a/libavformat/dv.c > +++ b/libavformat/dv.c > @@ -69,6 +69,8 @@ struct DVDemuxContext { > uint8_t audio_buf[4][8192]; > int ach; > int frames; > + > + int64_t next_pts; > }; > > static inline uint16_t dv_audio_12to16(uint16_t sample) > @@ -314,8 +316,6 @@ static int dv_extract_video_info(DVDemuxContext *c, const uint8_t *frame) > > par = c->vst->codecpar; > > - avpriv_set_pts_info(c->vst, 64, c->sys->time_base.num, > - c->sys->time_base.den); > c->vst->avg_frame_rate = av_inv_q(c->vst->time_base); > > /* finding out SAR is a little bit messy */ > @@ -360,6 +360,8 @@ static int dv_init_demux(AVFormatContext *s, DVDemuxContext *c) > c->vst->codecpar->bit_rate = 25000000; > c->vst->start_time = 0; > > + avpriv_set_pts_info(c->vst, 64, 1, 60000); > + > /* Audio streams are added later as they are encountered. */ > s->ctx_flags |= AVFMTCTX_NOHEADER; > > @@ -463,7 +465,10 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, > pkt->size = size; > pkt->flags |= AV_PKT_FLAG_KEY; > pkt->stream_index = c->vst->index; > - pkt->pts = c->frames; > + pkt->pts = c->next_pts; > + pkt->duration = av_rescale_q(1, c->sys->time_base, c->vst->time_base); > + > + c->next_pts += pkt->duration; > } > > c->frames++; > @@ -477,11 +482,12 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, > // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk) > FFFormatContext *const si = ffformatcontext(s); > const int frame_size = c->sys->frame_size; > + int64_t frame_count = av_rescale_q(timestamp, c->vst->time_base, c->sys->time_base); > int64_t offset; > int64_t size = avio_size(s->pb) - si->data_offset; > int64_t max_offset = ((size - 1) / frame_size) * frame_size; > > - offset = frame_size * timestamp; > + offset = frame_size * frame_count; > > if (size >= 0 && offset > max_offset) > offset = max_offset; > @@ -494,6 +500,8 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, > void ff_dv_offset_reset(DVDemuxContext *c, int64_t frame_offset) > { > c->frames = frame_offset; > + if (c->sys) > + c->next_pts = av_rescale_q(frame_offset, c->sys->time_base, c->vst->time_base); > c->audio_pkt[0].size = c->audio_pkt[1].size = 0; > c->audio_pkt[2].size = c->audio_pkt[3].size = 0; > } > diff --git a/tests/ref/seek/lavf-dv b/tests/ref/seek/lavf-dv > index f63e4460be..356f05546b 100644 > --- a/tests/ref/seek/lavf-dv > +++ b/tests/ref/seek/lavf-dv > @@ -3,50 +3,50 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:0 ts: 2.560000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:1 ts: 1.480000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 0.365002 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.740831 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:0 ts: 2.160000 > +ret: 0 st: 0 flags:0 ts: 2.153333 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > -ret: 0 st: 0 flags:1 ts: 1.040000 > +ret: 0 st: 0 flags:1 ts: 1.047500 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > ret: 0 st: 1 flags:0 ts:-0.040000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:1 ts: 2.840000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > ret: 0 st: 1 flags:0 ts: 1.320000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:1 ts: 0.200000 > -ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts:-0.904994 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.989173 > ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.880000 > +ret: 0 st: 0 flags:0 ts: 0.883333 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.240000 > +ret: 0 st: 0 flags:1 ts:-0.222500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:0 ts: 2.680000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st: 1 flags:1 ts: 1.560000 > -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 > +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.645825 > diff --git a/tests/ref/seek/vsynth_lena-dv b/tests/ref/seek/vsynth_lena-dv > index d318794157..afed1fbe72 100644 > --- a/tests/ref/seek/vsynth_lena-dv > +++ b/tests/ref/seek/vsynth_lena-dv > @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.576668 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.470835 > ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.360000 > +ret: 0 st: 0 flags:0 ts: 0.365000 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.760000 > +ret: 0 st: 0 flags:1 ts:-0.740833 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.153336 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.047503 > ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.040000 > +ret: 0 st: 0 flags:0 ts:-0.058333 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.840000 > +ret: 0 st: 0 flags:1 ts: 2.835833 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.306672 > ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.200839 > ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.920000 > +ret: 0 st: 0 flags:0 ts:-0.905000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.000000 > +ret: 0 st: 0 flags:1 ts: 1.989167 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.883340 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.222493 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:0 ts: 2.680000 > +ret: 0 st: 0 flags:0 ts: 2.671667 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > -ret: 0 st: 0 flags:1 ts: 1.560000 > +ret: 0 st: 0 flags:1 ts: 1.565833 > ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 > diff --git a/tests/ref/seek/vsynth_lena-dv-411 b/tests/ref/seek/vsynth_lena-dv-411 > index d318794157..afed1fbe72 100644 > --- a/tests/ref/seek/vsynth_lena-dv-411 > +++ b/tests/ref/seek/vsynth_lena-dv-411 > @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.576668 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.470835 > ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 > -ret: 0 st: 0 flags:0 ts: 0.360000 > +ret: 0 st: 0 flags:0 ts: 0.365000 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 > -ret: 0 st: 0 flags:1 ts:-0.760000 > +ret: 0 st: 0 flags:1 ts:-0.740833 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > ret: 0 st:-1 flags:0 ts: 2.153336 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:1 ts: 1.047503 > ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.040000 > +ret: 0 st: 0 flags:0 ts:-0.058333 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.840000 > +ret: 0 st: 0 flags:1 ts: 2.835833 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 1.306672 > ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 > ret: 0 st:-1 flags:1 ts: 0.200839 > ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 > -ret: 0 st: 0 flags:0 ts:-0.920000 > +ret: 0 st: 0 flags:0 ts:-0.905000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:1 ts: 2.000000 > +ret: 0 st: 0 flags:1 ts: 1.989167 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.883340 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 > ret: 0 st:-1 flags:1 ts:-0.222493 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 > -ret: 0 st: 0 flags:0 ts: 2.680000 > +ret: 0 st: 0 flags:0 ts: 2.671667 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 > -ret: 0 st: 0 flags:1 ts: 1.560000 > +ret: 0 st: 0 flags:1 ts: 1.565833 > ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 > diff --git a/tests/ref/seek/vsynth_lena-dv-50 b/tests/ref/seek/vsynth_lena-dv-50 > index fae6d1b225..3b1d69ffa6 100644 > --- a/tests/ref/seek/vsynth_lena-dv-50 > +++ b/tests/ref/seek/vsynth_lena-dv-50 > @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > ret: 0 st:-1 flags:1 ts: 1.894167 > ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:13536000 size:288000 > -ret: 0 st: 0 flags:0 ts: 0.800000 > +ret: 0 st: 0 flags:0 ts: 0.788333 > ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:5760000 size:288000 > -ret: 0 st: 0 flags:1 ts:-0.320000 > +ret: 0 st: 0 flags:1 ts:-0.317500 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > ret: 0 st:-1 flags:0 ts: 2.576668 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:1 ts: 1.470835 > ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:10656000 size:288000 > -ret: 0 st: 0 flags:0 ts: 0.360000 > +ret: 0 st: 0 flags:0 ts: 0.365000 > ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:2592000 size:288000 > -ret: 0 st: 0 flags:1 ts:-0.760000 > +ret: 0 st: 0 flags:1 ts:-0.740833 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > ret: 0 st:-1 flags:0 ts: 2.153336 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:1 ts: 1.047503 > ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:7488000 size:288000 > -ret: 0 st: 0 flags:0 ts:-0.040000 > +ret: 0 st: 0 flags:0 ts:-0.058333 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:1 ts: 2.840000 > +ret: 0 st: 0 flags:1 ts: 2.835833 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:0 ts: 1.730004 > ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:12384000 size:288000 > ret: 0 st:-1 flags:1 ts: 0.624171 > ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:4608000 size:288000 > -ret: 0 st: 0 flags:0 ts:-0.480000 > +ret: 0 st: 0 flags:0 ts:-0.481667 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:1 ts: 2.400000 > +ret: 0 st: 0 flags:1 ts: 2.412500 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:0 ts: 1.306672 > ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:9504000 size:288000 > ret: 0 st:-1 flags:1 ts: 0.200839 > ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:1440000 size:288000 > -ret: 0 st: 0 flags:0 ts:-0.920000 > +ret: 0 st: 0 flags:0 ts:-0.905000 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:1 ts: 2.000000 > +ret: 0 st: 0 flags:1 ts: 1.989167 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > ret: 0 st:-1 flags:0 ts: 0.883340 > ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:6336000 size:288000 > ret: 0 st:-1 flags:1 ts:-0.222493 > ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 > -ret: 0 st: 0 flags:0 ts: 2.680000 > +ret: 0 st: 0 flags:0 ts: 2.671667 > ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 > -ret: 0 st: 0 flags:1 ts: 1.560000 > +ret: 0 st: 0 flags:1 ts: 1.565833 > ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:11232000 size:288000 > ret: 0 st:-1 flags:0 ts: 0.460008 > ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:3456000 size:288000 > -- > 2.35.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >
diff --git a/libavformat/dv.c b/libavformat/dv.c index ffed1a7a90..e2f7a6d313 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -69,6 +69,8 @@ struct DVDemuxContext { uint8_t audio_buf[4][8192]; int ach; int frames; + + int64_t next_pts; }; static inline uint16_t dv_audio_12to16(uint16_t sample) @@ -314,8 +316,6 @@ static int dv_extract_video_info(DVDemuxContext *c, const uint8_t *frame) par = c->vst->codecpar; - avpriv_set_pts_info(c->vst, 64, c->sys->time_base.num, - c->sys->time_base.den); c->vst->avg_frame_rate = av_inv_q(c->vst->time_base); /* finding out SAR is a little bit messy */ @@ -360,6 +360,8 @@ static int dv_init_demux(AVFormatContext *s, DVDemuxContext *c) c->vst->codecpar->bit_rate = 25000000; c->vst->start_time = 0; + avpriv_set_pts_info(c->vst, 64, 1, 60000); + /* Audio streams are added later as they are encountered. */ s->ctx_flags |= AVFMTCTX_NOHEADER; @@ -463,7 +465,10 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt, pkt->size = size; pkt->flags |= AV_PKT_FLAG_KEY; pkt->stream_index = c->vst->index; - pkt->pts = c->frames; + pkt->pts = c->next_pts; + pkt->duration = av_rescale_q(1, c->sys->time_base, c->vst->time_base); + + c->next_pts += pkt->duration; } c->frames++; @@ -477,11 +482,12 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, // FIXME: sys may be wrong if last dv_read_packet() failed (buffer is junk) FFFormatContext *const si = ffformatcontext(s); const int frame_size = c->sys->frame_size; + int64_t frame_count = av_rescale_q(timestamp, c->vst->time_base, c->sys->time_base); int64_t offset; int64_t size = avio_size(s->pb) - si->data_offset; int64_t max_offset = ((size - 1) / frame_size) * frame_size; - offset = frame_size * timestamp; + offset = frame_size * frame_count; if (size >= 0 && offset > max_offset) offset = max_offset; @@ -494,6 +500,8 @@ static int64_t dv_frame_offset(AVFormatContext *s, DVDemuxContext *c, void ff_dv_offset_reset(DVDemuxContext *c, int64_t frame_offset) { c->frames = frame_offset; + if (c->sys) + c->next_pts = av_rescale_q(frame_offset, c->sys->time_base, c->vst->time_base); c->audio_pkt[0].size = c->audio_pkt[1].size = 0; c->audio_pkt[2].size = c->audio_pkt[3].size = 0; } diff --git a/tests/ref/seek/lavf-dv b/tests/ref/seek/lavf-dv index f63e4460be..356f05546b 100644 --- a/tests/ref/seek/lavf-dv +++ b/tests/ref/seek/lavf-dv @@ -3,50 +3,50 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:0 ts: 2.560000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 1.480000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 0.365002 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 ret: 0 st:-1 flags:1 ts:-0.740831 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:0 ts: 2.160000 +ret: 0 st: 0 flags:0 ts: 2.153333 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 -ret: 0 st: 0 flags:1 ts: 1.040000 +ret: 0 st: 0 flags:1 ts: 1.047500 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 ret: 0 st: 1 flags:0 ts:-0.040000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 2.840000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 ret: 0 st: 1 flags:0 ts: 1.320000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 0.200000 -ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts:-0.904994 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.989173 ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.880000 +ret: 0 st: 0 flags:0 ts: 0.883333 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.240000 +ret: 0 st: 0 flags:1 ts:-0.222500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:0 ts: 2.680000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st: 1 flags:1 ts: 1.560000 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3456000 size:144000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 ret: 0 st:-1 flags:1 ts:-0.645825 diff --git a/tests/ref/seek/vsynth_lena-dv b/tests/ref/seek/vsynth_lena-dv index d318794157..afed1fbe72 100644 --- a/tests/ref/seek/vsynth_lena-dv +++ b/tests/ref/seek/vsynth_lena-dv @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.576668 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.470835 ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.360000 +ret: 0 st: 0 flags:0 ts: 0.365000 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.760000 +ret: 0 st: 0 flags:1 ts:-0.740833 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.153336 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.047503 ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.040000 +ret: 0 st: 0 flags:0 ts:-0.058333 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.840000 +ret: 0 st: 0 flags:1 ts: 2.835833 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.306672 ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.920000 +ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.000000 +ret: 0 st: 0 flags:1 ts: 1.989167 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 0.883340 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:0 ts: 2.680000 +ret: 0 st: 0 flags:0 ts: 2.671667 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 -ret: 0 st: 0 flags:1 ts: 1.560000 +ret: 0 st: 0 flags:1 ts: 1.565833 ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 diff --git a/tests/ref/seek/vsynth_lena-dv-411 b/tests/ref/seek/vsynth_lena-dv-411 index d318794157..afed1fbe72 100644 --- a/tests/ref/seek/vsynth_lena-dv-411 +++ b/tests/ref/seek/vsynth_lena-dv-411 @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:6768000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:2880000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.576668 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.470835 ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:5328000 size:144000 -ret: 0 st: 0 flags:0 ts: 0.360000 +ret: 0 st: 0 flags:0 ts: 0.365000 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1296000 size:144000 -ret: 0 st: 0 flags:1 ts:-0.760000 +ret: 0 st: 0 flags:1 ts:-0.740833 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 ret: 0 st:-1 flags:0 ts: 2.153336 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:1 ts: 1.047503 ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:3744000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.040000 +ret: 0 st: 0 flags:0 ts:-0.058333 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.840000 +ret: 0 st: 0 flags:1 ts: 2.835833 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:6192000 size:144000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2304000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 1.306672 ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:4752000 size:144000 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 720000 size:144000 -ret: 0 st: 0 flags:0 ts:-0.920000 +ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:1 ts: 2.000000 +ret: 0 st: 0 flags:1 ts: 1.989167 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 ret: 0 st:-1 flags:0 ts: 0.883340 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3168000 size:144000 ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:144000 -ret: 0 st: 0 flags:0 ts: 2.680000 +ret: 0 st: 0 flags:0 ts: 2.671667 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:7056000 size:144000 -ret: 0 st: 0 flags:1 ts: 1.560000 +ret: 0 st: 0 flags:1 ts: 1.565833 ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:5616000 size:144000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1728000 size:144000 diff --git a/tests/ref/seek/vsynth_lena-dv-50 b/tests/ref/seek/vsynth_lena-dv-50 index fae6d1b225..3b1d69ffa6 100644 --- a/tests/ref/seek/vsynth_lena-dv-50 +++ b/tests/ref/seek/vsynth_lena-dv-50 @@ -3,49 +3,49 @@ ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 ret: 0 st:-1 flags:1 ts: 1.894167 ret: 0 st: 0 flags:1 dts: 1.880000 pts: 1.880000 pos:13536000 size:288000 -ret: 0 st: 0 flags:0 ts: 0.800000 +ret: 0 st: 0 flags:0 ts: 0.788333 ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:5760000 size:288000 -ret: 0 st: 0 flags:1 ts:-0.320000 +ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 ret: 0 st:-1 flags:0 ts: 2.576668 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:1 ts: 1.470835 ret: 0 st: 0 flags:1 dts: 1.480000 pts: 1.480000 pos:10656000 size:288000 -ret: 0 st: 0 flags:0 ts: 0.360000 +ret: 0 st: 0 flags:0 ts: 0.365000 ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:2592000 size:288000 -ret: 0 st: 0 flags:1 ts:-0.760000 +ret: 0 st: 0 flags:1 ts:-0.740833 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 ret: 0 st:-1 flags:0 ts: 2.153336 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:1 ts: 1.047503 ret: 0 st: 0 flags:1 dts: 1.040000 pts: 1.040000 pos:7488000 size:288000 -ret: 0 st: 0 flags:0 ts:-0.040000 +ret: 0 st: 0 flags:0 ts:-0.058333 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:1 ts: 2.840000 +ret: 0 st: 0 flags:1 ts: 2.835833 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:0 ts: 1.730004 ret: 0 st: 0 flags:1 dts: 1.720000 pts: 1.720000 pos:12384000 size:288000 ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:4608000 size:288000 -ret: 0 st: 0 flags:0 ts:-0.480000 +ret: 0 st: 0 flags:0 ts:-0.481667 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:1 ts: 2.400000 +ret: 0 st: 0 flags:1 ts: 2.412500 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:0 ts: 1.306672 ret: 0 st: 0 flags:1 dts: 1.320000 pts: 1.320000 pos:9504000 size:288000 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:1440000 size:288000 -ret: 0 st: 0 flags:0 ts:-0.920000 +ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:1 ts: 2.000000 +ret: 0 st: 0 flags:1 ts: 1.989167 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 ret: 0 st:-1 flags:0 ts: 0.883340 ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:6336000 size:288000 ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 0 size:288000 -ret: 0 st: 0 flags:0 ts: 2.680000 +ret: 0 st: 0 flags:0 ts: 2.671667 ret: 0 st: 0 flags:1 dts: 1.960000 pts: 1.960000 pos:14112000 size:288000 -ret: 0 st: 0 flags:1 ts: 1.560000 +ret: 0 st: 0 flags:1 ts: 1.565833 ret: 0 st: 0 flags:1 dts: 1.560000 pts: 1.560000 pos:11232000 size:288000 ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:3456000 size:288000