diff options
-rw-r--r-- | sys/androidcamera/gstahcsrc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/androidcamera/gstahcsrc.c b/sys/androidcamera/gstahcsrc.c index ba66bef23..5745bd543 100644 --- a/sys/androidcamera/gstahcsrc.c +++ b/sys/androidcamera/gstahcsrc.c @@ -43,6 +43,8 @@ static gboolean gst_ahc_src_unlock (GstBaseSrc * bsrc); static gboolean gst_ahc_src_unlock_stop (GstBaseSrc * bsrc); static GstFlowReturn gst_ahc_src_create (GstPushSrc * src, GstBuffer ** buffer); +#define NUM_CALLBACK_BUFFERS 5 + #define GST_AHC_SRC_CAPS_STR \ GST_VIDEO_CAPS_YUV (" { YV12 , YUY2 , NV21 , NV16 }") ";" \ GST_VIDEO_CAPS_RGB_16 @@ -262,6 +264,7 @@ gst_ahc_src_open (GstAHCSrc * self) GST_WARNING_OBJECT (self, "Opened camera"); if (params) { GstAHCSize *size; + int i; GST_WARNING_OBJECT (self, "Params : %s", gst_ahc_parameters_flatten (params)); @@ -286,12 +289,13 @@ gst_ahc_src_open (GstAHCSrc * self) self); gst_ah_camera_set_preview_callback_with_buffer (self->camera, gst_ahc_src_on_preview_frame, self); - gst_ah_camera_add_callback_buffer (self->camera, - (*env)->NewByteArray (env, self->buffer_size)); - gst_ah_camera_add_callback_buffer (self->camera, - (*env)->NewByteArray (env, self->buffer_size)); - gst_ah_camera_add_callback_buffer (self->camera, - (*env)->NewByteArray (env, self->buffer_size)); + + for (i = 0; i < NUM_CALLBACK_BUFFERS; i++) { + jbyteArray array = (*env)->NewByteArray (env, self->buffer_size); + + gst_ah_camera_add_callback_buffer (self->camera, array); + (*env)->DeleteLocalRef (env, array); + } { GList *list, *i; |