[Bug 764629] qtdemux: Support sidx based seek in pull mode

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Apr 5 10:54:43 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=764629

--- Comment #2 from Seungha Yang <sh.yang at lge.com> ---
Attaching logs
- NG CASE

1. Seek around 1:00 min.
10414 0:00:03.193475147 23793      0x2570100 DEBUG              GST_EVENT
gstpad.c:5531:gst_pad_send_event_unchecked:<qtdemux0:video_0> have event type
seek event: 0x7f336497a480, time 99:99:99.999999999, seq-num 795, GstEventSeek,
rate=(double)1, format=(GstFormat)GST_FORMAT_TIME,
flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH+GST_SEEK_FLAG_ACCURATE,
cur-type=(GstSeekType)GST_SEEK_TYPE_SET, cur=(gint64)63462811074,
stop-type=(GstSeekType)GST_SEEK_TYPE_SET, stop=(gint64)-1;

2. Activate segment
10507 0:00:03.229465206 23793 0x7f33681171e0 LOG                  qtdemux
qtdemux.c:5538:gst_qtdemux_loop:<qtdemux0> loop at position 2643, state 2
10508 0:00:03.229493446 23793 0x7f33681171e0 INFO                 qtdemux
qtdemux.c:5313:gst_qtdemux_loop_state_movie:<qtdemux0> pending fragmented seek
10509 0:00:03.229500011 23793 0x7f33681171e0 INFO                 qtdemux
qtdemux.c:5315:gst_qtdemux_loop_state_movie:<qtdemux0> fragmented seek done!
10510 0:00:03.229505783 23793 0x7f33681171e0 LOG                  qtdemux
qtdemux.c:1190:gst_qtdemux_find_segment:<qtdemux0:video_0> finding segment for
0:01:03.462811074
10511 0:00:03.229513452 23793 0x7f33681171e0 LOG                  qtdemux
qtdemux.c:1198:gst_qtdemux_find_segment:<qtdemux0:video_0> looking at segment
0:00:00.000000000-0:02:33.194200000
10512 0:00:03.229521733 23793 0x7f33681171e0 LOG                  qtdemux
qtdemux.c:4390:gst_qtdemux_activate_segment:<qtdemux0:video_0> activate segment
0, offset 0:01:03.462811074
10513 0:00:03.229528264 23793 0x7f33681171e0 LOG                  qtdemux
qtdemux.c:4418:gst_qtdemux_activate_segment:<qtdemux0:video_0> seg_time
0:01:03.462811074
10514 0:00:03.229532969 23793 0x7f33681171e0 DEBUG                qtdemux
qtdemux.c:4462:gst_qtdemux_activate_segment:<qtdemux0:video_0> new segment 0
from 0:01:03.504522185 to 0:02:33.194200000, time 0:01:03.462811074
10515 0:00:03.229540302 23793 0x7f33681171e0 DEBUG                qtdemux
qtdemux.c:4483:gst_qtdemux_activate_segment:<qtdemux0:video_0> New segment:
time segment start=0:01:03.504522185, offset=0:00:00.000000000,
stop=0:02:33.194200000,       rate=1.000000, applied_rate=1.000000, flags=0x01,
time=0:01:03.462811074, base=0:00:00.000000000, position 0:01:03.504522185,
duration 99:99:99.999999999

3. Because there is not moof offset info, push buffer from currently available
moof
10951 0:00:03.231298749 23793 0x7f33681171e0 LOG                  qtdemux
qtdemux.c:5160:gst_qtdemux_decorate_and_push_buffer:<qtdemux0> Pushing buffer
with dts 0:00:25.025000000, pts 0:00:25.066711111, duration 0:00:00.041711111
on pad video_0


- With this patch
1. Seek around 1:00 min
 9850 0:00:03.179459153 25197       0xcf10f0 DEBUG              GST_EVENT
gstpad.c:5531:gst_pad_send_event_unchecked:<qtdemux0:video_0> have event type
seek event: 0x7fb664002660, time 99:99:99.999999999, seq-num 748, GstEventSeek,
rate=(double)1, format=(GstFormat)GST_FORMAT_TIME,
flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH+GST_SEEK_FLAG_ACCURATE,
cur-type=(GstSeekType)GST_SEEK_TYPE_SET, cur=(gint64)63470510053,
stop-type=(GstSeekType)GST_SEEK_TYPE_SET, stop=(gint64)-1;

2. qtdemux can figure out appropriate moof offset
 9944 0:00:03.204426266 25197 0x7fb6ac0f9de0 LOG                  qtdemux
qtdemux.c:5603:gst_qtdemux_loop:<qtdemux0> loop at position 2643, state 2
 9945 0:00:03.204454235 25197 0x7fb6ac0f9de0 INFO                 qtdemux
qtdemux.c:5378:gst_qtdemux_loop_state_movie:<qtdemux0> pending fragmented seek
 9946 0:00:03.204460719 25197 0x7fb6ac0f9de0 LOG                  qtdemux
qtdemux.c:5310:gst_qtdemux_do_fragmented_seek:<qtdemux0> Do fragmented seek
using sidx
 9947 0:00:03.204466196 25197 0x7fb6ac0f9de0 INFO                 qtdemux
qtdemux.c:5327:gst_qtdemux_do_fragmented_seek:<qtdemux0:video_0>
0:01:00.060000000 at offset 101521121
 9948 0:00:03.204474593 25197 0x7fb6ac0f9de0 INFO                 qtdemux
qtdemux.c:5347:gst_qtdemux_do_fragmented_seek:<qtdemux0> seek to
0:01:03.470510053, best fragment moof offset: 101521121, ts 0:01:00.060000000
 9949 0:00:03.204482545 25197 0x7fb6ac0f9de0 DEBUG                qtdemux
qtdemux.c:7599:qtdemux_add_fragmented_samples:<qtdemux0> next moof at offset
101521121
 9950 0:00:03.204489026 25197 0x7fb6ac0f9de0 LOG                  qtdemux
qtdemux.c:7539:qtdemux_find_atom:<qtdemux0> finding fourcc moof at offset
101521121

3. Push buffer from around 1:00 min
10399 0:00:03.206456971 25197 0x7fb6ac0f9de0 LOG                  qtdemux
qtdemux.c:5208:gst_qtdemux_decorate_and_push_buffer:<qtdemux0> Pushing buffer
with dts 0:01:00.060000000, pts 0:01:00.101711111, duration 0:00:00.041711111
on pad video_0

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list