int main(int args, char *argv[]) { droid_media_init(); int cameras = droid_media_camera_get_number_of_cameras(); printf("%d cameras\n", cameras); for (int x = 0; x < cameras; x++) { DroidMediaCameraInfo info; if (!droid_media_camera_get_info(&info, x)) { printf("Failed to get camera %d info\n", x); } printf("Camera %d: Orientation: %d, facing: %d\n", x, info.orientation, info.facing); printf("Initializing camera %d\n", x); DroidMediaCamera *cam = droid_media_camera_connect(x); if (!cam) { printf("Failed\n"); continue; } printf("Starting\n"); if (!droid_media_camera_lock(cam)) { printf("Failed to lock camera\n"); continue; } if (!droid_media_camera_start_preview(cam)) { printf("Failed\n"); droid_media_camera_disconnect(cam); continue; } printf("Started\n"); sleep(2); printf("Stopping\n"); droid_media_camera_stop_preview(cam); droid_media_camera_unlock(cam); printf("Stopped\n"); droid_media_camera_disconnect(cam); } droid_media_deinit(); }
void gst_droidcamsrc_dev_stop (GstDroidCamSrcDev * dev) { g_rec_mutex_lock (dev->lock); GST_DEBUG ("dev stop"); if (dev->running) { GST_DEBUG ("stopping preview"); gst_buffer_pool_set_active (dev->pool, FALSE); droid_media_camera_stop_preview (dev->cam); dev->running = FALSE; GST_DEBUG ("stopped preview"); } /* Now we need to empty the queue */ g_mutex_lock (&dev->vfsrc->lock); g_queue_foreach (dev->vfsrc->queue, (GFunc) gst_buffer_unref, NULL); g_queue_clear (dev->vfsrc->queue); g_mutex_unlock (&dev->vfsrc->lock); g_rec_mutex_unlock (dev->lock); }