[gst-devel] gst-plugins/examples/seeking problems
Joshua N Pritikin
vishnu at pobox.com
Tue Jul 23 01:49:02 CEST 2002
i built gstreamer & gst-plugins from current CVS. i run debian i386 with
a vanilla kernel 2.4.18. i'm playing with the included seeking example.
Here are my observations from testing an mpeg1 media file:
If i don't seek then it plays somewhat normally chewing about 01% (!!)
of my 750MHz P-III. The efficiency is pretty amazing. However,
there are some problems:
Approximately every second, it pauses for about 1/10 of a second too long.
The audio drops out and the video freezes. Then it continues normally.
After 1 minute 41 seconds, it stopped playing. Here are the stacks:
(gdb) i thr
* 4 Thread 2051 (LWP 10356) 0x4055aaee in sigsuspend () from /lib/libc.so.6
3 Thread 1026 (LWP 10355) 0x4055aaee in sigsuspend () from /lib/libc.so.6
2 Thread 2049 (LWP 10354) 0x405f9ce0 in poll () from /lib/libc.so.6
1 Thread 1024 (LWP 10353) 0x405fb84e in select () from /lib/libc.so.6
(gdb) thr 1
[Switching to thread 1 (Thread 1024 (LWP 10353))]#0 0x405fb84e in select ()
from /lib/libc.so.6
(gdb) where
#0 0x405fb84e in select () from /lib/libc.so.6
#1 0x40062bd0 in __DTOR_END__ ()
from /home/joshua/gst/gstreamer/gst/.libs/libgstreamer-0.4.0.1.so.0
#2 0x4002bc45 in gst_clock_wait (clock=0x80bd638, time=148547911111, jitter=0x0)
at gstclock.c:393
#3 0x4089f72e in gst_basic_scheduler_clock_wait (sched=0x80ab270, element=0x80b08b0,
clock=0x80bd638, time=148547911111, jitter=0x0) at gstbasicscheduler.c:1287
#4 0x400436ac in gst_scheduler_clock_wait (sched=0x80ab270, element=0x80b08b0,
clock=0x80bd638, time=148547911111, jitter=0x0) at gstscheduler.c:588
#5 0x4002e60f in gst_element_clock_wait (element=0x80b08b0, clock=0x80bd638,
time=148547911111, jitter=0x0) at gstelement.c:740
#6 0x408bbd0e in gst_mpeg_parse_loop (element=0x80b08b0) at gstmpegparse.c:419
#7 0x4089c497 in gst_basic_scheduler_loopfunc_wrapper (argc=0, argv=0x80b08b0)
at gstbasicscheduler.c:279
#8 0x408a0a4e in cothread_stub () at cothreads.c:403
#9 0x408a0eec in cothread_switch (thread=0xbfe60000) at cothreads.c:599
#10 0x4089fa05 in gst_basic_scheduler_iterate (sched=0x80ab270) at gstbasicscheduler.c:1350
#11 0x40043762 in gst_scheduler_iterate (sched=0x80ab270) at gstscheduler.c:609
#12 0x4002910e in gst_bin_iterate_func (bin=0x80aa538) at gstbin.c:831
#13 0x40029290 in gst_bin_iterate (bin=0x80aa538) at gstbin.c:873
#14 0x0804ba3a in iterate (data=0x80aa538) at seek.c:636
(gdb) thr 2
[Switching to thread 2 (Thread 2049 (LWP 10354))]#0 0x405f9ce0 in poll ()
from /lib/libc.so.6
(gdb) where
#0 0x405f9ce0 in poll () from /lib/libc.so.6
#1 0x400a8be6 in __pthread_manager () from /lib/libpthread.so.0
#2 0x400a8e10 in pthread_start_thread () from /lib/libpthread.so.0
(gdb) thr 3
[Switching to thread 3 (Thread 1026 (LWP 10355))]#0 0x4055aaee in sigsuspend ()
from /lib/libc.so.6
(gdb) where
#0 0x4055aaee in sigsuspend () from /lib/libc.so.6
#1 0x400ab6b9 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
#2 0x400a7f52 in pthread_cond_wait () from /lib/libpthread.so.0
#3 0x40041282 in gst_queue_get (pad=0x80adf30) at gstqueue.c:523
#4 0x4003a2c8 in gst_pad_pull (pad=0x80adfa8) at gstpad.c:1903
#5 0x4089c726 in gst_basic_scheduler_chain_wrapper (argc=0, argv=0x80c0028)
at gstbasicscheduler.c:327
#6 0x408a0a4e in cothread_stub () at cothreads.c:403
#7 0x408a0eec in cothread_switch (thread=0x40e00000) at cothreads.c:599
#8 0x4089d193 in gst_basic_scheduler_gethandler_proxy (pad=0x80ae020)
at gstbasicscheduler.c:498
#9 0x4003a2c8 in gst_pad_pull (pad=0x80ae098) at gstpad.c:1903
#10 0x4089c726 in gst_basic_scheduler_chain_wrapper (argc=0, argv=0x80c1330)
at gstbasicscheduler.c:327
#11 0x408a0a4e in cothread_stub () at cothreads.c:403
#12 0x408a0eec in cothread_switch (thread=0x40e20000) at cothreads.c:599
#13 0x4089fa05 in gst_basic_scheduler_iterate (sched=0x80be650) at gstbasicscheduler.c:1350
#14 0x40043762 in gst_scheduler_iterate (sched=0x80be650) at gstscheduler.c:609
(gdb) thr 4
[Switching to thread 4 (Thread 2051 (LWP 10356))]#0 0x4055aaee in sigsuspend ()
from /lib/libc.so.6
(gdb) where
#0 0x4055aaee in sigsuspend () from /lib/libc.so.6
#1 0x400ab6b9 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
#2 0x400a7f52 in pthread_cond_wait () from /lib/libpthread.so.0
#3 0x40041282 in gst_queue_get (pad=0x80adcd8) at gstqueue.c:523
#4 0x4003a2c8 in gst_pad_pull (pad=0x80add50) at gstpad.c:1903
#5 0x4089c726 in gst_basic_scheduler_chain_wrapper (argc=0, argv=0x80bd3a0)
at gstbasicscheduler.c:327
#6 0x408a0a4e in cothread_stub () at cothreads.c:403
#7 0x408a0eec in cothread_switch (thread=0x41400000) at cothreads.c:599
#8 0x4089fa05 in gst_basic_scheduler_iterate (sched=0x80bb478) at gstbasicscheduler.c:1350
#9 0x40043762 in gst_scheduler_iterate (sched=0x80bb478) at gstscheduler.c:609
#10 0x4002910e in gst_bin_iterate_func (bin=0x80bb008) at gstbin.c:831
If i do some seeks then it freezes much sooner. i can only do 2-3 seeks
before it freezes. Here is the stack:
(gdb) thr 1
[Switching to thread 1 (Thread 1024 (LWP 10412))]#0 0x405fb84e in select ()
from /lib/libc.so.6
(gdb) where
#0 0x405fb84e in select () from /lib/libc.so.6
#1 0x40062bd0 in __DTOR_END__ ()
from /home/joshua/gst/gstreamer/gst/.libs/libgstreamer-0.4.0.1.so.0
#2 0x4002bc45 in gst_clock_wait (clock=0x80bd638, time=2962225777777, jitter=0x0)
at gstclock.c:393
#3 0x4089f72e in gst_basic_scheduler_clock_wait (sched=0x80ab270, element=0x80b08b0,
clock=0x80bd638, time=2962225777777, jitter=0x0) at gstbasicscheduler.c:1287
#4 0x400436ac in gst_scheduler_clock_wait (sched=0x80ab270, element=0x80b08b0,
clock=0x80bd638, time=2962225777777, jitter=0x0) at gstscheduler.c:588
#5 0x4002e60f in gst_element_clock_wait (element=0x80b08b0, clock=0x80bd638,
time=2962225777777, jitter=0x0) at gstelement.c:740
#6 0x408bbd0e in gst_mpeg_parse_loop (element=0x80b08b0) at gstmpegparse.c:419
#7 0x4089c497 in gst_basic_scheduler_loopfunc_wrapper (argc=0, argv=0x80b08b0)
at gstbasicscheduler.c:279
So in both cases, it gets stuck in clock_wait with a ridiculous timeout.
Shall i file a bug report?
--
Victory to the Divine Mother!! after all,
http://sahajayoga.org http://why-compete.org
More information about the gstreamer-devel
mailing list