[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