X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fyuv4mpegdec.c;h=eff7fc518e413e8941551bbef6c305f8e2945057;hb=7db022e67bab568a560c8bd55f5840e71a34dc15;hp=ff0125e4cf3065832ae6a446d4f91d593ef25229;hpb=085a2eb8e27330c51df490f986cb5926077974d6;p=ffmpeg diff --git a/libavformat/yuv4mpegdec.c b/libavformat/yuv4mpegdec.c index ff0125e4cf3..eff7fc518e4 100644 --- a/libavformat/yuv4mpegdec.c +++ b/libavformat/yuv4mpegdec.c @@ -314,7 +314,13 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt) static int yuv4_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int flags) { - if (avio_seek(s->pb, pts * s->packet_size + s->internal->data_offset, SEEK_SET) < 0) + int64_t pos; + + if (flags & AVSEEK_FLAG_BACKWARD) + pts = FFMAX(0, pts - 1); + pos = pts * s->packet_size; + + if (avio_seek(s->pb, pos + s->internal->data_offset, SEEK_SET) < 0) return -1; return 0; }