Add video encoder resource conflict handling
[platform/core/multimedia/libmm-camcorder.git] / src / include / mm_camcorder_resource.h
1 /*
2  * libmm-camcorder
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Heechul Jeon <heechul.jeon@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 #ifndef __MM_CAMCORDER_RESOURCE_H__
23 #define __MM_CAMCORDER_RESOURCE_H__
24
25 #include <murphy/plugins/resource-native/libmurphy-resource/resource-api.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 #define __MMCAMCORDER_RESOURCE_WAIT_TIME        3
32
33 typedef enum {
34         MM_CAMCORDER_RESOURCE_TYPE_CAMERA,
35         MM_CAMCORDER_RESOURCE_TYPE_VIDEO_OVERLAY,
36         MM_CAMCORDER_RESOURCE_TYPE_VIDEO_ENCODER,
37         MM_CAMCORDER_RESOURCE_MAX
38 } MMCamcorderResourceType;
39
40 typedef enum {
41         MM_CAMCORDER_RESOURCE_ID_MAIN,
42         MM_CAMCORDER_RESOURCE_ID_SUB
43 } MMCamcorderResourceID;
44
45 typedef struct {
46         MMCamcorderResourceID id;
47         mrp_mainloop_t *mloop;
48         mrp_res_context_t *context;
49         mrp_res_resource_set_t *rset;
50         gboolean is_connected;
51         gboolean is_release_cb_calling;
52         int acquire_count;
53         int acquire_remain;
54         void *hcamcorder;
55 } MMCamcorderResourceManager;
56
57 int _mmcamcorder_resource_manager_init(MMCamcorderResourceManager *resource_manager);
58 int _mmcamcorder_resource_wait_for_connection(MMCamcorderResourceManager *resource_manager);
59 int _mmcamcorder_resource_check_connection(MMCamcorderResourceManager *resource_manager);
60 int _mmcamcorder_resource_create_resource_set(MMCamcorderResourceManager *resource_manager);
61 int _mmcamcorder_resource_manager_prepare(MMCamcorderResourceManager *resource_manager, MMCamcorderResourceType resource_type);
62 int _mmcamcorder_resource_manager_acquire(MMCamcorderResourceManager *resource_manager);
63 int _mmcamcorder_resource_manager_release(MMCamcorderResourceManager *resource_manager);
64 int _mmcamcorder_resource_manager_deinit(MMCamcorderResourceManager *resource_manager);
65
66 #ifdef __cplusplus
67 }
68 #endif
69
70 #endif /* __MM_PLAYER_RESOURCE_H__ */