diff options
author | Tommi Myöhänen <ext-tommi.1.myohanen@nokia.com> | 2009-07-31 11:57:12 +0300 |
---|---|---|
committer | René Stadler <rene.stadler@nokia.com> | 2009-10-01 18:06:53 +0300 |
commit | b2fc088c84c7381cf64fdf1398bd9a9f19dbdfcb (patch) | |
tree | 947c26a8e5cedfcc02ae24759ece502b5ccfa7f0 | |
parent | 7b62e11412f680550c0bd7e98f3868620dd7754e (diff) |
camerabin: reset active-pad in output-selector after READY state
Camerabin sets itself to READY state during resolution change. This
operation makes output-selector to forget its currently active pad,
so it must be set again after state change.
-rw-r--r-- | gst/camerabin/gstcamerabin.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c index b449aa925..3d367ace0 100644 --- a/gst/camerabin/gstcamerabin.c +++ b/gst/camerabin/gstcamerabin.c @@ -3219,6 +3219,7 @@ gst_camerabin_user_res_fps (GstCameraBin * camera, gint width, gint height, gint fps_n, gint fps_d) { GstState state, pending; + GstPad *activepad; GST_INFO_OBJECT (camera, "switching resolution to %dx%d and fps to %d/%d", width, height, fps_n, fps_d); @@ -3226,6 +3227,8 @@ gst_camerabin_user_res_fps (GstCameraBin * camera, gint width, gint height, /* Interrupt ongoing capture */ gst_camerabin_do_stop (camera); + g_object_get (G_OBJECT (camera->src_out_sel), "active-pad", &activepad, NULL); + gst_element_get_state (GST_ELEMENT (camera), &state, &pending, 0); if (state == GST_STATE_PAUSED || state == GST_STATE_PLAYING) { GST_INFO_OBJECT (camera, @@ -3241,6 +3244,16 @@ gst_camerabin_user_res_fps (GstCameraBin * camera, gint width, gint height, gst_element_state_get_name (pending)); state = pending; } + + /* Re-set the active pad since switching camerabin to READY state clears this + * setting in output-selector */ + if (activepad) { + GST_INFO_OBJECT (camera, "re-setting active pad in output-selector"); + + g_object_set (G_OBJECT (camera->src_out_sel), "active-pad", activepad, + NULL); + } + gst_element_set_state (GST_ELEMENT (camera), state); } |