コード例 #1
0
gboolean
gst_droidcamsrc_dev_restart (GstDroidCamSrcDev * dev)
{
  gboolean ret = FALSE;

  g_rec_mutex_lock (dev->lock);

  GST_DEBUG ("dev restart");

  if (dev->running) {
    gst_droidcamsrc_dev_stop (dev);
    ret = gst_droidcamsrc_dev_start (dev, TRUE);
  } else {
    ret = TRUE;
  }

  g_rec_mutex_unlock (dev->lock);

  return ret;
}
コード例 #2
0
gboolean
gst_droidcamsrc_mode_activate (GstDroidCamSrcMode * mode)
{
  gboolean ret;
  gboolean running;

  g_rec_mutex_lock (&mode->src->dev_lock);

  if (!mode->src->dev) {
    GST_INFO_OBJECT (mode->src, "dev not ready. deferring caps negotiation");

    g_rec_mutex_unlock (&mode->src->dev_lock);
    return TRUE;
  }

  running = gst_droidcamsrc_dev_is_running (mode->src->dev);

  if (running) {
    gst_droidcamsrc_dev_stop (mode->src->dev);
  }

  gst_droidcamsrc_mode_negotiate_pad (mode, mode->modesrc, FALSE);
  gst_droidcamsrc_mode_negotiate_pad (mode, mode->vfsrc, TRUE);

  if (running) {
    ret = gst_droidcamsrc_dev_start (mode->src->dev, FALSE);
  } else {
    ret = gst_droidcamsrc_apply_params (mode->src);
  }

  /* now update max-zoom that we have a preview size */
  gst_droidcamsrc_dev_update_params (mode->src->dev);
  gst_droidcamsrc_update_max_zoom (mode->src);

  g_rec_mutex_unlock (&mode->src->dev_lock);

  return ret;
}
コード例 #3
0
gboolean
gst_droidcamsrc_mode_negotiate (GstDroidCamSrcMode * mode, GstPad * pad)
{
  gboolean ret;
  gboolean running;

  g_rec_mutex_lock (&mode->src->dev_lock);

  running = gst_droidcamsrc_dev_is_running (mode->src->dev);

  if (running && pad == mode->vfsrc) {
    /* stop preview */
    gst_droidcamsrc_dev_stop (mode->src->dev);
  }

  gst_droidcamsrc_mode_negotiate_pad (mode, pad, FALSE);

  if (pad == mode->vfsrc) {
    /* start which will also apply the settings */
    if (running) {
      ret = gst_droidcamsrc_dev_start (mode->src->dev, FALSE);
    } else {
      ret = gst_droidcamsrc_apply_params (mode->src);
    }

    /* now update max-zoom that we have a preview size */
    gst_droidcamsrc_dev_update_params (mode->src->dev);
    gst_droidcamsrc_update_max_zoom (mode->src);
  } else {
    /* apply settings */
    ret = gst_droidcamsrc_dev_set_params (mode->src->dev);
  }

  g_rec_mutex_unlock (&mode->src->dev_lock);

  return ret;
}