qcamsrc: send camera settings as a group
This commit is contained in:
parent
9a99935cad
commit
8dcf24d0f3
@ -268,7 +268,6 @@ static void
|
|||||||
gst_qcamsrc_set_exposure (GstQcamSrc * src, unsigned long exposure)
|
gst_qcamsrc_set_exposure (GstQcamSrc * src, unsigned long exposure)
|
||||||
{
|
{
|
||||||
QCam_SetParam (&src->qsettings, qprmExposure, exposure);
|
QCam_SetParam (&src->qsettings, qprmExposure, exposure);
|
||||||
QCam_SendSettingsToCam (src->handle, &src->qsettings);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -276,14 +275,12 @@ gst_qcamsrc_set_gain (GstQcamSrc * src, float gain)
|
|||||||
{
|
{
|
||||||
QCam_SetParam (&src->qsettings, qprmNormalizedGain,
|
QCam_SetParam (&src->qsettings, qprmNormalizedGain,
|
||||||
(unsigned long) (gain * 1000000));
|
(unsigned long) (gain * 1000000));
|
||||||
QCam_SendSettingsToCam (src->handle, &src->qsettings);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_qcamsrc_set_offset (GstQcamSrc * src, long offset)
|
gst_qcamsrc_set_offset (GstQcamSrc * src, long offset)
|
||||||
{
|
{
|
||||||
QCam_SetParamS32 (&src->qsettings, qprmS32AbsoluteOffset, offset);
|
QCam_SetParamS32 (&src->qsettings, qprmS32AbsoluteOffset, offset);
|
||||||
QCam_SendSettingsToCam (src->handle, &src->qsettings);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -307,18 +304,15 @@ gst_qcamsrc_set_property (GObject * object, guint property_id,
|
|||||||
break;
|
break;
|
||||||
case PROP_EXPOSURE:
|
case PROP_EXPOSURE:
|
||||||
src->exposure = g_value_get_uint (value);
|
src->exposure = g_value_get_uint (value);
|
||||||
if (src->handle)
|
src->send_settings = TRUE;
|
||||||
gst_qcamsrc_set_exposure (src, src->exposure);
|
|
||||||
break;
|
break;
|
||||||
case PROP_GAIN:
|
case PROP_GAIN:
|
||||||
src->gain = g_value_get_double (value);
|
src->gain = g_value_get_double (value);
|
||||||
if (src->handle)
|
src->send_settings = TRUE;
|
||||||
gst_qcamsrc_set_gain (src, src->gain);
|
|
||||||
break;
|
break;
|
||||||
case PROP_OFFSET:
|
case PROP_OFFSET:
|
||||||
src->offset = g_value_get_int (value);
|
src->offset = g_value_get_int (value);
|
||||||
if (src->handle)
|
src->send_settings = TRUE;
|
||||||
gst_qcamsrc_set_offset (src, src->offset);
|
|
||||||
break;
|
break;
|
||||||
case PROP_FORMAT:
|
case PROP_FORMAT:
|
||||||
src->format = g_value_get_int (value);
|
src->format = g_value_get_int (value);
|
||||||
@ -528,6 +522,8 @@ gst_qcamsrc_setup_stream (GstQcamSrc * src)
|
|||||||
gst_qcamsrc_set_exposure (src, src->exposure);
|
gst_qcamsrc_set_exposure (src, src->exposure);
|
||||||
gst_qcamsrc_set_gain (src, src->gain);
|
gst_qcamsrc_set_gain (src, src->gain);
|
||||||
gst_qcamsrc_set_offset (src, src->offset);
|
gst_qcamsrc_set_offset (src, src->offset);
|
||||||
|
QCam_SendSettingsToCam (src->handle, &src->qsettings);
|
||||||
|
src->send_settings = FALSE;
|
||||||
|
|
||||||
err = QCam_GetInfo (src->handle, qinfCcdWidth, &width);
|
err = QCam_GetInfo (src->handle, qinfCcdWidth, &width);
|
||||||
err = QCam_GetInfo (src->handle, qinfCcdHeight, &height);
|
err = QCam_GetInfo (src->handle, qinfCcdHeight, &height);
|
||||||
@ -723,6 +719,14 @@ gst_qcamsrc_create (GstPushSrc * psrc, GstBuffer ** buf)
|
|||||||
return GST_FLOW_FLUSHING;
|
return GST_FLOW_FLUSHING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (src->handle && src->send_settings) {
|
||||||
|
gst_qcamsrc_set_exposure (src, src->exposure);
|
||||||
|
gst_qcamsrc_set_gain (src, src->gain);
|
||||||
|
gst_qcamsrc_set_offset (src, src->offset);
|
||||||
|
QCam_QueueSettings (src->handle, &src->qsettings, NULL, 0, 0, 0);
|
||||||
|
src->send_settings = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,6 +41,7 @@ struct _GstQcamSrc
|
|||||||
|
|
||||||
/* camera handle */
|
/* camera handle */
|
||||||
QCam_Handle handle;
|
QCam_Handle handle;
|
||||||
|
gboolean send_settings;
|
||||||
QCam_Settings qsettings;
|
QCam_Settings qsettings;
|
||||||
|
|
||||||
/* properties */
|
/* properties */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user