I have a pipeline that combines three incoming streams (webcam, desktop capture, and a logo) into one movie using the videomixer plugin. I created the pipeline in text and load it into my program with gst_parse_launch. The pipeline description looks like this:<div>
<div><br></div><div><br></div><div><div> desktop. ! queue </div><div> ! ffmpegcolorspace</div><div> ! videoscale</div><div> ! video/x-raw-yuv,width=640,height=400</div><div>
! videobox right=-320</div><div> ! ffmpegcolorspace</div><div> ! vmix.sink_0</div><div> webcam. ! queue</div><div> ! ffmpegcolorspace</div><div> ! videoscale</div>
<div> ! video/x-raw-yuv,width=320,height=240</div><div> ! vmix.sink_1</div><div> logo. ! queue</div><div> ! jpegdec</div><div> ! ffmpegcolorspace</div><div> ! videoscale</div>
<div> ! video/x-raw-yuv,width=320,height=160</div><div> ! vmix.sink_2</div><div> vmix. ! queue </div><div> ! ffmpegcolorspace</div><div> ! dshowvideosink</div><div> dx9screencapsrc name="desktop"</div>
<div> ksvideosrc device-name="Built-in iSight" name="webcam"</div><div> multifilesrc name="logo" location="chrome/skin/ivpv.jpg"</div><div> videomixer name=vmix</div>
<div> sink_0::xpos=0 sink_0::ypos=0 sink_0::zorder=0</div><div> sink_1::xpos=640 sink_1::ypos=0 sink_1::zorder=1</div><div> sink_2::xpos=640 sink_2::ypos=240 sink_2::zorder=2</div>
<div><br></div><div>The pipeline is playable, but the webcam is terribly out of sync. The desktop capture is fine. If I leave out the desktop capture element and only combine the webcam and the logo image then it's also fine. It seems that only the combination of the desktop and webcam capture is problematic.</div>
<div><br></div><div>Any idea on how I should fix this?</div><div><br></div><div>Francis</div><div><br></div></div></div>