Home
last modified time | relevance | path

Searched refs:test_obj (Results 1 – 23 of 23) sorted by relevance

/device/moto/shamu/camera/QCamera2/stack/mm-camera-test/src/
Dmm_qcamera_preview.c361 mm_camera_stream_t * mm_app_add_metadata_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_metadata_stream() argument
369 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_metadata_stream()
371 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_metadata_stream()
396 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_metadata_stream()
405 mm_camera_stream_t * mm_app_add_preview_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_preview_stream() argument
413 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_preview_stream()
415 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_preview_stream()
436 if ((test_obj->preview_resolution.user_input_display_width == 0) || in mm_app_add_preview_stream()
437 ( test_obj->preview_resolution.user_input_display_height == 0)) { in mm_app_add_preview_stream()
441 … stream->s_config.stream_info->dim.width = test_obj->preview_resolution.user_input_display_width; in mm_app_add_preview_stream()
[all …]
Dmm_qcamera_unit_test.c44 mm_camera_test_obj_t test_obj; in mm_app_tc_open_close() local
48 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); in mm_app_tc_open_close()
49 rc = mm_app_open(cam_app, i, &test_obj); in mm_app_tc_open_close()
56 rc = mm_app_close(&test_obj); in mm_app_tc_open_close()
76 mm_camera_test_obj_t test_obj; in mm_app_tc_start_stop_preview() local
80 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); in mm_app_tc_start_stop_preview()
81 rc = mm_app_open(cam_app, i, &test_obj); in mm_app_tc_start_stop_preview()
89 rc = mm_app_start_preview(&test_obj); in mm_app_tc_start_stop_preview()
96 rc = mm_app_stop_preview(&test_obj); in mm_app_tc_start_stop_preview()
104 rc |= mm_app_close(&test_obj); in mm_app_tc_start_stop_preview()
[all …]
Dmm_qcamera_app.c460 mm_camera_test_obj_t *test_obj = in notify_evt_cb() local
462 if (test_obj == NULL || test_obj->cam->camera_handle != camera_handle) { in notify_evt_cb()
484 mm_camera_test_obj_t *test_obj) in mm_app_open() argument
491 test_obj->cam = cam_app->hal_lib.mm_camera_open(cam_id); in mm_app_open()
492 if(test_obj->cam == NULL) { in mm_app_open()
497 CDBG("Open Camera id = %d handle = %d", cam_id, test_obj->cam->camera_handle); in mm_app_open()
503 rc = mm_app_alloc_bufs(&test_obj->cap_buf, in mm_app_open()
514 rc = test_obj->cam->ops->map_buf(test_obj->cam->camera_handle, in mm_app_open()
516 test_obj->cap_buf.mem_info.fd, in mm_app_open()
517 test_obj->cap_buf.mem_info.size); in mm_app_open()
[all …]
Dmm_qcamera_video.c56 mm_camera_stream_t * mm_app_add_video_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_video_stream() argument
64 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_video_stream()
66 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_video_stream()
91 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_video_stream()
100 mm_camera_channel_t * mm_app_add_video_channel(mm_camera_test_obj_t *test_obj) in mm_app_add_video_channel() argument
105 channel = mm_app_add_channel(test_obj, in mm_app_add_video_channel()
115 stream = mm_app_add_video_stream(test_obj, in mm_app_add_video_channel()
118 (void *)test_obj, in mm_app_add_video_channel()
122 mm_app_del_channel(test_obj, channel); in mm_app_add_video_channel()
129 int mm_app_start_record_preview(mm_camera_test_obj_t *test_obj) in mm_app_start_record_preview() argument
[all …]
Dmm_qcamera_reprocess.c106 mm_camera_stream_t * mm_app_add_reprocess_stream_from_source(mm_camera_test_obj_t *test_obj, in mm_app_add_reprocess_stream_from_source() argument
119 if ( ( NULL == test_obj ) || in mm_app_add_reprocess_stream_from_source()
126 cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_reprocess_stream_from_source()
128 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_reprocess_stream_from_source()
159 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_reprocess_stream_from_source()
168 mm_camera_channel_t * mm_app_add_reprocess_channel(mm_camera_test_obj_t *test_obj, in mm_app_add_reprocess_channel() argument
179 channel = mm_app_add_channel(test_obj, in mm_app_add_reprocess_channel()
193 cam_capability_t *caps = ( cam_capability_t * ) ( test_obj->cap_buf.buf.buffer ); in mm_app_add_reprocess_channel()
196 pp_config.sharpness = test_obj->reproc_sharpness; in mm_app_add_reprocess_channel()
199 if (test_obj->reproc_wnr.denoise_enable) { in mm_app_add_reprocess_channel()
[all …]
Dmm_qcamera_snapshot.c79 int encodeData(mm_camera_test_obj_t *test_obj, mm_camera_super_buf_t* recvd_frame, in encodeData() argument
82 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in encodeData()
88 test_obj->current_job_frames = in encodeData()
90 if (!test_obj->current_job_frames) { in encodeData()
94 *(test_obj->current_job_frames) = *recvd_frame; in encodeData()
98 job.encode_job.session_id = test_obj->current_jpeg_sess_id; in encodeData()
119 if (test_obj->metadata != NULL) { in encodeData()
120 job.encode_job.p_metadata = test_obj->metadata; in encodeData()
125 rc = test_obj->jpeg_ops.start_job(&job, &test_obj->current_job_id); in encodeData()
127 free(test_obj->current_job_frames); in encodeData()
[all …]
Dmm_qcamera_rdi.c86 mm_camera_stream_t * mm_app_add_rdi_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_rdi_stream() argument
96 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_rdi_stream()
100 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_rdi_stream()
151 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_rdi_stream()
166 mm_camera_stream_t * mm_app_add_rdi_snapshot_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_rdi_snapshot_stream() argument
175 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_rdi_snapshot_stream()
177 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_rdi_snapshot_stream()
207 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_rdi_snapshot_stream()
216 mm_camera_channel_t * mm_app_add_rdi_channel(mm_camera_test_obj_t *test_obj, uint8_t num_burst) in mm_app_add_rdi_channel() argument
221 channel = mm_app_add_channel(test_obj, in mm_app_add_rdi_channel()
[all …]
Dmm_qcamera_main_menu.c1108 int take_jpeg_snapshot(mm_camera_test_obj_t *test_obj, int is_burst_mode) in take_jpeg_snapshot() argument
1112 if(MM_CAMERA_OK != (rc = mm_app_take_picture(test_obj, is_burst_mode))) { in take_jpeg_snapshot()
1681 mm_camera_test_obj_t test_obj; in submain() local
1682 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); in submain()
/device/lge/hammerhead/camera/QCamera2/stack/mm-camera-test/src/
Dmm_qcamera_unit_test.c44 mm_camera_test_obj_t test_obj; in mm_app_tc_open_close() local
48 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); in mm_app_tc_open_close()
49 rc = mm_app_open(cam_app, i, &test_obj); in mm_app_tc_open_close()
56 rc = mm_app_close(&test_obj); in mm_app_tc_open_close()
76 mm_camera_test_obj_t test_obj; in mm_app_tc_start_stop_preview() local
80 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); in mm_app_tc_start_stop_preview()
81 rc = mm_app_open(cam_app, i, &test_obj); in mm_app_tc_start_stop_preview()
89 rc = mm_app_start_preview(&test_obj); in mm_app_tc_start_stop_preview()
96 rc = mm_app_stop_preview(&test_obj); in mm_app_tc_start_stop_preview()
104 rc |= mm_app_close(&test_obj); in mm_app_tc_start_stop_preview()
[all …]
Dmm_qcamera_video.c56 mm_camera_stream_t * mm_app_add_video_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_video_stream() argument
64 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_video_stream()
66 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_video_stream()
91 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_video_stream()
100 mm_camera_channel_t * mm_app_add_video_channel(mm_camera_test_obj_t *test_obj) in mm_app_add_video_channel() argument
105 channel = mm_app_add_channel(test_obj, in mm_app_add_video_channel()
115 stream = mm_app_add_video_stream(test_obj, in mm_app_add_video_channel()
118 (void *)test_obj, in mm_app_add_video_channel()
122 mm_app_del_channel(test_obj, channel); in mm_app_add_video_channel()
129 int mm_app_start_record_preview(mm_camera_test_obj_t *test_obj) in mm_app_start_record_preview() argument
[all …]
Dmm_qcamera_app.c440 mm_camera_test_obj_t *test_obj = in notify_evt_cb() local
442 if (test_obj == NULL || test_obj->cam->camera_handle != camera_handle) { in notify_evt_cb()
464 mm_camera_test_obj_t *test_obj) in mm_app_open() argument
471 test_obj->cam = cam_app->hal_lib.mm_camera_open(cam_id); in mm_app_open()
472 if(test_obj->cam == NULL) { in mm_app_open()
477 CDBG("Open Camera id = %d handle = %d", cam_id, test_obj->cam->camera_handle); in mm_app_open()
482 rc = mm_app_alloc_bufs(&test_obj->cap_buf, in mm_app_open()
492 rc = test_obj->cam->ops->map_buf(test_obj->cam->camera_handle, in mm_app_open()
494 test_obj->cap_buf.mem_info.fd, in mm_app_open()
495 test_obj->cap_buf.mem_info.size); in mm_app_open()
[all …]
Dmm_qcamera_snapshot.c75 int encodeData(mm_camera_test_obj_t *test_obj, mm_camera_super_buf_t* recvd_frame, in encodeData() argument
78 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in encodeData()
84 test_obj->current_job_frames = in encodeData()
86 if (!test_obj->current_job_frames) { in encodeData()
90 *(test_obj->current_job_frames) = *recvd_frame; in encodeData()
94 job.encode_job.session_id = test_obj->current_jpeg_sess_id; in encodeData()
114 rc = test_obj->jpeg_ops.start_job(&job, &test_obj->current_job_id); in encodeData()
116 free(test_obj->current_job_frames); in encodeData()
117 test_obj->current_job_frames = NULL; in encodeData()
123 int createEncodingSession(mm_camera_test_obj_t *test_obj, in createEncodingSession() argument
[all …]
Dmm_qcamera_preview.c149 mm_camera_stream_t * mm_app_add_preview_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_preview_stream() argument
157 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_preview_stream()
159 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_preview_stream()
184 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_preview_stream()
193 mm_camera_stream_t * mm_app_add_snapshot_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_snapshot_stream() argument
202 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_snapshot_stream()
204 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_snapshot_stream()
234 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_snapshot_stream()
243 mm_camera_channel_t * mm_app_add_preview_channel(mm_camera_test_obj_t *test_obj) in mm_app_add_preview_channel() argument
248 channel = mm_app_add_channel(test_obj, in mm_app_add_preview_channel()
[all …]
Dmm_qcamera_rdi.c84 mm_camera_stream_t * mm_app_add_rdi_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_rdi_stream() argument
94 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_rdi_stream()
98 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_rdi_stream()
144 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_rdi_stream()
159 mm_camera_stream_t * mm_app_add_rdi_snapshot_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_rdi_snapshot_stream() argument
168 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_rdi_snapshot_stream()
170 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_rdi_snapshot_stream()
200 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_rdi_snapshot_stream()
209 mm_camera_channel_t * mm_app_add_rdi_channel(mm_camera_test_obj_t *test_obj, uint8_t num_burst) in mm_app_add_rdi_channel() argument
214 channel = mm_app_add_channel(test_obj, in mm_app_add_rdi_channel()
[all …]
/device/asus/flo/camera/QCamera2/stack/mm-camera-test/src/
Dmm_qcamera_unit_test.c44 mm_camera_test_obj_t test_obj; in mm_app_tc_open_close() local
48 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); in mm_app_tc_open_close()
49 rc = mm_app_open(cam_app, i, &test_obj); in mm_app_tc_open_close()
56 rc = mm_app_close(&test_obj); in mm_app_tc_open_close()
76 mm_camera_test_obj_t test_obj; in mm_app_tc_start_stop_preview() local
80 memset(&test_obj, 0, sizeof(mm_camera_test_obj_t)); in mm_app_tc_start_stop_preview()
81 rc = mm_app_open(cam_app, i, &test_obj); in mm_app_tc_start_stop_preview()
89 rc = mm_app_start_preview(&test_obj); in mm_app_tc_start_stop_preview()
96 rc = mm_app_stop_preview(&test_obj); in mm_app_tc_start_stop_preview()
104 rc |= mm_app_close(&test_obj); in mm_app_tc_start_stop_preview()
[all …]
Dmm_qcamera_video.c56 mm_camera_stream_t * mm_app_add_video_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_video_stream() argument
64 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_video_stream()
66 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_video_stream()
91 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_video_stream()
100 mm_camera_channel_t * mm_app_add_video_channel(mm_camera_test_obj_t *test_obj) in mm_app_add_video_channel() argument
105 channel = mm_app_add_channel(test_obj, in mm_app_add_video_channel()
115 stream = mm_app_add_video_stream(test_obj, in mm_app_add_video_channel()
118 (void *)test_obj, in mm_app_add_video_channel()
122 mm_app_del_channel(test_obj, channel); in mm_app_add_video_channel()
129 int mm_app_start_record_preview(mm_camera_test_obj_t *test_obj) in mm_app_start_record_preview() argument
[all …]
Dmm_qcamera_app.c440 mm_camera_test_obj_t *test_obj = in notify_evt_cb() local
442 if (test_obj == NULL || test_obj->cam->camera_handle != camera_handle) { in notify_evt_cb()
464 mm_camera_test_obj_t *test_obj) in mm_app_open() argument
471 test_obj->cam = cam_app->hal_lib.mm_camera_open(cam_id); in mm_app_open()
472 if(test_obj->cam == NULL) { in mm_app_open()
477 CDBG("Open Camera id = %d handle = %d", cam_id, test_obj->cam->camera_handle); in mm_app_open()
482 rc = mm_app_alloc_bufs(&test_obj->cap_buf, in mm_app_open()
492 rc = test_obj->cam->ops->map_buf(test_obj->cam->camera_handle, in mm_app_open()
494 test_obj->cap_buf.mem_info.fd, in mm_app_open()
495 test_obj->cap_buf.mem_info.size); in mm_app_open()
[all …]
Dmm_qcamera_snapshot.c75 int encodeData(mm_camera_test_obj_t *test_obj, mm_camera_super_buf_t* recvd_frame, in encodeData() argument
78 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in encodeData()
84 test_obj->current_job_frames = in encodeData()
86 if (!test_obj->current_job_frames) { in encodeData()
90 *(test_obj->current_job_frames) = *recvd_frame; in encodeData()
94 job.encode_job.session_id = test_obj->current_jpeg_sess_id; in encodeData()
114 rc = test_obj->jpeg_ops.start_job(&job, &test_obj->current_job_id); in encodeData()
116 free(test_obj->current_job_frames); in encodeData()
117 test_obj->current_job_frames = NULL; in encodeData()
123 int createEncodingSession(mm_camera_test_obj_t *test_obj, in createEncodingSession() argument
[all …]
Dmm_qcamera_preview.c149 mm_camera_stream_t * mm_app_add_preview_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_preview_stream() argument
157 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_preview_stream()
159 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_preview_stream()
184 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_preview_stream()
193 mm_camera_stream_t * mm_app_add_snapshot_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_snapshot_stream() argument
202 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_snapshot_stream()
204 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_snapshot_stream()
234 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_snapshot_stream()
243 mm_camera_channel_t * mm_app_add_preview_channel(mm_camera_test_obj_t *test_obj) in mm_app_add_preview_channel() argument
248 channel = mm_app_add_channel(test_obj, in mm_app_add_preview_channel()
[all …]
Dmm_qcamera_rdi.c84 mm_camera_stream_t * mm_app_add_rdi_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_rdi_stream() argument
94 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_rdi_stream()
98 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_rdi_stream()
144 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_rdi_stream()
159 mm_camera_stream_t * mm_app_add_rdi_snapshot_stream(mm_camera_test_obj_t *test_obj, in mm_app_add_rdi_snapshot_stream() argument
168 cam_capability_t *cam_cap = (cam_capability_t *)(test_obj->cap_buf.buf.buffer); in mm_app_add_rdi_snapshot_stream()
170 stream = mm_app_add_stream(test_obj, channel); in mm_app_add_rdi_snapshot_stream()
200 rc = mm_app_config_stream(test_obj, channel, stream, &stream->s_config); in mm_app_add_rdi_snapshot_stream()
209 mm_camera_channel_t * mm_app_add_rdi_channel(mm_camera_test_obj_t *test_obj, uint8_t num_burst) in mm_app_add_rdi_channel() argument
214 channel = mm_app_add_channel(test_obj, in mm_app_add_rdi_channel()
[all …]
/device/asus/flo/camera/QCamera2/stack/mm-camera-test/inc/
Dmm_qcamera_app.h196 mm_camera_test_obj_t *test_obj);
197 extern int mm_app_close(mm_camera_test_obj_t *test_obj);
199 mm_camera_test_obj_t *test_obj,
204 extern int mm_app_del_channel(mm_camera_test_obj_t *test_obj,
206 extern mm_camera_stream_t * mm_app_add_stream(mm_camera_test_obj_t *test_obj,
208 extern int mm_app_del_stream(mm_camera_test_obj_t *test_obj,
211 extern int mm_app_config_stream(mm_camera_test_obj_t *test_obj,
215 extern int mm_app_start_channel(mm_camera_test_obj_t *test_obj,
217 extern int mm_app_stop_channel(mm_camera_test_obj_t *test_obj,
220 mm_camera_test_obj_t *test_obj,
[all …]
/device/lge/hammerhead/camera/QCamera2/stack/mm-camera-test/inc/
Dmm_qcamera_app.h196 mm_camera_test_obj_t *test_obj);
197 extern int mm_app_close(mm_camera_test_obj_t *test_obj);
199 mm_camera_test_obj_t *test_obj,
204 extern int mm_app_del_channel(mm_camera_test_obj_t *test_obj,
206 extern mm_camera_stream_t * mm_app_add_stream(mm_camera_test_obj_t *test_obj,
208 extern int mm_app_del_stream(mm_camera_test_obj_t *test_obj,
211 extern int mm_app_config_stream(mm_camera_test_obj_t *test_obj,
215 extern int mm_app_start_channel(mm_camera_test_obj_t *test_obj,
217 extern int mm_app_stop_channel(mm_camera_test_obj_t *test_obj,
220 mm_camera_test_obj_t *test_obj,
[all …]
/device/moto/shamu/camera/QCamera2/stack/mm-camera-test/inc/
Dmm_qcamera_app.h335 mm_camera_test_obj_t test_obj; member
384 mm_camera_test_obj_t *test_obj);
385 extern int mm_app_close(mm_camera_test_obj_t *test_obj);
387 mm_camera_test_obj_t *test_obj,
392 extern int mm_app_del_channel(mm_camera_test_obj_t *test_obj,
394 extern mm_camera_stream_t * mm_app_add_stream(mm_camera_test_obj_t *test_obj,
396 extern int mm_app_del_stream(mm_camera_test_obj_t *test_obj,
399 extern int mm_app_config_stream(mm_camera_test_obj_t *test_obj,
403 extern int mm_app_start_channel(mm_camera_test_obj_t *test_obj,
405 extern int mm_app_stop_channel(mm_camera_test_obj_t *test_obj,
[all …]