<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri, sans-serif" size="2">
<div style="text-align: justify; ">Hi,</div>
<div style="text-align: justify; "> I am developing a three pads camera source element. I created this element based on GstBaseSrc, and add another two pads to GstBaseSrc and created a new basesrc in my camera source. </div>
<div style="text-align: justify; ">My currently design is the vfsrc pad always has data flow. Another copy of data flow will be image or video depends on the mode setting to the camera source.</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; ">This pipeline is working now.</div>
<div style="text-align: justify; ">gst-launch -ev mfldv4l2camsrc num-buffers=2 .vfsrc ! video/x-raw-yuv,width=640,height=480 ! sdlvideosink</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">But if I want use the imgpad,</div>
<div style="text-align: justify; ">gst-launch -ev mfldv4l2camsrc num-buffers=2 name=aa  .imgsrc ! video/x-raw-yuv,width=640,height=480 ! fakesink  aa.vfsrc ! video/x-raw-yuv,width=640,height=480 ! sdlvideosink</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; "> the pipeline will stop at waiting for playing.</div>
<div style="text-align: justify; ">gst_base_sink_wait_preroll:&lt;sdlvideosink0&gt; waiting in preroll for flush or PLAYING</div>
<div style="text-align: justify; ">cat</div>
<div style="text-align: justify; ">What is the potential issue? </div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; ">This is my source code repository:</div>
<div style="text-align: justify; "><font face="Times New Roman, serif"><a href="http://meego.gitorious.org/maemo-multimedia/mfldv4l2camsrc/commits/camerabin2"><font face="Calibri, sans-serif" color="#0000FF"><u>http://meego.gitorious.org/maemo-multimedia/mfldv4l2camsrc/commits/camerabin2</u></font></a></font></div>
<div style="text-align: justify; ">This is the some of the log of the basesrc anb basesink.</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; ">gst_cam_base_src_init: creating vfsrc pad</div>
<div style="text-align: justify; ">gst_cam_base_src_init: creating imgsrc pad</div>
<div style="text-align: justify; ">gst_cam_base_src_init: creating vidsrc pad</div>
<div style="text-align: justify; ">gst_cam_base_src_init: setting functions on src pad</div>
<div style="text-align: justify; ">gst_cam_base_src_init: adding three src pads</div>
<div style="text-align: justify; ">gst_cam_base_src_init: init done</div>
<div style="text-align: justify; ">gst_cam_base_src_set_property:&lt;mfldv4l2camsrc0&gt; Setting pad mode: 1</div>
<div style="text-align: justify; ">gst_cam_base_src_set_pad_mode:&lt;mfldv4l2camsrc0&gt; Set pad mode to 1</div>
<div style="text-align: justify; ">gst_base_sink_change_state:&lt;sdlvideosink0&gt; READY to PAUSED</div>
<div style="text-align: justify; ">gst_base_sink_change_state:&lt;sdlvideosink0&gt; doing async state change</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;sdlvideosink0&gt; Trying pull mode first</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;sdlvideosink0&gt; pull mode disabled</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;sdlvideosink0&gt; Falling back to push mode</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;sdlvideosink0&gt; Success activating push mode</div>
<div style="text-align: justify; ">gst_base_sink_change_state:&lt;filesink0&gt; READY to PAUSED</div>
<div style="text-align: justify; ">gst_base_sink_change_state:&lt;filesink0&gt; doing async state change</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;filesink0&gt; Trying pull mode first</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;filesink0&gt; pull mode disabled</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;filesink0&gt; Falling back to push mode</div>
<div style="text-align: justify; ">gst_base_sink_pad_activate:&lt;filesink0&gt; Success activating push mode</div>
<div style="text-align: justify; ">gst_cam_base_src_activate_push:&lt;mfldv4l2camsrc0&gt; vidsrc activating in push mode</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; starting source of pad vidsrc</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; format: time, have size: 1, size: 18446744073709551615, duration: -1</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; is seekable: 0</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; is random_access: 0</div>
<div style="text-align: justify; ">gst_cam_base_src_negotiate:&lt;mfldv4l2camsrc0&gt; negotiate of pad vidsrc</div>
<div style="text-align: justify; ">gst_cam_base_src_activate_push:&lt;mfldv4l2camsrc0&gt; imgsrc activating in push mode</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; starting source of pad imgsrc</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; format: time, have size: 1, size: 18446744073709551615, duration: -1</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; is seekable: 0</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; is random_access: 0</div>
<div style="text-align: justify; ">gst_cam_base_src_negotiate:&lt;mfldv4l2camsrc0&gt; negotiate of pad imgsrc</div>
<div style="text-align: justify; ">gst_cam_base_src_activate_push:&lt;mfldv4l2camsrc0&gt; vfsrc activating in push mode</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; starting source of pad vfsrc</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; format: time, have size: 1, size: 18446744073709551615, duration: -1</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; is seekable: 0</div>
<div style="text-align: justify; ">gst_cam_base_src_start:&lt;mfldv4l2camsrc0&gt; is random_access: 0</div>
<div style="text-align: justify; ">gst_cam_base_src_negotiate:&lt;mfldv4l2camsrc0&gt; negotiate of pad vfsrc</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">gst_cam_base_src_perform_seek:&lt;mfldv4l2camsrc0&gt; doing seek: (NULL)</div>
<div style="text-align: justify; ">gst_cam_base_src_perform_seek:&lt;mfldv4l2camsrc0&gt; seek with seqnum 19</div>
<div style="text-align: justify; ">gst_cam_base_src_perform_seek:&lt;mfldv4l2camsrc0&gt; segment configured from 0 to -1, position 0</div>
<div style="text-align: justify; ">gst_cam_base_src_perform_seek:&lt;mfldv4l2camsrc0&gt; Sending newsegment from 0 to -1</div>
<div style="text-align: justify; ">gst_cam_base_src_loop:&lt;mfldv4l2camsrc0&gt; next_ts 99:99:99.999999999 size 4096</div>
<div style="text-align: justify; ">gst_cam_base_src_wait_playing:&lt;mfldv4l2camsrc0&gt; live source waiting for running state</div>
<div style="text-align: justify; ">gst_base_sink_query_latency:&lt;sdlvideosink0&gt; we are not yet ready for LATENCY query</div>
<div style="text-align: justify; ">gst_base_sink_query_latency:&lt;sdlvideosink0&gt; latency query failed and we are live</div>
<div style="text-align: justify; ">gst_base_sink_query:&lt;sdlvideosink0&gt; query latency returns 0</div>
<div style="text-align: justify; ">gst_base_sink_query_latency:&lt;filesink0&gt; we are not yet ready for LATENCY query</div>
<div style="text-align: justify; ">gst_base_sink_query_latency:&lt;filesink0&gt; latency query failed but we are not live</div>
<div style="text-align: justify; ">gst_base_sink_query_latency:&lt;filesink0&gt; latency query: live: 0, have_latency 0, upstream: 0, min 0:00:00.000000000, max 99:99:99.999999999</div>
<div style="text-align: justify; ">gst_base_sink_query:&lt;filesink0&gt; query latency returns 1</div>
<div style="text-align: justify; ">gst_cam_base_src_change_state:&lt;mfldv4l2camsrc0&gt; PAUSED-&gt;PLAYING</div>
<div style="text-align: justify; ">gst_cam_base_src_set_playing:&lt;mfldv4l2camsrc0&gt; unschedule clock</div>
<div style="text-align: justify; ">gst_cam_base_src_set_playing:&lt;mfldv4l2camsrc0&gt; live running 1</div>
<div style="text-align: justify; ">gst_cam_base_src_set_playing:&lt;mfldv4l2camsrc0&gt; unlock stop</div>
<div style="text-align: justify; ">gst_cam_base_src_set_playing:&lt;mfldv4l2camsrc0&gt; signal</div>
<div style="text-align: justify; ">gst_cam_base_src_wait_playing:&lt;mfldv4l2camsrc0&gt; live source unlocked</div>
<div style="text-align: justify; ">gst_cam_base_src_get_range:&lt;mfldv4l2camsrc0&gt; calling create offset 18446744073709551615 length 4096, time 0</div>
<div style="text-align: justify; ">gst_cam_base_src_do_sync:&lt;mfldv4l2camsrc0&gt; no latency needed, live 1, sync 0</div>
<div style="text-align: justify; ">gst_cam_base_src_do_sync:&lt;mfldv4l2camsrc0&gt; startup timestamp: 0:00:00.299494749, running_time 0:00:00.332892825</div>
<div style="text-align: justify; ">gst_cam_base_src_do_sync:&lt;mfldv4l2camsrc0&gt; no timestamp offset needed</div>
<div style="text-align: justify; ">gst_cam_base_src_do_sync:&lt;mfldv4l2camsrc0&gt; no sync needed</div>
<div style="text-align: justify; ">gst_cam_base_src_get_range:&lt;mfldv4l2camsrc0&gt; buffer ok</div>
<div style="text-align: justify; ">gst_base_sink_event:&lt;sdlvideosink0&gt; received event 0x8f49f68 newsegment event from 'vfsrc' at time 99:99:99.999999999: GstEventNewsegment, update=(boolean)false, rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_TIME,
start=(gint64)0, stop=(gint64)-1, position=(gint64)0;</div>
<div style="text-align: justify; ">gst_base_sink_event:&lt;sdlvideosink0&gt; newsegment 0x8f49f68</div>
<div style="text-align: justify; ">gst_base_sink_configure_segment:&lt;sdlvideosink0&gt; configured NEWSEGMENT update 0, rate 1.000000, applied rate 1.000000, format GST_FORMAT_TIME, 0:00:00.000000000 -- 99:99:99.999999999, time 0:00:00.000000000, accum 0:00:00.000000000</div>
<div style="text-align: justify; ">gst_base_sink_queue_object_unlocked:&lt;sdlvideosink0&gt; now 0 prerolled items</div>
<div style="text-align: justify; ">gst_base_sink_queue_object_unlocked:&lt;sdlvideosink0&gt; need more preroll data 0 &lt;= 0</div>
<div style="text-align: justify; ">gst_base_sink_chain_unlocked:&lt;sdlvideosink0&gt; got times start: 0:00:00.299494749, end: 0:00:00.332828082</div>
<div style="text-align: justify; ">gst_base_sink_queue_object_unlocked:&lt;sdlvideosink0&gt; now 1 prerolled items</div>
<div style="text-align: justify; ">gst_base_sink_preroll_object:&lt;sdlvideosink0&gt; prerolling object 0x8ddf300</div>
<div style="text-align: justify; ">gst_base_sink_preroll_object:&lt;sdlvideosink0&gt; preroll buffer 0:00:00.299494749</div>
<div style="text-align: justify; ">st_base_sink_set_last_buffer_unlocked:&lt;sdlvideosink0&gt; setting last buffer to 0x8ddf300</div>
<div style="text-align: justify; ">gst_base_sink_commit_state:&lt;sdlvideosink0&gt; commiting state to PAUSED</div>
<div style="text-align: justify; ">gst_base_sink_commit_state:&lt;sdlvideosink0&gt; posting PAUSED state change message</div>
<div style="text-align: justify; ">gst_base_sink_commit_state:&lt;sdlvideosink0&gt; posting async-done message</div>
<div style="text-align: justify; ">gst_base_sink_queue_object_unlocked:&lt;sdlvideosink0&gt; rendering queued object 0x8f49f68</div>
<div style="text-align: justify; ">gst_base_sink_do_sync:&lt;sdlvideosink0&gt; non syncable object 0x8f49f68</div>
<div style="text-align: justify; ">gst_base_sink_render_object:&lt;sdlvideosink0&gt; rendering event 0x8f49f68, type newsegment</div>
<div style="text-align: justify; ">gst_base_sink_render_object:&lt;sdlvideosink0&gt; Got seqnum #19</div>
<div style="text-align: justify; ">gst_base_sink_configure_segment:&lt;sdlvideosink0&gt; configured NEWSEGMENT update 0, rate 1.000000, applied rate 1.000000, format GST_FORMAT_TIME, 0:00:00.000000000 -- 99:99:99.999999999, time 0:00:00.000000000, accum 0:00:00.000000000</div>
<div style="text-align: justify; ">gst_base_sink_render_object:&lt;sdlvideosink0&gt; object unref after render 0x8f49f68</div>
<div style="text-align: justify; ">gst_base_sink_get_sync_times:&lt;sdlvideosink0&gt; got times start: 0:00:00.299494749, stop: 0:00:00.332828082, do_sync 1</div>
<div style="text-align: justify; ">gst_base_sink_do_preroll:&lt;sdlvideosink0&gt; prerolling object 0x8ddf300</div>
<div style="text-align: justify; ">gst_base_sink_preroll_object:&lt;sdlvideosink0&gt; prerolling object 0x8ddf300</div>
<div style="text-align: justify; ">gst_base_sink_wait_preroll:&lt;sdlvideosink0&gt; waiting in preroll for flush or PLAYING</div>
<div style="text-align: justify; ">3:gst_cam_base_src_event_handler:&lt;mfldv4l2camsrc0&gt; Hanlde event of pad vfsrc</div>
<div style="text-align: justify; ">1:gst_cam_base_src_default_event:&lt;mfldv4l2camsrc0&gt; handle event navigation event from 'src' at time 99:99:99.999999999: application/x-gst-navigation, event=(string)mouse-move, button=(int)0, pointer_x=(double)639, pointer_y=(double)179;</div>
<div style="text-align: justify; ">gst_cam_base_src_event_handler:&lt;mfldv4l2camsrc0&gt; Hanlde event of pad vfsrc</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">gst_cam_base_src_change_state:&lt;mfldv4l2camsrc0&gt; PLAYING-&gt;PAUSED</div>
<div style="text-align: justify; ">gst_cam_base_src_set_playing:&lt;mfldv4l2camsrc0&gt; unlock</div>
<div style="text-align: justify; ">gst_cam_base_src_set_playing:&lt;mfldv4l2camsrc0&gt; unschedule clock</div>
<div style="text-align: justify; ">gst_cam_base_src_set_playing:&lt;mfldv4l2camsrc0&gt; live running 0</div>
<div style="text-align: justify; ">gst_base_sink_set_flushing:&lt;sdlvideosink0&gt; flushing out data thread, need preroll to TRUE</div>
<div style="text-align: justify; ">gst_base_sink_preroll_queue_flush:&lt;sdlvideosink0&gt; flushing queue 0x8e8c0a0</div>
<div style="text-align: justify; "><font size="4"><b>gst_base_sink_wait_preroll:&lt;sdlvideosink0&gt; preroll interrupted because of flush</b></font></div>
<div style="text-align: justify; "><font size="4"><b>gst_base_sink_do_preroll:&lt;sdlvideosink0&gt; preroll failed -2</b></font></div>
<div style="text-align: justify; "><font size="4"><b>gst_base_sink_do_sync:&lt;sdlvideosink0&gt; preroll failed</b></font></div>
<div style="text-align: justify; ">gst_base_sink_render_object:&lt;sdlvideosink0&gt; do_sync returned wrong-state</div>
<div style="text-align: justify; ">gst_base_sink_render_object:&lt;sdlvideosink0&gt; object unref after render 0x8ddf300</div>
<div style="text-align: justify; ">gst_cam_base_src_loop:&lt;mfldv4l2camsrc0&gt; pausing after gst_pad_push() to vfpad = wrong-state</div>
<div style="text-align: justify; ">gst_cam_base_src_loop:&lt;mfldv4l2camsrc0&gt; pausing task, reason wrong-state</div>
<div style="text-align: justify; ">st_base_sink_set_last_buffer_unlocked:&lt;sdlvideosink0&gt; setting last buffer to (nil)</div>
<div style="text-align: justify; ">gst_base_sink_change_state:&lt;sdlvideosink0&gt; PAUSED to READY, don't need_preroll</div>
<div style="text-align: justify; ">gst_base_sink_set_flushing:&lt;filesink0&gt; flushing out data thread, need preroll to TRUE</div>
<div style="text-align: justify; ">gst_base_sink_preroll_queue_flush:&lt;filesink0&gt; flushing queue 0x8e86288</div>
<div style="text-align: justify; ">gst_base_sink_change_state:&lt;filesink0&gt; PAUSED to READY, posting async-done</div>
<div style="text-align: justify; ">gst_cam_base_src_activate_push:&lt;mfldv4l2camsrc0&gt; Deactivating in push mode</div>
<div style="text-align: justify; ">gst_cam_base_src_activate_push:&lt;mfldv4l2camsrc0&gt; Deactivating in push mode</div>
<div style="text-align: justify; ">gst_cam_base_src_activate_push:&lt;mfldv4l2camsrc0&gt; Deactivating in push mode</div>
<div style="text-align: justify; ">gst_cam_base_src_stop:&lt;mfldv4l2camsrc0&gt; stopping source</div>
<div style="text-align: justify; ">gst_cam_base_src_change_state:&lt;mfldv4l2camsrc0&gt; Sending EOS event</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; ">Thanks.</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
</font>
</body>
</html>