summaryrefslogtreecommitdiffstats
path: root/libavformat/seek-test.c
diff options
context:
space:
mode:
authorChris Cunningham <chcunningham@chromium.org>2015-12-01 10:54:38 -0800
committerwm4 <nfxjfg@googlemail.com>2015-12-02 11:02:27 +0100
commit5e6ce28dabe002a6130f17b59c454bdee33088f7 (patch)
tree208d9a3949cfb097f87a9f706c033d90fdc7ce54 /libavformat/seek-test.c
parente1057babdfb01c53e40a3f68edcc59e1bdad7121 (diff)
downloadffmpeg-streaming-5e6ce28dabe002a6130f17b59c454bdee33088f7.zip
ffmpeg-streaming-5e6ce28dabe002a6130f17b59c454bdee33088f7.tar.gz
avformat/mp3dec: prefer "fast_seek" to TOC seek for CBR files.
"Fast seek" uses linear interpolation to find the position of the requested seek time. For CBR this is more direct than using the mp3 TOC and bypassing the TOC avoids problems with TOC precision. (see https://crbug.com/545914#c13) For VBR, fast seek is not precise, so continue to prefer the TOC when available (the lesser of two evils). Also, some re-ordering of the logic in mp3_seek to simplify and give usetoc=1 precedence over fastseek flag. Signed-off-by: wm4 <nfxjfg@googlemail.com>
Diffstat (limited to 'libavformat/seek-test.c')
-rw-r--r--libavformat/seek-test.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libavformat/seek-test.c b/libavformat/seek-test.c
index 1926f21..bfd06db 100644
--- a/libavformat/seek-test.c
+++ b/libavformat/seek-test.c
@@ -56,7 +56,7 @@ static void ts_str(char buffer[60], int64_t ts, AVRational base)
int main(int argc, char **argv)
{
const char *filename;
- AVFormatContext *ic = NULL;
+ AVFormatContext *ic = avformat_alloc_context();
int i, ret, stream_id;
int j;
int64_t timestamp;
@@ -76,8 +76,10 @@ int main(int argc, char **argv)
frame_count = atoi(argv[i+1]);
} else if(!strcmp(argv[i], "-duration")){
duration = atoi(argv[i+1]);
- } else if(!strcmp(argv[i], "-usetoc")) {
- av_dict_set(&format_opts, "usetoc", argv[i+1], 0);
+ } else if(!strcmp(argv[i], "-fastseek")) {
+ if (atoi(argv[i+1])) {
+ ic->flags |= AVFMT_FLAG_FAST_SEEK;
+ }
} else {
argc = 1;
}
OpenPOWER on IntegriCloud