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,
75 int32_t mm_jpeg_omx_load(mm_jpeg_obj* my_obj)
79 my_obj->omx_callbacks.EmptyBufferDone = mm_jpeg_etbdone;
80 my_obj->omx_callbacks.FillBufferDone = mm_jpeg_ftbdone;
81 my_obj->omx_callbacks.EventHandler = mm_jpeg_handle_omx_event;
82 rc = OMX_GetHandle(&my_obj->omx_handle,
84 (void*)my_obj,
85 &my_obj->omx_callbacks);
100 int32_t mm_jpeg_omx_unload(mm_jpeg_obj *my_obj)
107 int32_t mm_jpeg_clean_omx_job(mm_jpeg_obj *my_obj, mm_jpeg_job_entry* job_entry)
112 OMX_SendCommand(my_obj->omx_handle, OMX_CommandStateSet, OMX_StateIdle, NULL);
113 OMX_SendCommand(my_obj->omx_handle, OMX_CommandStateSet, OMX_StateLoaded, NULL);
119 OMX_FreeBuffer(my_obj->omx_handle,
125 OMX_FreeBuffer(my_obj->omx_handle,
132 int32_t mm_jpeg_omx_abort_job(mm_jpeg_obj *my_obj, mm_jpeg_job_entry* job_entry)
136 OMX_SendCommand(my_obj->omx_handle, OMX_CommandFlush, 0, NULL);
137 mm_jpeg_job_wait_for_event(my_obj,
142 mm_jpeg_clean_omx_job(my_obj, job_entry);
148 int32_t mm_jpeg_omx_config_main_buffer_offset(mm_jpeg_obj* my_obj,
158 OMX_GetExtensionIndex(my_obj->omx_handle,
182 OMX_SetParameter(my_obj->omx_handle, buf_offset_idx, &buffer_offset);
191 OMX_GetExtensionIndex(my_obj->omx_handle,"omx.qcom.jpeg.exttype.acbcr_offset",&buf_offset_idx);
192 OMX_SetParameter(my_obj->omx_handle, buf_offset_idx, &buffer_offset);
203 OMX_SetParameter(my_obj->omx_handle, buf_offset_idx, &buffer_offset);
214 int32_t mm_jpeg_omx_config_port(mm_jpeg_obj* my_obj, src_image_buffer_info *src_buf, int port_idx)
223 OMX_GetParameter(my_obj->omx_handle, OMX_IndexParamPortDefinition, &input_port);
242 OMX_SetParameter(my_obj->omx_handle, OMX_IndexParamPortDefinition, &input_port);
281 int32_t mm_jpeg_omx_config_user_preference(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
294 OMX_GetExtensionIndex(my_obj->omx_handle,
306 OMX_SetParameter(my_obj->omx_handle, user_pref_idx, &user_preferences);
310 int32_t mm_jpeg_omx_config_thumbnail(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
326 rc = mm_jpeg_omx_config_port(my_obj, src_buf, INPUT_PORT_THUMBNAIL);
373 OMX_GetExtensionIndex(my_obj->omx_handle, "omx.qcom.jpeg.exttype.thumbnail", &thumb_idx);
374 OMX_SetParameter(my_obj->omx_handle, thumb_idx, &thumbnail);
380 OMX_GetExtensionIndex(my_obj->omx_handle, "omx.qcom.jpeg.exttype.thumbnail_quality", &q_idx);
381 OMX_GetParameter(my_obj->omx_handle, q_idx, &quality);
383 OMX_SetParameter(my_obj->omx_handle, q_idx, &quality);
390 int32_t mm_jpeg_omx_config_main_crop(mm_jpeg_obj* my_obj, src_image_buffer_info *src_buf)
431 OMX_SetConfig(my_obj->omx_handle, OMX_IndexConfigCommonInputCrop, &rect_type_in);
437 OMX_SetConfig(my_obj->omx_handle, OMX_IndexConfigCommonOutputCrop, &rect_type_out);
445 int32_t mm_jpeg_omx_config_main(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
454 rc = mm_jpeg_omx_config_port(my_obj, src_buf, INPUT_PORT_MAIN);
462 rc = mm_jpeg_omx_config_main_buffer_offset(my_obj, src_buf, job->encode_parm.buf_info.src_imgs.is_video_frame);
470 rc = mm_jpeg_omx_config_main_crop(my_obj, src_buf);
479 OMX_GetParameter(my_obj->omx_handle, OMX_IndexParamQFactor, &q_factor);
481 OMX_SetParameter(my_obj->omx_handle, OMX_IndexParamQFactor, &q_factor);
487 int32_t mm_jpeg_omx_config_common(mm_jpeg_obj* my_obj, mm_jpeg_encode_job* job)
497 rc = mm_jpeg_omx_config_user_preference(my_obj, job);
507 OMX_SetConfig(my_obj->omx_handle, OMX_IndexConfigCommonRotate, &rotate);
513 OMX_GetExtensionIndex(my_obj->omx_handle, "omx.qcom.jpeg.exttype.exif", &exif_idx);
516 OMX_SetParameter(my_obj->omx_handle, exif_idx, &tag);
524 OMX_GetExtensionIndex(my_obj->omx_handle, "omx.qcom.jpeg.exttype.mobicat", &mobicat_data);
525 OMX_SetParameter(my_obj->omx_handle, mobicat_data, &mobicat_d);
531 int32_t mm_jpeg_omx_use_buf(mm_jpeg_obj* my_obj,
548 OMX_UseBuffer(my_obj->omx_handle,
563 OMX_UseBuffer(my_obj->omx_handle,
579 int32_t mm_jpeg_omx_encode(mm_jpeg_obj* my_obj, mm_jpeg_job_entry* job_entry)
589 rc = mm_jpeg_omx_config_main(my_obj, job);
597 rc = mm_jpeg_omx_config_thumbnail(my_obj, job);
605 rc = mm_jpeg_omx_config_common(my_obj, job);
614 rc = mm_jpeg_omx_use_buf(my_obj,
627 rc = mm_jpeg_omx_use_buf(my_obj,
639 OMX_UseBuffer(my_obj->omx_handle,
652 mm_jpeg_job_wait_for_cmd_complete(my_obj, OMX_CommandStateSet, OMX_StateIdle);
657 OMX_SendCommand(my_obj->omx_handle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
658 mm_jpeg_job_wait_for_cmd_complete(my_obj, OMX_CommandStateSet, OMX_StateExecuting);
663 OMX_EmptyThisBuffer(my_obj->omx_handle,
669 OMX_EmptyThisBuffer(my_obj->omx_handle,
674 OMX_FillThisBuffer(my_obj->omx_handle, job_entry->sink_buf.buf_header);
682 mm_jpeg_obj* my_obj = (mm_jpeg_obj *)job_entry->jpeg_obj;
687 if (NULL == my_obj) {
695 rc = mm_jpeg_queue_enq(&my_obj->cb_q, data);
714 node = mm_jpeg_queue_remove_job_by_job_id(&my_obj->cb_q, jobId);
728 int32_t mm_jpeg_process_encoding_job(mm_jpeg_obj *my_obj, mm_jpeg_job_q_node_t* job_node)
734 rc = mm_jpeg_omx_encode(my_obj, job_entry);
737 rc = mm_jpeg_queue_enq(&my_obj->ongoing_job_q, job_node);
757 int32_t mm_jpeg_process_job(mm_jpeg_obj *my_obj, mm_jpeg_job_q_node_t* job_node)
763 rc = mm_jpeg_process_encoding_job(my_obj, job_node);
781 mm_jpeg_obj *my_obj = (mm_jpeg_obj*)data;
782 mm_jpeg_job_cmd_thread_t *cmd_thread = &my_obj->job_mgr;
796 num_ongoing_jobs = mm_jpeg_queue_get_size(&my_obj->ongoing_job_q);
802 pthread_mutex_lock(&my_obj->job_lock);
808 mm_jpeg_process_job(my_obj, node);
819 pthread_mutex_unlock(&my_obj->job_lock);
825 int32_t mm_jpeg_jobmgr_thread_launch(mm_jpeg_obj * my_obj)
828 mm_jpeg_job_cmd_thread_t * job_mgr = &my_obj->job_mgr;
837 (void *)my_obj);
841 int32_t mm_jpeg_jobmgr_thread_release(mm_jpeg_obj * my_obj)
844 mm_jpeg_job_cmd_thread_t * cmd_thread = &my_obj->job_mgr;
869 int32_t mm_jpeg_init(mm_jpeg_obj *my_obj)
874 pthread_mutex_init(&my_obj->job_lock, NULL);
875 pthread_mutex_init(&my_obj->omx_evt_lock, NULL);
876 pthread_cond_init(&my_obj->omx_evt_cond, NULL);
879 rc = mm_jpeg_queue_init(&my_obj->ongoing_job_q);
880 rc = mm_jpeg_queue_init(&my_obj->cb_q);
884 rc = mm_jpeg_jobmgr_thread_launch(my_obj);
887 rc = mm_jpeg_omx_load(my_obj);
890 mm_jpeg_jobmgr_thread_release(my_obj);
891 mm_jpeg_queue_deinit(&my_obj->ongoing_job_q);
892 pthread_mutex_destroy(&my_obj->job_lock);
893 pthread_mutex_destroy(&my_obj->omx_evt_lock);
894 pthread_cond_destroy(&my_obj->omx_evt_cond);
900 int32_t mm_jpeg_deinit(mm_jpeg_obj *my_obj)
905 rc = mm_jpeg_omx_unload(my_obj);
908 rc = mm_jpeg_jobmgr_thread_release(my_obj);
911 rc = mm_jpeg_queue_deinit(&my_obj->ongoing_job_q);
912 rc = mm_jpeg_queue_deinit(&my_obj->cb_q);
915 pthread_mutex_destroy(&my_obj->job_lock);
916 pthread_mutex_destroy(&my_obj->omx_evt_lock);
917 pthread_cond_destroy(&my_obj->omx_evt_cond);
922 uint32_t mm_jpeg_new_client(mm_jpeg_obj *my_obj)
927 if (my_obj->num_clients >= MAX_JPEG_CLIENT_NUM) {
933 if (0 == my_obj->clnt_mgr[idx].is_used) {
944 my_obj->clnt_mgr[idx].is_used = 1;
945 my_obj->clnt_mgr[idx].client_handle = client_hdl;
948 my_obj->num_clients++;
954 int32_t mm_jpeg_start_job(mm_jpeg_obj *my_obj,
988 node->entry.jpeg_obj = (void*)my_obj; /* save a ptr to jpeg_obj */
990 rc = mm_jpeg_queue_enq(&my_obj->job_mgr.job_queue, node);
992 sem_post(&my_obj->job_mgr.job_sem);
999 int32_t mm_jpeg_abort_job(mm_jpeg_obj *my_obj,
1015 pthread_mutex_lock(&my_obj->job_lock);
1018 node = mm_jpeg_queue_remove_job_by_job_id(&my_obj->ongoing_job_q, jobId);
1022 rc = mm_jpeg_omx_abort_job(my_obj, job_entry);
1028 node = mm_jpeg_queue_remove_job_by_job_id(&my_obj->job_mgr.job_queue, jobId);
1035 node = mm_jpeg_queue_remove_job_by_job_id(&my_obj->cb_q, jobId);
1045 pthread_mutex_unlock(&my_obj->job_lock);
1048 sem_post(&my_obj->job_mgr.job_sem);
1053 int32_t mm_jpeg_close(mm_jpeg_obj *my_obj, uint32_t client_hdl)
1070 pthread_mutex_lock(&my_obj->job_lock);
1074 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->ongoing_job_q, client_hdl);
1078 rc = mm_jpeg_omx_abort_job(my_obj, job_entry);
1082 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->ongoing_job_q, client_hdl);
1087 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->job_mgr.job_queue, client_hdl);
1093 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->job_mgr.job_queue, client_hdl);
1098 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->cb_q, client_hdl);
1108 node = mm_jpeg_queue_remove_job_by_client_id(&my_obj->cb_q, client_hdl);
1111 pthread_mutex_unlock(&my_obj->job_lock);
1114 memset(&my_obj->clnt_mgr[clnt_idx], 0, sizeof(mm_jpeg_client_t));
1121 void mm_jpeg_job_wait_for_event(mm_jpeg_obj *my_obj, uint32_t evt_mask)
1123 pthread_mutex_lock(&my_obj->omx_evt_lock);
1124 while (!(my_obj->omx_evt_rcvd.evt & evt_mask)) {
1125 pthread_cond_wait(&my_obj->omx_evt_cond, &my_obj->omx_evt_lock);
1128 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1131 void mm_jpeg_job_wait_for_cmd_complete(mm_jpeg_obj *my_obj,
1135 pthread_mutex_lock(&my_obj->omx_evt_lock);
1136 while (!((my_obj->omx_evt_rcvd.evt & MM_JPEG_EVENT_MASK_CMD_COMPLETE) &&
1137 (my_obj->omx_evt_rcvd.omx_value1 == cmd) &&
1138 (my_obj->omx_evt_rcvd.omx_value2 == status))) {
1139 pthread_cond_wait(&my_obj->omx_evt_cond, &my_obj->omx_evt_lock);
1142 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1160 mm_jpeg_obj * my_obj = (mm_jpeg_obj*)pAppData;
1162 if (NULL == my_obj) {
1170 pthread_mutex_lock(&my_obj->omx_evt_lock);
1171 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_JPEG_DONE;
1172 pthread_cond_signal(&my_obj->omx_evt_cond);
1173 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1179 pthread_mutex_lock(&my_obj->job_lock);
1180 node = mm_jpeg_queue_deq(&my_obj->ongoing_job_q);
1191 mm_jpeg_clean_omx_job(my_obj, job_entry);
1205 pthread_mutex_unlock(&my_obj->job_lock);
1208 sem_post(&my_obj->job_mgr.job_sem);
1223 mm_jpeg_obj * my_obj = (mm_jpeg_obj*)pAppData;
1226 if (NULL == my_obj) {
1237 pthread_mutex_lock(&my_obj->omx_evt_lock);
1238 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_JPEG_ABORT;
1239 pthread_cond_signal(&my_obj->omx_evt_cond);
1240 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1250 mm_jpeg_job_q_node_t* data = (mm_jpeg_job_q_node_t*)mm_jpeg_queue_peek(&my_obj->ongoing_job_q);
1252 mm_jpeg_queue_update_flag(&my_obj->ongoing_job_q,
1260 pthread_mutex_lock(&my_obj->omx_evt_lock);
1261 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_JPEG_ERROR;
1262 pthread_cond_signal(&my_obj->omx_evt_cond);
1263 pthread_mutex_unlock(&my_obj->omx_evt_lock);
1269 pthread_mutex_lock(&my_obj->job_lock);
1270 node = mm_jpeg_queue_deq(&my_obj->ongoing_job_q);
1275 mm_jpeg_clean_omx_job(my_obj, job_entry);
1291 pthread_mutex_unlock(&my_obj->job_lock);
1294 sem_post(&my_obj->job_mgr.job_sem);
1307 pthread_mutex_lock(&my_obj->omx_evt_lock);
1308 my_obj->omx_evt_rcvd.evt = MM_JPEG_EVENT_MASK_CMD_COMPLETE;
1309 my_obj->omx_evt_rcvd.omx_value1 = nData1;
1310 my_obj->omx_evt_rcvd.omx_value2 = nData2;
1311 pthread_cond_signal(&my_obj->omx_evt_cond);
1312 pthread_mutex_unlock(&my_obj->omx_evt_lock);