Commit 5abcf45d authored by Paul B Mahol's avatar Paul B Mahol

avformat/yuv4mpegdec: simplify math

This one actually works with hd1080 y4m files when seeking backwards.
Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent 943f7902
...@@ -314,14 +314,11 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -314,14 +314,11 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt)
static int yuv4_read_seek(AVFormatContext *s, int stream_index, static int yuv4_read_seek(AVFormatContext *s, int stream_index,
int64_t pts, int flags) int64_t pts, int flags)
{ {
AVStream *st = s->streams[0];
int64_t pos; int64_t pos;
pos = av_rescale_rnd(pts * s->packet_size, if (flags & AVSEEK_FLAG_BACKWARD)
st->time_base.num, pts = FFMAX(0, pts - 1);
st->time_base.den * s->packet_size, pos = pts * 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) if (avio_seek(s->pb, pos + s->internal->data_offset, SEEK_SET) < 0)
return -1; return -1;
......
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: 64 size:152064
ret:-1 st:-1 flags:0 ts:-1.000000 ret:-1 st:-1 flags:0 ts:-1.000000
ret: 0 st:-1 flags:1 ts: 1.894167 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:-EOF
ret: 0 st: 0 flags:0 ts: 0.800000 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:3041464 size:152064
ret:-1 st: 0 flags:1 ts:-0.320000 ret: 0 st: 0 flags:1 ts:-0.320000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064
ret: 0 st:-1 flags:0 ts: 2.576668 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:-EOF
ret: 0 st:-1 flags:1 ts: 1.470835 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:-EOF
ret: 0 st: 0 flags:0 ts: 0.360000 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:1368694 size:152064
ret:-1 st: 0 flags:1 ts:-0.760000 ret: 0 st: 0 flags:1 ts:-0.760000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064
ret: 0 st:-1 flags:0 ts: 2.153336 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:-EOF
ret: 0 st:-1 flags:1 ts: 1.047503 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:-EOF
ret: 0 st: 0 flags:0 ts:-0.040000 ret:-1 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 ts: 2.840000 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:-EOF
ret: 0 st:-1 flags:0 ts: 1.730004 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:-EOF
ret: 0 st:-1 flags:1 ts: 0.624171 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.600000 pts: 0.600000 pos:2281114 size:152064
ret: 0 st: 0 flags:0 ts:-0.480000 ret:-1 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 ts: 2.400000 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:-EOF
ret: 0 st:-1 flags:0 ts: 1.306672 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:-EOF
ret: 0 st:-1 flags:1 ts: 0.200839 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.160000 pts: 0.160000 pos: 608344 size:152064
ret: 0 st: 0 flags:0 ts:-0.920000 ret:-1 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 ts: 2.000000 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:-EOF
ret: 0 st:-1 flags:0 ts: 0.883340 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:3345604 size:152064
ret:-1 st:-1 flags:1 ts:-0.222493 ret: 0 st:-1 flags:1 ts:-0.222493
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064
ret: 0 st: 0 flags:0 ts: 2.680000 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:-EOF
ret: 0 st: 0 flags:1 ts: 1.560000 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:-EOF
ret: 0 st:-1 flags:0 ts: 0.460008 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:1824904 size:152064
ret:-1 st:-1 flags:1 ts:-0.645825 ret: 0 st:-1 flags:1 ts:-0.645825
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 64 size:152064
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment