[gst-devel] gst 0.10 / avisynth 3.0 : thread problem (I think)

Vincent Torri Vincent.Torri at iecn.u-nancy.fr
Sun Mar 26 11:24:01 CEST 2006


hey,

i try to use gstreamer 0.10 in avisynth 3.0. I think that I have a thread
problem. Avisynth and gstreamer run in their own thread. The gstreamer
pipeline is simple :

filesrc ! decodebin ! fakesink(s)

When I seek to a frame, I use a mutex, a condition and a boolean, which I
store in a class (yes, it's c++ :) ). I do exactly that :

1) I lock the mutex
2) I seek (on the pipeline) to the time corresponding to the frame number
3) I set the pipeline to the PLAY state
4) while (!my_boolean) I wait
5) my_boolean = false
6) I unlock the mutex

When the handoff signal is sent, a callback is called. I do that in the
callback :

1) i skip the incorrect frames
2) When the correct frame is found :
  a) I lock the mutex
  b) I store the buffer (I increase its ref)
  c) I set the pipeline on PAUSED
  d) my_boolean = true
  e) I broadcast
  f) I unlock the mutex

It seeks to the correct frame, but the test program locks, when the
pipeline is set on the PAUSE state (step 2) c) )

I've tried to find out why for 1 week, but without success. Does someone
know why ? Is there something special when a pipeline goes from the PLAY
to the PAUSE state ?

thank you

Vincent




More information about the gstreamer-devel mailing list