diff mbox series

[FFmpeg-devel] fftools/ffmpeg: accelerate seeking while reading input at native frame rate

Message ID 20210704042615.92333-1-fulinjie@zju.edu.cn
State Superseded
Headers show
Series [FFmpeg-devel] fftools/ffmpeg: accelerate seeking while reading input at native frame rate
Related show

Checks

Context Check Description
andriy/x86_make_warn warning New warnings during build
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Linjie Fu July 4, 2021, 4:26 a.m. UTC
From: Linjie Fu <linjie.justin.fu@gmail.com>

Skip the logic of frame rate emulation until the input reaches the
specified start time.

Test CMD:
   $ffmpeg -re -ss 30 -i input.mp4 -pix_fmt yuv420p -f sdl2 -

Before the patch:
first time to got frame, it takes 257305 us
After this patch:
first time to got frame, it takes 48879 us

Signed-off-by: Linjie Fu <linjie.justin.fu@gmail.com>
---
 fftools/ffmpeg.c | 2 ++
 1 file changed, 2 insertions(+)
diff mbox series

Patch

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index e97d879cb3..851f23ffdb 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -4223,6 +4223,8 @@  static int get_input_packet(InputFile *f, AVPacket **pkt)
         int i;
         for (i = 0; i < f->nb_streams; i++) {
             InputStream *ist = input_streams[f->ist_index + i];
+            if (!ist->got_output)
+                continue;
             int64_t pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
             int64_t now = av_gettime_relative() - ist->start;
             if (pts > now)