camerabin: use nonbuffered io to save memcopies
authorStefan Kost <ensonic@users.sf.net>
Wed, 15 Jul 2009 14:44:10 +0000 (17:44 +0300)
committerStefan Kost <ensonic@users.sf.net>
Wed, 15 Jul 2009 14:44:10 +0000 (17:44 +0300)
We write large blocks anyway, so no extra buffering please. Also use one
g_object_set to set multiple properties on same object.

gst/camerabin/camerabinimage.c
gst/camerabin/camerabinvideo.c

index 8eea8d9..25730cc 100644 (file)
@@ -463,15 +463,13 @@ gst_camerabin_image_create_elements (GstCameraBinImage * img)
     g_object_set (G_OBJECT (img->meta_mux), "exif-byte-order", 1, NULL);
   }
 
-  /* Create file sink element */
+  /* Add sink element for storing the image */
   if (!(img->sink =
           gst_camerabin_create_and_add_element (imgbin, DEFAULT_SINK))) {
     goto done;
   }
-
-  /* Set properties */
-  g_object_set (G_OBJECT (img->sink), "location", img->filename->str, NULL);
-  g_object_set (G_OBJECT (img->sink), "async", FALSE, NULL);
+  g_object_set (G_OBJECT (img->sink), "location", img->filename->str, "async", FALSE, "buffer-mode", 2, /* non buffered io */
+      NULL);
 
   ret = TRUE;
 
index 4bbc505..40a2bfa 100644 (file)
@@ -600,8 +600,8 @@ gst_camerabin_video_create_elements (GstCameraBinVideo * vid)
           gst_camerabin_create_and_add_element (vidbin, DEFAULT_SINK))) {
     goto error;
   }
-  g_object_set (G_OBJECT (vid->sink), "location", vid->filename->str, NULL);
-
+  g_object_set (G_OBJECT (vid->sink), "location", vid->filename->str, "buffer-mode", 2, /* non buffered io */
+      NULL);
 
   /* Add user set or default audio source element */
   if (vid->user_aud_src) {