Home | History | Annotate | Download | only in src

Lines Matching refs:my_obj

51 void mm_jpeg_job_wait_for_event(mm_jpeg_obj *my_obj, uint32_t evt_mask);
52 void mm_jpeg_job_wait_for_cmd_complete(mm_jpeg_obj *my_obj,
72 int32_t mm_jpeg_omx_load(mm_jpeg_obj* my_obj)
80 rc = OMX_GetHandle(&my_obj->omx_handle,
82 (void*)my_obj,
93 OMX_FreeHandle(my_obj->omx_handle);
99 int32_t mm_jpeg_omx_unload(mm_jpeg_obj *my_obj)
103 OMX_FreeHandle(my_obj->omx_handle);
108 int32_t mm_jpeg_omx_abort_job(mm_jpeg_obj *my_obj, mm_jpeg_job_entry* job_entry)
113 OMX_SendCommand(my_obj->omx_handle, OMX_CommandFlush, 0, NULL);
114 mm_jpeg_job_wait_for_event(my_obj,
118 OMX_SendCommand(my_obj->omx_handle, OMX_CommandStateSet, OMX_StateIdle, NULL);
119 OMX_SendCommand(my_obj->omx_handle, OMX_CommandStateSet, OMX_StateLoaded, NULL);
125 OMX_FreeBuffer(my_obj->omx_handle,
131 OMX_FreeBuffer(my_obj->omx_handle,
139 int32_t mm_jpeg_omx_config_main_buffer_offset(mm_jpeg_obj* my_obj, src_image_buffer_info *src_buf)
147 OMX_GetExtensionIndex(my_obj->omx_handle,
171 OMX_SetParameter(my_obj->omx_handle, buf_offset_idx, &buffer_offset);
181 OMX_SetParameter(my_obj->omx_handle, buf_offset_idx, &buffer_offset);
192 int32_t mm_jpeg_omx_config_port(mm_jpeg_obj* my_obj, src_image_buffer_info *src_buf, int port_idx)
201 OMX_GetParameter(my_obj->omx_handle, OMX_IndexParamPortDefinition, &input_port);
215 OMX_SetParameter(my_obj->omx_handle, OMX_IndexParamPortDefinition, &input_port);
254 int32_t mm_jpeg_omx_config_user_preference(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
267 OMX_GetExtensionIndex(my_obj->omx_handle,
272 OMX_SetParameter(my_obj->omx_handle, user_pref_idx, &user_preferences);
276 int32_t mm_jpeg_omx_config_thumbnail(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
287 rc = mm_jpeg_omx_config_port(my_obj, src_buf, INPUT_PORT_THUMBNAIL);
328 OMX_GetExtensionIndex(my_obj->omx_handle, "omx.qcom.jpeg.exttype.thumbnail", &thumb_idx);
329 OMX_SetParameter(my_obj->omx_handle, thumb_idx, &thumbnail);
331 OMX_GetExtensionIndex(my_obj->omx_handle, "omx.qcom.jpeg.exttype.thumbnail_quality", &q_idx);
332 OMX_GetParameter(my_obj->omx_handle, q_idx, &quality);
334 OMX_SetParameter(my_obj->omx_handle, q_idx, &quality);
340 int32_t mm_jpeg_omx_config_main_crop(mm_jpeg_obj* my_obj, src_image_buffer_info *src_buf)
364 OMX_SetConfig(my_obj->omx_handle, OMX_IndexConfigCommonInputCrop, &rect_type);
371 OMX_SetConfig(my_obj->omx_handle, OMX_IndexConfigCommonOutputCrop, &rect_type);
382 int32_t mm_jpeg_omx_config_main(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
390 rc = mm_jpeg_omx_config_port(my_obj, src_buf, INPUT_PORT_MAIN);
397 rc = mm_jpeg_omx_config_main_buffer_offset(my_obj, src_buf);
404 rc = mm_jpeg_omx_config_main_crop(my_obj, src_buf);
413 OMX_GetParameter(my_obj->omx_handle, OMX_IndexParamQFactor, &q_factor);
415 OMX_SetParameter(my_obj->omx_handle, OMX_IndexParamQFactor, &q_factor);
420 int32_t mm_jpeg_omx_config_common(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
429 my_obj, job);
439 OMX_SetConfig(my_obj->omx_handle, OMX_IndexConfigCommonRotate, &rotate);
443 OMX_GetExtensionIndex(my_obj->omx_handle, "omx.qcom.jpeg.exttype.exif", &exif_idx);
446 OMX_SetParameter(my_obj->omx_handle, exif_idx, &tag);
452 int32_t mm_jpeg_omx_use_buf(mm_jpeg_obj* my_obj,
469 OMX_UseBuffer(my_obj->omx_handle,
480 OMX_UseBuffer(my_obj->omx_handle,
496 int32_t mm_jpeg_omx_encode(mm_jpeg_obj* my_obj, mm_jpeg_job_entry* job_entry)
506 rc = mm_jpeg_omx_config_main(my_obj, job);
513 rc = mm_jpeg_omx_config_thumbnail(my_obj, job);
520 rc = mm_jpeg_omx_config_common(my_obj, job);
529 rc = mm_jpeg_omx_use_buf(my_obj,
542 rc = mm_jpeg_omx_use_buf(my_obj,
554 OMX_UseBuffer(my_obj->omx_handle,
562 mm_jpeg_job_wait_for_cmd_complete(my_obj, OMX_CommandStateSet, OMX_StateIdle);
566 OMX_SendCommand(my_obj->omx_handle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
567 mm_jpeg_job_wait_for_cmd_complete(my_obj, OMX_CommandStateSet, OMX_StateExecuting);
571 OMX_EmptyThisBuffer(my_obj->omx_handle,
576 OMX_EmptyThisBuffer(my_obj->omx_handle,
580 OMX_FillThisBuffer(my_obj->omx_handle, job_entry->sink_buf.buf_header);
589 mm_jpeg_obj* my_obj = (mm_jpeg_obj *)job_entry->jpeg_obj;
593 if (NULL == my_obj) {
599 rc = mm_jpeg_queue_enq(&my_obj->cb_q, data);
620 node = mm_jpeg_queue_remove_job_by_job_id(&my_obj->cb_q, job_entry->jobId);
629 int32_t mm_jpeg_process_encoding_job(mm_jpeg_obj *my_obj, mm_jpeg_job_q_node_t* job_node)
635 rc = mm_jpeg_omx_encode(my_obj, job_entry);
638 rc = mm_jpeg_queue_enq(&my_obj->ongoing_job_q, job_node);
658 int32_t mm_jpeg_process_job(mm_jpeg_obj *my_obj, mm_jpeg_job_q_node_t* job_node)
664 rc = mm_jpeg_process_encoding_job(my_obj, job_node);
681 mm_jpeg_obj *my_obj = (mm_jpeg_obj*)data;
697 num_ongoing_jobs = mm_jpeg_queue_get_size(&my_obj->ongoing_job_q);
702 pthread_mutex_lock(&my_obj->job_lock);
708 rc = mm_jpeg_process_job(my_obj, node);
723 pthread_mutex_unlock(&my_obj->job_lock);
729 int32_t mm_jpeg_jobmgr_thread_launch(mm_jpeg_obj * my_obj)
732 mm_jpeg_job_cmd_thread_t * job_mgr = &my_obj->job_mgr;
741 (void *)my_obj);
745 int32_t mm_jpeg_jobmgr_thread_release(mm_jpeg_obj * my_obj)
748 mm_jpeg_job_cmd_thread_t * cmd_thread = &my_obj->job_mgr;
773 int32_t mm_jpeg_init(mm_jpeg_obj *my_obj)
778 pthread_mutex_init(&my_obj->job_lock, NULL);
779 pthread_mutex_init(&my_obj->omx_evt_lock, NULL);
780 pthread_cond_init(&my_obj->omx_evt_cond, NULL);
783 rc = mm_jpeg_queue_init(&my_obj->ongoing_job_q);
787 rc = mm_jpeg_jobmgr_thread_launch(my_obj);
790 rc = mm_jpeg_omx_load(my_obj);
793 mm_jpeg_jobmgr_thread_release(my_obj);
794 mm_jpeg_queue_deinit(&my_obj->ongoing_job_q);
795 pthread_mutex_destroy(&my_obj->job_lock);
796 pthread_mutex_destroy(&my_obj->omx_evt_lock);
797 pthread_cond_destroy(&my_obj->omx_evt_cond);
803 int32_t mm_jpeg_deinit(mm_jpeg_obj *my_obj)
808 rc = mm_jpeg_omx_unload(my_obj);
811 rc = mm_jpeg_jobmgr_thread_release(my_obj);
814 rc = mm_jpeg_queue_deinit(&my_obj->ongoing_job_q);
817 pthread_mutex_destroy(&my_obj->job_lock);
818 pthread_mutex_destroy(&my_obj->omx_evt_lock);
819 pthread_cond_destroy(&my_obj->omx_evt_cond);
824 uint32_t mm_jpeg_new_client(mm_jpeg_obj *my_obj)
829 if (my_obj->num_clients >= MAX_JPEG_CLIENT_NUM) {
835 if (0 == my_obj->clnt_mgr[idx].is_used) {
846 my_obj->clnt_mgr[idx].is_used = 1;
847 my_obj->clnt_mgr[idx].client_handle = client_hdl;
850 my_obj->num_clients++;
856 int32_t mm_jpeg_start_job(mm_jpeg_obj *my_obj,
890 node->entry.jpeg_obj = (void*)my_obj; /* save a ptr to jpeg_obj */
892 rc = mm_jpeg_queue_enq(&my_obj->job_mgr.job_queue, node);
894 sem_post(&my_obj->job_mgr.job_sem);
901 int32_t mm_jpeg_abort_job(mm_jpeg_obj *my_obj,
917 pthread_mutex_lock(&my_obj->job_lock);
920 node = mm_jpeg_queue_remove_job_by_job_id(&my_obj->ongoing_job_q, jobId);
924 rc = mm_jpeg_omx_abort_job(my_obj, job_entry);
930 my_obj->job_mgr.job_queue, jobId);
938 node = mm_jpeg_queue_remove_job_by_job_id(&my_obj->cb_q, jobId);
949 pthread_mutex_unlock(&my_obj->job_lock);
952 sem_post(&my_obj->job_mgr.job_sem);
957 int32_t mm_jpeg_close(mm_jpeg_obj *my_obj, uint32_t client_hdl)
972 pthread_mutex_lock(&my_obj->job_lock);
975 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->ongoing_job_q, client_hdl);
979 rc = mm_jpeg_omx_abort_job(my_obj, job_entry);
983 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->ongoing_job_q, client_hdl);
987 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->job_mgr.job_queue, client_hdl);
993 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->job_mgr.job_queue, client_hdl);
997 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->cb_q, client_hdl);
1007 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->cb_q, client_hdl);
1010 pthread_mutex_unlock(&my_obj->job_lock);
1013 memset(&my_obj->clnt_mgr[clnt_idx], 0, sizeof(mm_jpeg_client_t));
1018 void mm_jpeg_job_wait_for_event(mm_jpeg_obj *my_obj, uint32_t evt_mask)
1020 pthread_mutex_lock(&my_obj->omx_evt_lock);
1021 while (!(my_obj->omx_evt_rcvd.evt & evt_mask)) {
1022 pthread_cond_wait(&my_obj->omx_evt_cond, &my_obj->omx_evt_lock);
1025 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1028 void mm_jpeg_job_wait_for_cmd_complete(mm_jpeg_obj *my_obj,
1032 pthread_mutex_lock(&my_obj->omx_evt_lock);
1033 while (!((my_obj->omx_evt_rcvd.evt & MM_JPEG_EVENT_MASK_CMD_COMPLETE) &&
1034 (my_obj->omx_evt_rcvd.omx_value1 == cmd) &&
1035 (my_obj->omx_evt_rcvd.omx_value2 == status))) {
1036 pthread_cond_wait(&my_obj->omx_evt_cond, &my_obj->omx_evt_lock);
1039 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1057 mm_jpeg_obj * my_obj = (mm_jpeg_obj*)pAppData;
1059 if (NULL != my_obj) {
1065 pthread_mutex_lock(&my_obj->omx_evt_lock);
1066 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_JPEG_DONE;
1067 pthread_cond_signal(&my_obj->omx_evt_cond);
1068 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1073 pthread_mutex_lock(&my_obj->job_lock);
1074 node = mm_jpeg_queue_deq(&my_obj->ongoing_job_q);
1095 pthread_mutex_unlock(&my_obj->job_lock);
1098 sem_post(&my_obj->job_mgr.job_sem);
1113 mm_jpeg_obj * my_obj = (mm_jpeg_obj*)pAppData;
1116 if (NULL != my_obj) {
1126 pthread_mutex_lock(&my_obj->omx_evt_lock);
1127 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_JPEG_ABORT;
1128 pthread_cond_signal(&my_obj->omx_evt_cond);
1129 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1138 mm_jpeg_queue_update_flag(&my_obj->ongoing_job_q,
1146 pthread_mutex_lock(&my_obj->omx_evt_lock);
1147 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_JPEG_ERROR;
1148 pthread_cond_signal(&my_obj->omx_evt_cond);
1149 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1155 pthread_mutex_lock(&my_obj->job_lock);
1156 node = mm_jpeg_queue_deq(&my_obj->ongoing_job_q);
1174 pthread_mutex_unlock(&my_obj->job_lock);
1177 sem_post(&my_obj->job_mgr.job_sem);
1188 pthread_mutex_lock(&my_obj->omx_evt_lock);
1189 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_CMD_COMPLETE;
1190 my_obj->omx_evt_rcvd.omx_value1 = nData1;
1191 my_obj->omx_evt_rcvd.omx_value2 = nData2;
1192 pthread_cond_signal(&my_obj->omx_evt_cond);
1193 pthread_mutex_unlock(&my_obj->omx_evt_lock);