Home | History | Annotate | Download | only in src

Lines Matching refs:my_obj

48 int32_t mm_stream_qbuf(mm_stream_t *my_obj,
50 int32_t mm_stream_set_ext_mode(mm_stream_t * my_obj);
51 int32_t mm_stream_set_fmt(mm_stream_t * my_obj);
52 int32_t mm_stream_sync_info(mm_stream_t *my_obj);
53 int32_t mm_stream_init_bufs(mm_stream_t * my_obj);
54 int32_t mm_stream_deinit_bufs(mm_stream_t * my_obj);
55 int32_t mm_stream_request_buf(mm_stream_t * my_obj);
56 int32_t mm_stream_unreg_buf(mm_stream_t * my_obj);
57 int32_t mm_stream_release(mm_stream_t *my_obj);
58 int32_t mm_stream_set_parm(mm_stream_t *my_obj,
60 int32_t mm_stream_get_parm(mm_stream_t *my_obj,
62 int32_t mm_stream_do_action(mm_stream_t *my_obj,
64 int32_t mm_stream_streamon(mm_stream_t *my_obj);
65 int32_t mm_stream_streamoff(mm_stream_t *my_obj);
66 int32_t mm_stream_read_msm_frame(mm_stream_t * my_obj,
69 int32_t mm_stream_config(mm_stream_t *my_obj,
71 int32_t mm_stream_reg_buf(mm_stream_t * my_obj);
72 int32_t mm_stream_buf_done(mm_stream_t * my_obj,
74 int32_t mm_stream_calc_offset(mm_stream_t *my_obj);
77 int32_t mm_stream_fsm_inited(mm_stream_t * my_obj,
81 int32_t mm_stream_fsm_acquired(mm_stream_t * my_obj,
85 int32_t mm_stream_fsm_cfg(mm_stream_t * my_obj,
89 int32_t mm_stream_fsm_buffed(mm_stream_t * my_obj,
93 int32_t mm_stream_fsm_reg(mm_stream_t * my_obj,
97 int32_t mm_stream_fsm_active(mm_stream_t * my_obj,
115 void mm_stream_handle_rcvd_buf(mm_stream_t *my_obj,
120 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
123 if (my_obj->is_bundled) {
134 cam_queue_enq(&(my_obj->ch_obj->cmd_thread.cmd_queue), node);
137 cam_sem_post(&(my_obj->ch_obj->cmd_thread.cmd_sem));
154 cam_queue_enq(&(my_obj->cmd_thread.cmd_queue), node);
157 cam_sem_post(&(my_obj->cmd_thread.cmd_sem));
176 mm_stream_t *my_obj = (mm_stream_t*)user_data;
181 if (NULL == my_obj) {
186 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
187 if (MM_STREAM_STATE_ACTIVE != my_obj->state) {
191 __func__, my_obj->state);
196 rc = mm_stream_read_msm_frame(my_obj, &buf_info, my_obj->frame_offset.num_planes);
202 pthread_mutex_lock(&my_obj->cb_lock);
204 if(NULL != my_obj->buf_cb[i].cb) {
210 pthread_mutex_unlock(&my_obj->cb_lock);
212 pthread_mutex_lock(&my_obj->buf_lock);
214 my_obj->buf_status[idx].in_kernel = 0;
217 if (my_obj->is_bundled) {
219 my_obj->buf_status[idx].buf_refcnt++;
221 my_obj->buf_status[idx].buf_refcnt += has_cb;
222 pthread_mutex_unlock(&my_obj->buf_lock);
224 mm_stream_handle_rcvd_buf(my_obj, &buf_info, has_cb);
242 mm_stream_t * my_obj = (mm_stream_t *)user_data;
247 if (NULL == my_obj) {
251 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
263 super_buf.camera_handle = my_obj->ch_obj->cam_obj->my_hdl;
264 super_buf.ch_id = my_obj->ch_obj->my_hdl;
266 pthread_mutex_lock(&my_obj->cb_lock);
268 if(NULL != my_obj->buf_cb[i].cb) {
269 if (my_obj->buf_cb[i].cb_count != 0) {
275 pthread_mutex_lock(&my_obj->buf_lock);
276 my_obj->buf_status[buf_info->buf->buf_idx].buf_refcnt++;
277 pthread_mutex_unlock(&my_obj->buf_lock);
280 my_obj->buf_cb[i].cb(&super_buf,
281 my_obj->buf_cb[i].user_data);
286 if (my_obj->buf_cb[i].cb_count > 0) {
287 my_obj->buf_cb[i].cb_count--;
288 if (0 == my_obj->buf_cb[i].cb_count) {
289 my_obj->buf_cb[i].cb = NULL;
290 my_obj->buf_cb[i].user_data = NULL;
295 pthread_mutex_unlock(&my_obj->cb_lock);
298 mm_stream_buf_done(my_obj, buf_info->buf);
308 * @my_obj : ptr to a stream object
317 int32_t mm_stream_fsm_fn(mm_stream_t *my_obj,
325 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
326 switch (my_obj->state) {
331 rc = mm_stream_fsm_inited(my_obj, evt, in_val, out_val);
334 rc = mm_stream_fsm_acquired(my_obj, evt, in_val, out_val);
337 rc = mm_stream_fsm_cfg(my_obj, evt, in_val, out_val);
340 rc = mm_stream_fsm_buffed(my_obj, evt, in_val, out_val);
343 rc = mm_stream_fsm_reg(my_obj, evt, in_val, out_val);
346 rc = mm_stream_fsm_active(my_obj, evt, in_val, out_val);
349 CDBG("%s: Not a valid state (%d)", __func__, my_obj->state);
363 * @my_obj : ptr to a stream object
372 int32_t mm_stream_fsm_inited(mm_stream_t *my_obj,
381 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
384 if ((NULL == my_obj->ch_obj) || (NULL == my_obj->ch_obj->cam_obj)) {
391 mm_camera_util_get_dev_name(my_obj->ch_obj->cam_obj->my_hdl));
393 my_obj->fd = open(dev_name, O_RDWR | O_NONBLOCK);
394 if (my_obj->fd < 0) {
395 CDBG_ERROR("%s: open dev returned %d\n", __func__, my_obj->fd);
399 CDBG("%s: open dev fd = %d\n", __func__, my_obj->fd);
400 rc = mm_stream_set_ext_mode(my_obj);
402 my_obj->state = MM_STREAM_STATE_ACQUIRED;
406 close(my_obj->fd);
407 my_obj->fd = -1;
413 __func__, my_obj->state, evt, in_val, out_val);
426 * @my_obj : ptr to a stream object
435 int32_t mm_stream_fsm_acquired(mm_stream_t *my_obj,
443 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
450 rc = mm_stream_config(my_obj, config);
453 my_obj->state = MM_STREAM_STATE_CFG;
458 rc = mm_stream_release(my_obj);
460 my_obj->state = MM_STREAM_STATE_NOTUSED;
466 rc = mm_stream_set_parm(my_obj, payload->parms);
473 rc = mm_stream_get_parm(my_obj, payload->parms);
478 __func__, my_obj->state, evt, in_val, out_val);
491 * @my_obj : ptr to a stream object
500 int32_t mm_stream_fsm_cfg(mm_stream_t * my_obj,
507 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
514 rc = mm_stream_config(my_obj, config);
517 my_obj->state = MM_STREAM_STATE_CFG;
522 rc = mm_stream_release(my_obj);
523 my_obj->state = MM_STREAM_STATE_NOTUSED;
529 rc = mm_stream_set_parm(my_obj, payload->parms);
536 rc = mm_stream_get_parm(my_obj, payload->parms);
540 rc = mm_stream_init_bufs(my_obj);
543 my_obj->state = MM_STREAM_STATE_BUFFED;
548 __func__, my_obj->state, evt, in_val, out_val);
561 * @my_obj : ptr to a stream object
570 int32_t mm_stream_fsm_buffed(mm_stream_t * my_obj,
577 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
580 rc = mm_stream_deinit_bufs(my_obj);
583 my_obj->state = MM_STREAM_STATE_CFG;
587 rc = mm_stream_reg_buf(my_obj);
590 my_obj->state = MM_STREAM_STATE_REG;
597 rc = mm_stream_set_parm(my_obj, payload->parms);
604 rc = mm_stream_get_parm(my_obj, payload->parms);
609 __func__, my_obj->state, evt, in_val, out_val);
622 * @my_obj : ptr to a stream object
631 int32_t mm_stream_fsm_reg(mm_stream_t * my_obj,
638 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
642 rc = mm_stream_unreg_buf(my_obj);
645 my_obj->state = MM_STREAM_STATE_BUFFED;
652 pthread_mutex_lock(&my_obj->cb_lock);
654 if(NULL != my_obj->buf_cb[i].cb) {
659 pthread_mutex_unlock(&my_obj->cb_lock);
662 mm_camera_cmd_thread_launch(&my_obj->cmd_thread,
664 (void *)my_obj);
667 my_obj->state = MM_STREAM_STATE_ACTIVE;
668 rc = mm_stream_streamon(my_obj);
672 mm_camera_cmd_thread_release(&my_obj->cmd_thread);
674 my_obj->state = MM_STREAM_STATE_REG;
683 rc = mm_stream_set_parm(my_obj, payload->parms);
690 rc = mm_stream_get_parm(my_obj, payload->parms);
695 __func__, my_obj->state, evt, in_val, out_val);
708 * @my_obj : ptr to a stream object
717 int32_t mm_stream_fsm_active(mm_stream_t * my_obj,
724 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
727 rc = mm_stream_buf_done(my_obj, (mm_camera_buf_def_t *)in_val);
733 rc = mm_stream_streamoff(my_obj);
735 pthread_mutex_lock(&my_obj->cb_lock);
737 if(NULL != my_obj->buf_cb[i].cb) {
742 pthread_mutex_unlock(&my_obj->cb_lock);
745 mm_camera_cmd_thread_release(&my_obj->cmd_thread);
747 my_obj->state = MM_STREAM_STATE_REG;
754 rc = mm_stream_set_parm(my_obj, payload->parms);
761 rc = mm_stream_get_parm(my_obj, payload->parms);
765 rc = mm_stream_do_action(my_obj, in_val);
769 __func__, my_obj->state, evt, in_val, out_val);
781 * @my_obj : stream object
788 int32_t mm_stream_config(mm_stream_t *my_obj,
793 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
794 my_obj->stream_info = config->stream_info;
795 my_obj->buf_num = 0;
796 my_obj->mem_vtbl = config->mem_vtbl;
797 my_obj->padding_info = config->padding_info;
799 my_obj->buf_cb[0].cb = config->stream_cb;
800 my_obj->buf_cb[0].user_data = config->userdata;
801 my_obj->buf_cb[0].cb_count = -1; /* infinite by default */
803 rc = mm_stream_sync_info(my_obj);
805 rc = mm_stream_set_fmt(my_obj);
816 * @my_obj : stream object
822 int32_t mm_stream_release(mm_stream_t *my_obj)
825 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
828 if(my_obj->fd >= 0)
830 close(my_obj->fd);
834 pthread_mutex_destroy(&my_obj->buf_lock);
835 pthread_mutex_destroy(&my_obj->cb_lock);
838 memset(my_obj, 0, sizeof(mm_stream_t));
839 my_obj->fd = -1;
850 * @my_obj : stream object
856 int32_t mm_stream_streamon(mm_stream_t *my_obj)
862 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
864 rc = ioctl(my_obj->fd, VIDIOC_STREAMON, &buf_type);
869 mm_camera_poll_thread_del_poll_fd(&my_obj->ch_obj->poll_thread[0], my_obj->my_hdl, mm_camera_sync_call);
881 * @my_obj : stream object
887 int32_t mm_stream_streamoff(mm_stream_t *my_obj)
892 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
895 rc = mm_camera_poll_thread_del_poll_fd(&my_obj->ch_obj->poll_thread[0],
896 my_obj->my_hdl, mm_camera_sync_call);
900 rc = mm_camera_poll_thread_commit_updates(&my_obj->ch_obj->poll_thread[0]);
908 rc = ioctl(my_obj->fd, VIDIOC_STREAMOFF, &buf_type);
923 * @my_obj : stream object
931 int32_t mm_stream_read_msm_frame(mm_stream_t * my_obj,
939 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
947 rc = ioctl(my_obj->fd, VIDIOC_DQBUF, &vb);
952 pthread_mutex_lock(&my_obj->buf_lock);
953 my_obj->queued_buffer_count--;
954 if(my_obj->queued_buffer_count == 0) {
955 CDBG_HIGH("%s: Stoping poll on stream %p type :%d", __func__, my_obj, my_obj->stream_info->stream_type);
956 mm_camera_poll_thread_del_poll_fd(&my_obj->ch_obj->poll_thread[0], my_obj->my_hdl, mm_camera_async_call);
957 CDBG_HIGH("%s: Stopped poll on stream %p type :%d", __func__, my_obj, my_obj->stream_info->stream_type);
959 pthread_mutex_unlock(&my_obj->buf_lock);
961 buf_info->buf = &my_obj->buf[idx];
963 buf_info->stream_id = my_obj->my_hdl;
965 buf_info->buf->stream_id = my_obj->my_hdl;
971 __func__, vb.index, buf_info->buf->frame_idx, my_obj->stream_info->stream_type);
972 if ( NULL != my_obj->mem_vtbl.clean_invalidate_buf ) {
973 rc = my_obj->mem_vtbl.clean_invalidate_buf(idx,
974 my_obj->mem_vtbl.user_data);
996 * @my_obj : stream object
1006 int32_t mm_stream_set_parm(mm_stream_t *my_obj,
1012 rc = mm_camera_util_s_ctrl(my_obj->fd, CAM_PRIV_STREAM_PARM, &value);
1023 * @my_obj : stream object
1033 int32_t mm_stream_get_parm(mm_stream_t *my_obj,
1039 rc = mm_camera_util_g_ctrl(my_obj->fd, CAM_PRIV_STREAM_PARM, &value);
1050 * @my_obj : stream object
1060 int32_t mm_stream_do_action(mm_stream_t *my_obj,
1066 rc = mm_camera_util_s_ctrl(my_obj->fd, CAM_PRIV_STREAM_PARM, &value);
1077 * @my_obj : stream object
1086 int32_t mm_stream_set_ext_mode(mm_stream_t * my_obj)
1091 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
1096 rc = ioctl(my_obj->fd, VIDIOC_S_PARM, &s_parm);
1098 __func__, my_obj->fd, rc, s_parm.parm.capture.extendedmode);
1101 my_obj->server_stream_id = s_parm.parm.capture.extendedmode;
1112 * @my_obj : stream object
1119 int32_t mm_stream_qbuf(mm_stream_t *my_obj, mm_camera_buf_def_t *buf)
1125 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
1140 if ( NULL != my_obj->mem_vtbl.invalidate_buf ) {
1141 rc = my_obj->mem_vtbl.invalidate_buf(buffer.index,
1142 my_obj->mem_vtbl.user_data);
1153 my_obj->queued_buffer_count++;
1154 if(my_obj->queued_buffer_count == 1) {
1156 CDBG_HIGH("%s: Starting poll on stream %p type :%d", __func__, my_obj,my_obj->stream_info->stream_type);
1157 rc = mm_camera_poll_thread_add_poll_fd(&my_obj->ch_obj->poll_thread[0],
1158 my_obj->my_hdl,
1159 my_obj->fd,
1161 (void*)my_obj,
1163 CDBG_HIGH("%s: Started poll on stream %p type :%d", __func__, my_obj,my_obj->stream_info->stream_type);
1170 rc = ioctl(my_obj->fd, VIDIOC_QBUF, &buffer);
1182 * @my_obj : stream object
1188 int32_t mm_stream_request_buf(mm_stream_t * my_obj)
1192 uint8_t buf_num = my_obj->buf_num;
1194 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
1206 rc = ioctl(my_obj->fd, VIDIOC_REQBUFS, &bufreq);
1209 __func__, my_obj->fd, rc);
1221 * @my_obj : stream object
1239 int32_t mm_stream_map_buf(mm_stream_t * my_obj,
1246 if (NULL == my_obj || NULL == my_obj->ch_obj || NULL == my_obj->ch_obj->cam_obj) {
1257 packet.payload.buf_map.stream_id = my_obj->server_stream_id;
1260 return mm_camera_util_sendmsg(my_obj->ch_obj->cam_obj,
1272 * @my_obj : stream object
1288 int32_t mm_stream_unmap_buf(mm_stream_t * my_obj,
1293 if (NULL == my_obj || NULL == my_obj->ch_obj || NULL == my_obj->ch_obj->cam_obj) {
1302 packet.payload.buf_unmap.stream_id = my_obj->server_stream_id;
1305 return mm_camera_util_sendmsg(my_obj->ch_obj->cam_obj,
1340 mm_stream_t *my_obj = (mm_stream_t *)userdata;
1341 return mm_stream_map_buf(my_obj,
1371 mm_stream_t *my_obj = (mm_stream_t *)userdata;
1372 return mm_stream_unmap_buf(my_obj,
1386 * @my_obj : stream object
1392 int32_t mm_stream_init_bufs(mm_stream_t * my_obj)
1397 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
1400 if (NULL != my_obj->buf) {
1401 mm_stream_deinit_bufs(my_obj);
1404 my_obj->map_ops.map_ops = mm_stream_map_buf_ops;
1405 my_obj->map_ops.unmap_ops = mm_stream_unmap_buf_ops;
1406 my_obj->map_ops.userdata = my_obj;
1408 rc = my_obj->mem_vtbl.get_bufs(&my_obj->frame_offset,
1409 &my_obj->buf_num,
1411 &my_obj->buf,
1412 &my_obj->map_ops,
1413 my_obj->mem_vtbl.user_data);
1420 my_obj->buf_status =
1421 (mm_stream_buf_status_t *)malloc(sizeof(mm_stream_buf_status_t) * my_obj->buf_num);
1423 if (NULL == my_obj->buf_status) {
1425 mm_stream_deinit_bufs(my_obj);
1430 memset(my_obj->buf_status, 0, sizeof(mm_stream_buf_status_t) * my_obj->buf_num);
1431 for (i = 0; i < my_obj->buf_num; i++) {
1432 my_obj->buf_status[i].initial_reg_flag = reg_flags[i];
1433 my_obj->buf[i].stream_id = my_obj->my_hdl;
1434 my_obj->buf[i].stream_type = my_obj->stream_info->stream_type;
1450 * @my_obj : stream object
1456 int32_t mm_stream_deinit_bufs(mm_stream_t * my_obj)
1461 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
1463 if (NULL == my_obj->buf) {
1471 ops_tbl.userdata = my_obj;
1473 rc = my_obj->mem_vtbl.put_bufs(&ops_tbl,
1474 my_obj->mem_vtbl.user_data);
1476 free(my_obj->buf);
1477 my_obj->buf = NULL;
1478 if (my_obj->buf_status != NULL) {
1479 free(my_obj->buf_status);
1480 my_obj->buf_status = NULL;
1493 * @my_obj : stream object
1499 int32_t mm_stream_reg_buf(mm_stream_t * my_obj)
1504 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
1506 rc = mm_stream_request_buf(my_obj);
1511 pthread_mutex_lock(&my_obj->buf_lock);
1512 my_obj->queued_buffer_count = 0;
1513 for(i = 0; i < my_obj->buf_num; i++){
1515 if (my_obj->buf_status[i].initial_reg_flag) {
1516 rc = mm_stream_qbuf(my_obj, &my_obj->buf[i]);
1522 my_obj->buf_status[i].buf_refcnt = 0;
1523 my_obj->buf_status[i].in_kernel = 1;
1527 my_obj->buf_status[i].buf_refcnt = 1;
1528 my_obj->buf_status[i].in_kernel = 0;
1531 pthread_mutex_unlock(&my_obj->buf_lock);
1542 * @my_obj : stream object
1548 int32_t mm_stream_unreg_buf(mm_stream_t * my_obj)
1553 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
1559 rc = ioctl(my_obj->fd, VIDIOC_REQBUFS, &bufreq);
1562 __func__, my_obj->fd, rc);
1566 pthread_mutex_lock(&my_obj->buf_lock);
1567 if (NULL != my_obj->buf_status) {
1568 for(i = 0; i < my_obj->buf_num; i++){
1569 my_obj->buf_status[i].buf_refcnt = 0;
1570 my_obj->buf_status[i].in_kernel = 0;
1573 pthread_mutex_unlock(&my_obj->buf_lock);
2340 * @my_obj : stream object
2346 int32_t mm_stream_calc_offset(mm_stream_t *my_obj)
2350 cam_dimension_t dim = my_obj->stream_info->dim;
2351 if (my_obj->stream_info->pp_config.feature_mask & CAM_QCOM_FEATURE_ROTATION) {
2352 if (my_obj->stream_info->pp_config.rotation == ROTATE_90 ||
2353 my_obj->stream_info->pp_config.rotation == ROTATE_270) {
2355 dim.width = my_obj->stream_info->dim.height;
2356 dim.height = my_obj->stream_info->dim.width;
2360 switch (my_obj->stream_info->stream_type) {
2364 rc = mm_stream_calc_offset_preview(my_obj->stream_info->fmt,
2366 &my_obj->stream_info->buf_planes);
2370 rc = mm_stream_calc_offset_snapshot(my_obj->stream_info->fmt,
2372 &my_obj->padding_info,
2373 &my_obj->stream_info->buf_planes);
2376 rc = mm_stream_calc_offset_postproc(my_obj->stream_info,
2377 &my_obj->padding_info,
2378 &my_obj->stream_info->buf_planes);
2382 &my_obj->stream_info->buf_planes);
2385 rc = mm_stream_calc_offset_raw(my_obj->stream_info->fmt,
2387 &my_obj->padding_info,
2388 &my_obj->stream_info->buf_planes);
2392 &my_obj->padding_info,
2393 &my_obj->stream_info->buf_planes);
2397 __func__, my_obj->stream_info->stream_type);
2402 my_obj->frame_offset = my_obj->stream_info->buf_planes.plane_info;
2412 * @my_obj : stream object
2424 int32_t mm_stream_sync_info(mm_stream_t *my_obj)
2428 my_obj->stream_info->stream_svr_id = my_obj->server_stream_id;
2429 rc = mm_stream_calc_offset(my_obj);
2432 rc = mm_camera_util_s_ctrl(my_obj->fd,
2445 * @my_obj : stream object
2451 int32_t mm_stream_set_fmt(mm_stream_t *my_obj)
2459 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
2461 if (my_obj->stream_info->dim.width == 0 ||
2462 my_obj->stream_info->dim.height == 0) {
2465 my_obj->stream_info->dim.width,
2466 my_obj->stream_info->dim.height,
2467 my_obj->stream_info->fmt);
2475 msm_fmt.width = my_obj->stream_info->dim.width;
2476 msm_fmt.height = my_obj->stream_info->dim.height;
2477 msm_fmt.pixelformat = mm_stream_get_v4l2_fmt(my_obj->stream_info->fmt);
2478 msm_fmt.num_planes = my_obj->frame_offset.num_planes;
2480 msm_fmt.plane_sizes[i] = my_obj->frame_offset.mp[i].len;
2484 rc = ioctl(my_obj->fd, VIDIOC_S_FMT, &fmt);
2494 * @my_obj : stream object
2501 int32_t mm_stream_buf_done(mm_stream_t * my_obj,
2506 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
2508 pthread_mutex_lock(&my_obj->buf_lock);
2509 if(my_obj->buf_status[frame->buf_idx].buf_refcnt == 0) {
2512 my_obj->buf_status[frame->buf_idx].buf_refcnt);
2515 my_obj->buf_status[frame->buf_idx].buf_refcnt--;
2516 if (0 == my_obj->buf_status[frame->buf_idx].buf_refcnt) {
2518 rc = mm_stream_qbuf(my_obj, frame);
2523 my_obj->buf_status[frame->buf_idx].in_kernel = 1;
2527 my_obj->buf_status[frame->buf_idx].buf_refcnt);
2529 my_obj, frame->buf_idx);
2532 pthread_mutex_unlock(&my_obj->buf_lock);
2542 * @my_obj : stream object
2549 int32_t mm_stream_reg_buf_cb(mm_stream_t *my_obj,
2555 __func__, my_obj->my_hdl, my_obj->fd, my_obj->state);
2557 pthread_mutex_lock(&my_obj->cb_lock);
2559 if(NULL == my_obj->buf_cb[i].cb) {
2560 my_obj->buf_cb[i] = *val;
2565 pthread_mutex_unlock(&my_obj->cb_lock);