diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-01-02 22:55:42 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-01-02 23:02:33 +0100 |
commit | aa86d2d8846155ccdbb6f8824294a548fe42dfc2 (patch) | |
tree | ff92465183cf187cf46394b2ecfde05b773b8d10 | |
parent | fc86f863536b711a443f981d45913172190c8030 (diff) | |
download | ffmpeg-aa86d2d8846155ccdbb6f8824294a548fe42dfc2.tar.gz |
lavf: move stream==-1 handling from ff_subtitles_queue_seek() to avformat_seek_file()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/subtitles.c | 10 | ||||
-rw-r--r-- | libavformat/utils.c | 12 |
2 files changed, 12 insertions, 10 deletions
diff --git a/libavformat/subtitles.c b/libavformat/subtitles.c index 4088cf344d..546261605f 100644 --- a/libavformat/subtitles.c +++ b/libavformat/subtitles.c @@ -104,16 +104,6 @@ int ff_subtitles_queue_seek(FFDemuxSubtitlesQueue *q, AVFormatContext *s, int st int i, idx = -1; int64_t min_ts_diff = INT64_MAX; int64_t ts_selected; - if (stream_index == -1) { - AVRational time_base = s->streams[0]->time_base; - ts = av_rescale_q(ts, AV_TIME_BASE_Q, time_base); - min_ts = av_rescale_rnd(min_ts, time_base.den, - time_base.num * (int64_t)AV_TIME_BASE, - AV_ROUND_UP); - max_ts = av_rescale_rnd(max_ts, time_base.den, - time_base.num * (int64_t)AV_TIME_BASE, - AV_ROUND_DOWN); - } /* TODO: q->subs[] is sorted by pts so we could do a binary search */ for (i = 0; i < q->nb_subs; i++) { int64_t pts = q->subs[i].pts; diff --git a/libavformat/utils.c b/libavformat/utils.c index c5eb36f105..cbf32638c3 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2086,6 +2086,18 @@ int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int if (s->iformat->read_seek2) { int ret; ff_read_frame_flush(s); + + if (stream_index == -1 && s->nb_streams == 1) { + AVRational time_base = s->streams[0]->time_base; + ts = av_rescale_q(ts, AV_TIME_BASE_Q, time_base); + min_ts = av_rescale_rnd(min_ts, time_base.den, + time_base.num * (int64_t)AV_TIME_BASE, + AV_ROUND_UP); + max_ts = av_rescale_rnd(max_ts, time_base.den, + time_base.num * (int64_t)AV_TIME_BASE, + AV_ROUND_DOWN); + } + ret = s->iformat->read_seek2(s, stream_index, min_ts, ts, max_ts, flags); if (ret >= 0) |