You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
lavf: call the new seek API from the old.
If the demuxer implements read_seek2() and not read_seek(), call avformat_seek_file() from av_seek_frame(). Allow to properly seek in formats that only implement the new API from applications that use the old one. Tested with mplayer and a concat script.
This commit is contained in:
@@ -2135,7 +2135,19 @@ static int seek_frame_internal(AVFormatContext *s, int stream_index,
|
|||||||
|
|
||||||
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
|
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
|
||||||
{
|
{
|
||||||
int ret = seek_frame_internal(s, stream_index, timestamp, flags);
|
int ret;
|
||||||
|
|
||||||
|
if (s->iformat->read_seek2 && !s->iformat->read_seek) {
|
||||||
|
int64_t min_ts = INT64_MIN, max_ts = INT64_MAX;
|
||||||
|
if ((flags & AVSEEK_FLAG_BACKWARD))
|
||||||
|
max_ts = timestamp;
|
||||||
|
else
|
||||||
|
min_ts = timestamp;
|
||||||
|
return avformat_seek_file(s, stream_index, min_ts, timestamp, max_ts,
|
||||||
|
flags & ~AVSEEK_FLAG_BACKWARD);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = seek_frame_internal(s, stream_index, timestamp, flags);
|
||||||
|
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
ret = avformat_queue_attached_pictures(s);
|
ret = avformat_queue_attached_pictures(s);
|
||||||
|
Reference in New Issue
Block a user