Modify condition to wait returned buffer in preview cb 03/219303/4
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 4 Dec 2019 06:53:24 +0000 (15:53 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Fri, 6 Dec 2019 06:14:12 +0000 (15:14 +0900)
- No need to wait when non-zero copy buffer is used.
- Need to wait when user callback is set.

[Version] 0.3.26
[Profile] Common
[Issue Type] Update

Change-Id: If1b2c9aa5b903ddc31875bfb4cb9571fc1b70cf2
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
muse/include/muse_camera_internal.h
muse/src/muse_camera_dispatcher.c
packaging/mmsvc-camera.spec

index cb087dd..2c8645d 100644 (file)
@@ -30,8 +30,9 @@ extern "C" {
 #include <muse_camera.h>
 #include <legacy_camera_internal.h>
 
-#define PREVIEW_CB_TYPE_USER 0x0000000F
-#define PREVIEW_CB_TYPE_EVAS 0x000000F0
+#define PREVIEW_CB_TYPE_USER            0x0000000F
+#define PREVIEW_CB_TYPE_EVAS            0x000000F0
+#define PREVIEW_CB_TYPE_MEDIA_PACKET    0x00000F00
 
 #define CHECK_PREVIEW_CB(muse_camera, cb_type) ((muse_camera)->preview_cb_flag & cb_type)
 #define SET_PREVIEW_CB_TYPE(muse_camera, cb_type) ((muse_camera)->preview_cb_flag |= cb_type)
index 8bc18ad..8927514 100644 (file)
@@ -1154,16 +1154,12 @@ void _camera_dispatcher_preview_cb(MMCamcorderVideoStreamDataType *stream, void
 
        muse_core_msg_free(send_message);
 
-       /*LOGD("wait preview callback return message");*/
-
-       if (!CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_EVAS) && send_ret > 0) {
+       if (stream->bo[0] && send_ret > 0 &&
+               CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_USER) &&
+               CHECK_PREVIEW_CB(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET)) {
                gint64 end_time = g_get_monotonic_time() + G_TIME_SPAN_SECOND;
-
-               if (!g_cond_wait_until(&muse_camera->preview_cb_cond, &muse_camera->preview_cb_lock, end_time)) {
+               if (!g_cond_wait_until(&muse_camera->preview_cb_cond, &muse_camera->preview_cb_lock, end_time))
                        LOGW("preview callback return message timeout");
-               } else {
-                       /*LOGD("preview callback return message received");*/
-               }
        }
 
        g_mutex_unlock(&muse_camera->preview_cb_lock);
@@ -1457,8 +1453,11 @@ static void __camera_task_process_job(muse_camera_handle_s *muse_camera, muse_ca
                ret = legacy_camera_set_media_packet_preview_cb(muse_camera->camera_handle,
                        (camera_preview_cb)_camera_dispatcher_preview_cb,
                        (void *)muse_camera->module);
+               if (ret == CAMERA_ERROR_NONE)
+                       SET_PREVIEW_CB_TYPE(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET);
                break;
        case MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_CB:
+               UNSET_PREVIEW_CB_TYPE(muse_camera, PREVIEW_CB_TYPE_MEDIA_PACKET);
                ret = legacy_camera_unset_media_packet_preview_cb(muse_camera->camera_handle);
                break;
        default:
index 2f1e4c8..0022046 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-camera
 Summary:    A Camera module for muse server
-Version:    0.3.25
+Version:    0.3.26
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0