Signed-off-by: Paul B Mahol <one...@gmail.com> --- libavformat/yuv4mpegdec.c | 23 ++++---------------- tests/ref/seek/lavf-yuv4mpeg | 52 ++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 47 deletions(-)
diff --git a/libavformat/yuv4mpegdec.c b/libavformat/yuv4mpegdec.c index 8662a42a4c..cf6da2a2ef 100644 --- a/libavformat/yuv4mpegdec.c +++ b/libavformat/yuv4mpegdec.c @@ -306,28 +306,13 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt) return s->pb->eof_reached ? AVERROR_EOF : AVERROR(EIO); } pkt->stream_index = 0; - pkt->pts = (off - s->internal->data_offset) / s->packet_size; + pkt->pos = off; + pkt->dts = pkt->pts = (off - s->internal->data_offset) / s->packet_size; + pkt->flags |= AV_PKT_FLAG_KEY; pkt->duration = 1; return 0; } -static int yuv4_read_seek(AVFormatContext *s, int stream_index, - int64_t pts, int flags) -{ - AVStream *st = s->streams[0]; - int64_t pos; - - pos = av_rescale_rnd(pts * s->packet_size, - st->time_base.num, - st->time_base.den * s->packet_size, - (flags & AVSEEK_FLAG_BACKWARD) ? AV_ROUND_DOWN : AV_ROUND_UP); - pos *= s->packet_size; - - if (avio_seek(s->pb, pos + s->internal->data_offset, SEEK_SET) < 0) - return -1; - return 0; -} - static int yuv4_probe(AVProbeData *pd) { /* check file header */ @@ -343,6 +328,6 @@ AVInputFormat ff_yuv4mpegpipe_demuxer = { .read_probe = yuv4_probe, .read_header = yuv4_read_header, .read_packet = yuv4_read_packet, - .read_seek = yuv4_read_seek, .extensions = "y4m", + .flags = AVFMT_GENERIC_INDEX, }; diff --git a/tests/ref/seek/lavf-yuv4mpeg b/tests/ref/seek/lavf-yuv4mpeg index 15d4d8c8c1..0f85ea5a46 100644 --- a/tests/ref/seek/lavf-yuv4mpeg +++ b/tests/ref/seek/lavf-yuv4mpeg @@ -1,48 +1,44 @@ -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064 -ret:-1 st:-1 flags:0 ts:-1.000000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 58 size:152064 +ret: 0 st:-1 flags:0 ts:-1.000000 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 58 size:152064 ret: 0 st:-1 flags:1 ts: 1.894167 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3649738 size:152064 ret: 0 st: 0 flags:0 ts: 0.800000 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:3041458 size:152064 ret:-1 st: 0 flags:1 ts:-0.320000 -ret: 0 st:-1 flags:0 ts: 2.576668 -ret: 0 st: 0 flags:1 dts: 0.120000 pts: 0.120000 pos: 456274 size:152064 +ret:-1 st:-1 flags:0 ts: 2.576668 ret: 0 st:-1 flags:1 ts: 1.470835 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3649738 size:152064 ret: 0 st: 0 flags:0 ts: 0.360000 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1368688 size:152064 ret:-1 st: 0 flags:1 ts:-0.760000 -ret: 0 st:-1 flags:0 ts: 2.153336 -ret: 0 st: 0 flags:1 dts: 0.120000 pts: 0.120000 pos: 456274 size:152064 +ret:-1 st:-1 flags:0 ts: 2.153336 ret: 0 st:-1 flags:1 ts: 1.047503 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3649738 size:152064 ret: 0 st: 0 flags:0 ts:-0.040000 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 58 size:152064 ret: 0 st: 0 flags:1 ts: 2.840000 -ret: 0 st: 0 flags:1 dts: 0.080000 pts: 0.080000 pos: 304204 size:152064 -ret: 0 st:-1 flags:0 ts: 1.730004 -ret: 0 st: 0 flags:1 dts: 0.080000 pts: 0.080000 pos: 304204 size:152064 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3649738 size:152064 +ret:-1 st:-1 flags:0 ts: 1.730004 ret: 0 st:-1 flags:1 ts: 0.624171 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064 +ret: 0 st: 0 flags:1 dts: 0.640000 pts: 0.640000 pos:2433178 size:152064 ret: 0 st: 0 flags:0 ts:-0.480000 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 58 size:152064 ret: 0 st: 0 flags:1 ts: 2.400000 -ret: 0 st: 0 flags:1 dts: 0.080000 pts: 0.080000 pos: 304204 size:152064 -ret: 0 st:-1 flags:0 ts: 1.306672 -ret: 0 st: 0 flags:1 dts: 0.080000 pts: 0.080000 pos: 304204 size:152064 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3649738 size:152064 +ret:-1 st:-1 flags:0 ts: 1.306672 ret: 0 st:-1 flags:1 ts: 0.200839 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064 +ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: 760408 size:152064 ret: 0 st: 0 flags:0 ts:-0.920000 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 58 size:152064 ret: 0 st: 0 flags:1 ts: 2.000000 -ret: 0 st: 0 flags:1 dts: 0.080000 pts: 0.080000 pos: 304204 size:152064 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3649738 size:152064 ret: 0 st:-1 flags:0 ts: 0.883340 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:3345598 size:152064 ret:-1 st:-1 flags:1 ts:-0.222493 -ret: 0 st: 0 flags:0 ts: 2.680000 -ret: 0 st: 0 flags:1 dts: 0.120000 pts: 0.120000 pos: 456274 size:152064 +ret:-1 st: 0 flags:0 ts: 2.680000 ret: 0 st: 0 flags:1 ts: 1.560000 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:3649738 size:152064 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.040000 pts: 0.040000 pos: 152134 size:152064 +ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:1824898 size:152064 ret:-1 st:-1 flags:1 ts:-0.645825 -- 2.11.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel