コード例 #1
0
ファイル: camera_control.c プロジェクト: ammonriley/darktable
void dt_camctl_camera_capture(const dt_camctl_t *c,const dt_camera_t *cam)
{
  dt_camctl_t *camctl=(dt_camctl_t *)c;
  if( !cam && (cam = camctl->active_camera) == NULL )
  {
    dt_print(DT_DEBUG_CAMCTL,"[camera_control] Failed to capture from camera, camera==NULL\n");
    return;
  }
  dt_camera_t *camera=(dt_camera_t *)cam;

  _camctl_camera_job_t *job=g_malloc(sizeof(_camctl_camera_job_t));
  job->type=_JOB_TYPE_EXECUTE_CAPTURE;
  _camera_add_job( camctl, camera, job);

}
コード例 #2
0
ファイル: camera_control.c プロジェクト: ammonriley/darktable
void dt_camctl_camera_set_property(const dt_camctl_t *c,const dt_camera_t *cam,const char *property_name, const char *value)
{
  dt_camctl_t *camctl=(dt_camctl_t *)c;
  if( !cam && (cam = camctl->active_camera) == NULL && (cam = camctl->wanted_camera) == NULL )
  {
    dt_print(DT_DEBUG_CAMCTL,"[camera_control] failed to set property from camera, camera==NULL\n");
    return;
  }
  dt_camera_t *camera=(dt_camera_t *)cam;

  _camctl_camera_set_property_job_t *job=g_malloc(sizeof(_camctl_camera_set_property_job_t));
  job->type=_JOB_TYPE_SET_PROPERTY;
  job->name=g_strdup(property_name);
  job->value=g_strdup(value);

  // Push the job on the jobqueue
  _camera_add_job( camctl, camera, job);
}
コード例 #3
0
ファイル: camera_control.c プロジェクト: chubinou/darktable
static void *dt_camctl_camera_get_live_view(void* data)
{
  dt_camctl_t *camctl = (dt_camctl_t*)data;
  dt_camera_t *cam = (dt_camera_t*)camctl->active_camera;
  dt_print (DT_DEBUG_CAMCTL,"[camera_control] live view thread started\n");

  int frames= 0;
  double capture_time = dt_get_wtime();

  while(cam->is_live_viewing == TRUE)
  {
    dt_pthread_mutex_lock(&cam->live_view_synch);

    // calculate FPS
    double current_time = dt_get_wtime();
    if(current_time - capture_time >= 1.0)
    {
      // a second has passed
      dt_print(DT_DEBUG_CAMCTL, "%d fps\n", frames+1);
      frames = 0;
      capture_time = current_time;
    }
    else
    {
      // just increase the frame counter
      frames++;
    }

    _camctl_camera_job_t *job = g_malloc(sizeof(_camctl_camera_job_t));
    job->type = _JOB_TYPE_EXECUTE_LIVE_VIEW;
    _camera_add_job( camctl, cam, job);

    g_usleep((1.0/15)*G_USEC_PER_SEC); // never update faster than 15 FPS. going too fast will result in too many redraws without a real benefit
  }
  dt_print (DT_DEBUG_CAMCTL,"[camera_control] live view thread stopped\n");
  return NULL;
}