1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
|
/* Copyright (c) 2012, 2014-2015, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __MM_QCAMERA_APP_H__
#define __MM_QCAMERA_APP_H__
#include <pthread.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <poll.h>
#include <linux/fb.h>
#include <linux/msm_mdp.h>
#include <semaphore.h>
#include "mm_camera_interface.h"
#include "mm_jpeg_interface.h"
#include "mm_qcamera_socket.h"
#define MM_QCAMERA_APP_INTERATION 1
#define MM_APP_MAX_DUMP_FRAME_NUM 1000
#define PREVIEW_BUF_NUM 7
#define VIDEO_BUF_NUM 7
#define ISP_PIX_BUF_NUM 9
#define STATS_BUF_NUM 4
#define RDI_BUF_NUM 8
#define CAPTURE_BUF_NUM 5
#define DEFAULT_PREVIEW_FORMAT CAM_FORMAT_YUV_420_NV21
#define DEFAULT_PREVIEW_WIDTH 640
#define DEFAULT_PREVIEW_HEIGHT 480
#define DEFAULT_PREVIEW_PADDING CAM_PAD_TO_WORD
#define DEFAULT_VIDEO_FORMAT CAM_FORMAT_YUV_420_NV12
#define DEFAULT_VIDEO_WIDTH 800
#define DEFAULT_VIDEO_HEIGHT 480
#define DEFAULT_VIDEO_PADDING CAM_PAD_TO_2K
#define DEFAULT_SNAPSHOT_FORMAT CAM_FORMAT_YUV_420_NV21
#define DEFAULT_RAW_FORMAT CAM_FORMAT_BAYER_QCOM_RAW_10BPP_GBRG
#define DEFAULT_SNAPSHOT_WIDTH 1024
#define DEFAULT_SNAPSHOT_HEIGHT 768
#define DEFAULT_SNAPSHOT_PADDING CAM_PAD_TO_WORD
#define DEFAULT_OV_FORMAT MDP_Y_CRCB_H2V2
#define DEFAULT_OV_FORMAT_BPP 3/2
#define DEFAULT_CAMERA_FORMAT_BPP 3/2
#define FB_PATH "/dev/graphics/fb0"
#define BACKLIGHT_CONTROL "/sys/class/leds/lcd-backlight/brightness"
#define BACKLIGHT_LEVEL "205"
#define ENABLE_REPROCESSING 1
#define INVALID_KEY_PRESS 0
#define BASE_OFFSET ('Z' - 'A' + 1)
#define BASE_OFFSET_NUM ('Z' - 'A' + 2)
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
typedef enum {
TUNE_CMD_INIT,
TUNE_CMD_GET_LIST,
TUNE_CMD_GET_PARAMS,
TUNE_CMD_SET_PARAMS,
TUNE_CMD_MISC,
TUNE_CMD_DEINIT,
} mm_camera_tune_cmd_t;
typedef enum {
TUNE_PREVCMD_INIT,
TUNE_PREVCMD_SETDIM,
TUNE_PREVCMD_GETINFO,
TUNE_PREVCMD_GETCHUNKSIZE,
TUNE_PREVCMD_GETFRAME,
TUNE_PREVCMD_UNSUPPORTED,
TUNE_PREVCMD_DEINIT,
} mm_camera_tune_prevcmd_t;
typedef void (*cam_stream_user_cb) (mm_camera_buf_def_t *frame);
typedef void (*prev_callback) (mm_camera_buf_def_t *preview_frame);
typedef struct {
char *send_buf;
uint32_t send_len;
void *next;
} eztune_prevcmd_rsp;
typedef struct {
int (*command_process) (void *recv, mm_camera_tune_cmd_t cmd,
void *param, char *send_buf, uint32_t send_len);
int (*prevcommand_process) (void *recv, mm_camera_tune_prevcmd_t cmd,
void *param, char **send_buf, uint32_t *send_len);
void (*prevframe_callback) (mm_camera_buf_def_t *preview_frame);
} mm_camera_tune_func_t;
typedef struct {
mm_camera_tune_func_t *func_tbl;
void *lib_handle;
}mm_camera_tuning_lib_params_t;
typedef enum {
MM_CAMERA_OK,
MM_CAMERA_E_GENERAL,
MM_CAMERA_E_NO_MEMORY,
MM_CAMERA_E_NOT_SUPPORTED,
MM_CAMERA_E_INVALID_INPUT,
MM_CAMERA_E_INVALID_OPERATION, /* 5 */
MM_CAMERA_E_ENCODE,
MM_CAMERA_E_BUFFER_REG,
MM_CAMERA_E_PMEM_ALLOC,
MM_CAMERA_E_CAPTURE_FAILED,
MM_CAMERA_E_CAPTURE_TIMEOUT, /* 10 */
} mm_camera_status_type_t;
typedef enum {
MM_CHANNEL_TYPE_ZSL, /* preview, and snapshot main */
MM_CHANNEL_TYPE_CAPTURE, /* snapshot main, and postview */
MM_CHANNEL_TYPE_PREVIEW, /* preview only */
MM_CHANNEL_TYPE_SNAPSHOT, /* snapshot main only */
MM_CHANNEL_TYPE_VIDEO, /* video only */
MM_CHANNEL_TYPE_RDI, /* rdi only */
MM_CHANNEL_TYPE_REPROCESS,/* offline reprocess */
MM_CHANNEL_TYPE_MAX
} mm_camera_channel_type_t;
typedef struct {
int fd;
int main_ion_fd;
ion_user_handle_t handle;
size_t size;
void * data;
} mm_camera_app_meminfo_t;
typedef struct {
mm_camera_buf_def_t buf;
mm_camera_app_meminfo_t mem_info;
} mm_camera_app_buf_t;
typedef struct {
uint32_t s_id;
mm_camera_stream_config_t s_config;
cam_frame_len_offset_t offset;
uint8_t num_of_bufs;
uint32_t multipleOf;
mm_camera_app_buf_t s_bufs[MM_CAMERA_MAX_NUM_FRAMES];
mm_camera_app_buf_t s_info_buf;
} mm_camera_stream_t;
typedef struct {
uint32_t ch_id;
uint8_t num_streams;
mm_camera_stream_t streams[MAX_STREAM_NUM_IN_BUNDLE];
} mm_camera_channel_t;
typedef void (*release_data_fn)(void* data, void *user_data);
typedef struct {
struct cam_list list;
void* data;
} camera_q_node;
typedef struct {
camera_q_node m_head;
int m_size;
pthread_mutex_t m_lock;
release_data_fn m_dataFn;
void * m_userData;
} mm_camera_queue_t;
typedef struct {
uint16_t user_input_display_width;
uint16_t user_input_display_height;
} USER_INPUT_DISPLAY_T;
typedef struct {
mm_camera_vtbl_t *cam;
uint8_t num_channels;
mm_camera_channel_t channels[MM_CHANNEL_TYPE_MAX];
mm_jpeg_ops_t jpeg_ops;
uint32_t jpeg_hdl;
mm_camera_app_buf_t cap_buf;
mm_camera_app_buf_t parm_buf;
uint32_t current_jpeg_sess_id;
mm_camera_super_buf_t* current_job_frames;
uint32_t current_job_id;
mm_camera_app_buf_t jpeg_buf;
int fb_fd;
struct fb_var_screeninfo vinfo;
struct mdp_overlay data_overlay;
uint32_t slice_size;
uint32_t buffer_width, buffer_height;
uint32_t buffer_size;
cam_format_t buffer_format;
uint32_t frame_size;
uint32_t frame_count;
int encodeJpeg;
int zsl_enabled;
int8_t focus_supported;
cam_stream_user_cb user_preview_cb;
cam_stream_user_cb user_metadata_cb;
parm_buffer_new_t *params_buffer;
USER_INPUT_DISPLAY_T preview_resolution;
//Reprocess params&stream
int8_t enable_reproc;
int32_t reproc_sharpness;
cam_denoise_param_t reproc_wnr;
int8_t enable_CAC;
mm_camera_queue_t pp_frames;
mm_camera_stream_t *reproc_stream;
cam_metadata_info_t *metadata;
int8_t is_chromatix_reload;
tune_chromatix_t tune_data;
} mm_camera_test_obj_t;
typedef struct {
void *ptr;
void* ptr_jpeg;
uint8_t (*get_num_of_cameras) ();
mm_camera_vtbl_t *(*mm_camera_open) (uint8_t camera_idx);
uint32_t (*jpeg_open) (mm_jpeg_ops_t *ops, mm_dimension picture_size);
} hal_interface_lib_t;
typedef struct {
uint8_t num_cameras;
hal_interface_lib_t hal_lib;
} mm_camera_app_t;
typedef struct {
uint32_t width;
uint32_t height;
} mm_camera_lib_snapshot_params;
typedef enum {
MM_CAMERA_LIB_NO_ACTION = 0,
MM_CAMERA_LIB_RAW_CAPTURE,
MM_CAMERA_LIB_JPEG_CAPTURE,
MM_CAMERA_LIB_SET_FOCUS_MODE,
MM_CAMERA_LIB_DO_AF,
MM_CAMERA_LIB_CANCEL_AF,
MM_CAMERA_LIB_LOCK_AE,
MM_CAMERA_LIB_UNLOCK_AE,
MM_CAMERA_LIB_LOCK_AWB,
MM_CAMERA_LIB_UNLOCK_AWB,
MM_CAMERA_LIB_GET_CHROMATIX,
MM_CAMERA_LIB_SET_RELOAD_CHROMATIX,
MM_CAMERA_LIB_GET_AFTUNE,
MM_CAMERA_LIB_SET_RELOAD_AFTUNE,
MM_CAMERA_LIB_SET_AUTOFOCUS_TUNING,
MM_CAMERA_LIB_ZSL_ENABLE,
MM_CAMERA_LIB_EV,
MM_CAMERA_LIB_ANTIBANDING,
MM_CAMERA_LIB_SET_VFE_COMMAND,
MM_CAMERA_LIB_SET_POSTPROC_COMMAND,
MM_CAMERA_LIB_SET_3A_COMMAND,
MM_CAMERA_LIB_AEC_ENABLE,
MM_CAMERA_LIB_AEC_DISABLE,
MM_CAMERA_LIB_AF_ENABLE,
MM_CAMERA_LIB_AF_DISABLE,
MM_CAMERA_LIB_AWB_ENABLE,
MM_CAMERA_LIB_AWB_DISABLE,
MM_CAMERA_LIB_AEC_FORCE_LC,
MM_CAMERA_LIB_AEC_FORCE_GAIN,
MM_CAMERA_LIB_AEC_FORCE_EXP,
MM_CAMERA_LIB_AEC_FORCE_SNAP_LC,
MM_CAMERA_LIB_AEC_FORCE_SNAP_GAIN,
MM_CAMERA_LIB_AEC_FORCE_SNAP_EXP,
MM_CAMERA_LIB_WB,
MM_CAMERA_LIB_EXPOSURE_METERING,
MM_CAMERA_LIB_BRIGHTNESS,
MM_CAMERA_LIB_CONTRAST,
MM_CAMERA_LIB_SATURATION,
MM_CAMERA_LIB_SHARPNESS,
MM_CAMERA_LIB_ISO,
MM_CAMERA_LIB_ZOOM,
MM_CAMERA_LIB_BESTSHOT,
MM_CAMERA_LIB_FLASH,
MM_CAMERA_LIB_FPS_RANGE,
MM_CAMERA_LIB_WNR_ENABLE,
MM_CAMERA_LIB_SET_TINTLESS,
} mm_camera_lib_commands;
typedef struct {
int32_t stream_width, stream_height;
cam_focus_mode_type af_mode;
} mm_camera_lib_params;
typedef struct {
tuneserver_protocol_t *proto;
int clientsocket_id;
prserver_protocol_t *pr_proto;
int pr_clientsocket_id;
mm_camera_tuning_lib_params_t tuning_params;
} tuningserver_t;
typedef struct {
mm_camera_app_t app_ctx;
mm_camera_test_obj_t test_obj;
mm_camera_lib_params current_params;
int stream_running;
tuningserver_t tsctrl;
} mm_camera_lib_ctx;
typedef mm_camera_lib_ctx mm_camera_lib_handle;
typedef int (*mm_app_test_t) (mm_camera_app_t *cam_apps);
typedef struct {
mm_app_test_t f;
int r;
} mm_app_tc_t;
extern int mm_app_unit_test_entry(mm_camera_app_t *cam_app);
extern int mm_app_dual_test_entry(mm_camera_app_t *cam_app);
extern void mm_app_dump_frame(mm_camera_buf_def_t *frame,
char *name,
char *ext,
uint32_t frame_idx);
extern void mm_app_dump_jpeg_frame(const void * data,
size_t size,
char* name,
char* ext,
uint32_t index);
extern int mm_camera_app_timedwait(uint8_t seconds);
extern int mm_camera_app_wait();
extern void mm_camera_app_done();
extern int mm_app_alloc_bufs(mm_camera_app_buf_t* app_bufs,
cam_frame_len_offset_t *frame_offset_info,
uint8_t num_bufs,
uint8_t is_streambuf,
size_t multipleOf);
extern int mm_app_release_bufs(uint8_t num_bufs,
mm_camera_app_buf_t* app_bufs);
extern int mm_app_stream_initbuf(cam_frame_len_offset_t *frame_offset_info,
uint8_t *num_bufs,
uint8_t **initial_reg_flag,
mm_camera_buf_def_t **bufs,
mm_camera_map_unmap_ops_tbl_t *ops_tbl,
void *user_data);
extern int32_t mm_app_stream_deinitbuf(mm_camera_map_unmap_ops_tbl_t *ops_tbl,
void *user_data);
extern int mm_app_cache_ops(mm_camera_app_meminfo_t *mem_info, int cmd);
extern int32_t mm_app_stream_clean_invalidate_buf(uint32_t index, void *user_data);
extern int32_t mm_app_stream_invalidate_buf(uint32_t index, void *user_data);
extern int mm_app_open(mm_camera_app_t *cam_app,
int cam_id,
mm_camera_test_obj_t *test_obj);
extern int mm_app_close(mm_camera_test_obj_t *test_obj);
extern mm_camera_channel_t * mm_app_add_channel(
mm_camera_test_obj_t *test_obj,
mm_camera_channel_type_t ch_type,
mm_camera_channel_attr_t *attr,
mm_camera_buf_notify_t channel_cb,
void *userdata);
extern int mm_app_del_channel(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel);
extern mm_camera_stream_t * mm_app_add_stream(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel);
extern int mm_app_del_stream(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel,
mm_camera_stream_t *stream);
extern int mm_app_config_stream(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel,
mm_camera_stream_t *stream,
mm_camera_stream_config_t *config);
extern int mm_app_start_channel(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel);
extern int mm_app_stop_channel(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel);
extern mm_camera_channel_t *mm_app_get_channel_by_type(
mm_camera_test_obj_t *test_obj,
mm_camera_channel_type_t ch_type);
extern int mm_app_start_preview(mm_camera_test_obj_t *test_obj);
extern int mm_app_stop_preview(mm_camera_test_obj_t *test_obj);
extern int mm_app_start_preview_zsl(mm_camera_test_obj_t *test_obj);
extern int mm_app_stop_preview_zsl(mm_camera_test_obj_t *test_obj);
extern mm_camera_channel_t * mm_app_add_preview_channel(
mm_camera_test_obj_t *test_obj);
extern mm_camera_stream_t * mm_app_add_raw_stream(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel,
mm_camera_buf_notify_t stream_cb,
void *userdata,
uint8_t num_bufs,
uint8_t num_burst);
extern int mm_app_stop_and_del_channel(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel);
extern mm_camera_channel_t * mm_app_add_snapshot_channel(
mm_camera_test_obj_t *test_obj);
extern mm_camera_stream_t * mm_app_add_snapshot_stream(
mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel,
mm_camera_buf_notify_t stream_cb,
void *userdata,
uint8_t num_bufs,
uint8_t num_burst);
extern mm_camera_stream_t * mm_app_add_metadata_stream(mm_camera_test_obj_t *test_obj,
mm_camera_channel_t *channel,
mm_camera_buf_notify_t stream_cb,
void *userdata,
uint8_t num_bufs);
extern int mm_app_start_record_preview(mm_camera_test_obj_t *test_obj);
extern int mm_app_stop_record_preview(mm_camera_test_obj_t *test_obj);
extern int mm_app_start_record(mm_camera_test_obj_t *test_obj);
extern int mm_app_stop_record(mm_camera_test_obj_t *test_obj);
extern int mm_app_start_live_snapshot(mm_camera_test_obj_t *test_obj);
extern int mm_app_stop_live_snapshot(mm_camera_test_obj_t *test_obj);
extern int mm_app_start_capture(mm_camera_test_obj_t *test_obj,
uint8_t num_snapshots);
extern int mm_app_stop_capture(mm_camera_test_obj_t *test_obj);
extern int mm_app_start_capture_raw(mm_camera_test_obj_t *test_obj,
uint8_t num_snapshots);
extern int mm_app_stop_capture_raw(mm_camera_test_obj_t *test_obj);
extern int mm_app_start_rdi(mm_camera_test_obj_t *test_obj, uint8_t num_burst);
extern int mm_app_stop_rdi(mm_camera_test_obj_t *test_obj);
extern int mm_app_initialize_fb(mm_camera_test_obj_t *test_obj);
extern int mm_app_close_fb(mm_camera_test_obj_t *test_obj);
extern int mm_app_fb_write(mm_camera_test_obj_t *test_obj, char *buffer);
extern int mm_app_overlay_display(mm_camera_test_obj_t *test_obj, int bufferFd);
extern int mm_app_allocate_ion_memory(mm_camera_app_buf_t *buf, unsigned int ion_type);
extern int mm_app_deallocate_ion_memory(mm_camera_app_buf_t *buf);
extern int mm_app_set_params(mm_camera_test_obj_t *test_obj,
cam_intf_parm_type_t param_type,
int32_t value);
extern int mm_app_set_preview_fps_range(mm_camera_test_obj_t *test_obj,
cam_fps_range_t *fpsRange);
extern int mm_app_set_face_detection(mm_camera_test_obj_t *test_obj,
cam_fd_set_parm_t *fd_set_parm);
extern int mm_app_set_metadata_usercb(mm_camera_test_obj_t *test_obj,
cam_stream_user_cb usercb);
extern int mm_app_set_params_impl(mm_camera_test_obj_t *test_obj,
cam_intf_parm_type_t param_type,
uint32_t param_len,
void* param_val);
/* JIG camera lib interface */
int mm_camera_lib_open(mm_camera_lib_handle *handle, int cam_id);
int mm_camera_lib_get_caps(mm_camera_lib_handle *handle,
cam_capability_t *caps);
int mm_camera_lib_start_stream(mm_camera_lib_handle *handle);
int mm_camera_lib_send_command(mm_camera_lib_handle *handle,
mm_camera_lib_commands cmd,
void *data, void *out_data);
int mm_camera_lib_stop_stream(mm_camera_lib_handle *handle);
int mm_camera_lib_number_of_cameras(mm_camera_lib_handle *handle);
int mm_camera_lib_close(mm_camera_lib_handle *handle);
int32_t mm_camera_load_tuninglibrary(
mm_camera_tuning_lib_params_t *tuning_param);
int mm_camera_lib_set_preview_usercb(
mm_camera_lib_handle *handle, cam_stream_user_cb cb);
//
int mm_app_start_regression_test(int run_tc);
int mm_app_load_hal(mm_camera_app_t *my_cam_app);
extern int createEncodingSession(mm_camera_test_obj_t *test_obj,
mm_camera_stream_t *m_stream,
mm_camera_buf_def_t *m_frame);
extern int encodeData(mm_camera_test_obj_t *test_obj, mm_camera_super_buf_t* recvd_frame,
mm_camera_stream_t *m_stream);
extern int mm_app_take_picture(mm_camera_test_obj_t *test_obj, uint8_t);
extern mm_camera_channel_t * mm_app_add_reprocess_channel(mm_camera_test_obj_t *test_obj,
mm_camera_stream_t *source_stream);
extern int mm_app_start_reprocess(mm_camera_test_obj_t *test_obj);
extern int mm_app_stop_reprocess(mm_camera_test_obj_t *test_obj);
extern int mm_app_do_reprocess(mm_camera_test_obj_t *test_obj,
mm_camera_buf_def_t *frame,
uint32_t meta_idx,
mm_camera_super_buf_t *super_buf,
mm_camera_stream_t *src_meta);
extern void mm_app_release_ppinput(void *data, void *user_data);
extern int mm_camera_queue_init(mm_camera_queue_t *queue,
release_data_fn data_rel_fn,
void *user_data);
extern int mm_qcamera_queue_release(mm_camera_queue_t *queue);
extern int mm_qcamera_queue_isempty(mm_camera_queue_t *queue);
extern int mm_qcamera_queue_enqueue(mm_camera_queue_t *queue, void *data);
extern void* mm_qcamera_queue_dequeue(mm_camera_queue_t *queue,
int bFromHead);
extern void mm_qcamera_queue_flush(mm_camera_queue_t *queue);
#endif /* __MM_QCAMERA_APP_H__ */
|