Lines Matching refs:drv_ctx

151     pfd.fd = omx->drv_ctx.video_driver_fd;
168 v4l2_buf.length = omx->drv_ctx.num_planes;
586 memset (&drv_ctx,0,sizeof(drv_ctx));
594 memset(&drv_ctx.extradata_info, 0, sizeof(drv_ctx.extradata_info));
595 drv_ctx.timestamp_adjust = false;
596 drv_ctx.video_driver_fd = -1;
704 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_DECODER_CMD, &dec)) {
708 unsubscribe_to_events(drv_ctx.video_driver_fd);
709 close(drv_ctx.video_driver_fd);
728 rc = ioctl(obj->drv_ctx.video_driver_fd,VIDIOC_REQBUFS, &bufreq);
831 OMX_ERRORTYPE eRet1 = pThis->get_buffer_req(&pThis->drv_ctx.op_buf);
896 (pThis->drv_ctx.interlace != VDEC_InterlaceFrameProgressive)
917 (pThis->drv_ctx.interlace != VDEC_InterlaceFrameProgressive)
1050 if (/*ioctl (pThis->drv_ctx.video_driver_fd,
1147 if (pThis->drv_ctx.interlace != VDEC_InterlaceFrameProgressive) {
1150 if (pThis->drv_ctx.interlace == VDEC_InterlaceInterleaveFrameTopFieldFirst)
1152 else if (pThis->drv_ctx.interlace == VDEC_InterlaceInterleaveFrameBottomFieldFirst)
1206 drv_ctx.video_resolution.frame_height = height;
1207 drv_ctx.video_resolution.frame_width = width;
1208 drv_ctx.video_resolution.scan_lines = height;
1209 drv_ctx.video_resolution.stride = width;
1212 rectangle.nWidth = drv_ctx.video_resolution.frame_width;
1213 rectangle.nHeight = drv_ctx.video_resolution.frame_height;
1248 drv_ctx.video_driver_fd = open(device_name, O_RDWR);
1251 device_name, drv_ctx.video_driver_fd, errno);
1253 if (drv_ctx.video_driver_fd == 0) {
1254 drv_ctx.video_driver_fd = open(device_name, O_RDWR);
1257 if (drv_ctx.video_driver_fd < 0) {
1261 drv_ctx.frame_rate.fps_numerator = DEFAULT_FPS;
1262 drv_ctx.frame_rate.fps_denominator = 1;
1266 close(drv_ctx.video_driver_fd);
1282 strlcpy(drv_ctx.kind,role,128);
1284 if (!strncmp(drv_ctx.kind,"OMX.qcom.video.decoder.mpeg4",\
1288 drv_ctx.timestamp_adjust = true;
1289 drv_ctx.decoder_format = VDEC_CODECTYPE_MPEG4;
1298 } else if (!strncmp(drv_ctx.kind,"OMX.qcom.video.decoder.mpeg2",\
1302 drv_ctx.decoder_format = VDEC_CODECTYPE_MPEG2;
1311 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.h263",\
1315 drv_ctx.decoder_format = VDEC_CODECTYPE_H263;
1323 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.divx311",\
1327 drv_ctx.decoder_format = VDEC_CODECTYPE_DIVX_3;
1338 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.divx4",\
1342 drv_ctx.decoder_format = VDEC_CODECTYPE_DIVX_4;
1354 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.divx",\
1358 drv_ctx.decoder_format = VDEC_CODECTYPE_DIVX_6;
1371 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.avc",\
1374 drv_ctx.decoder_format = VDEC_CODECTYPE_H264;
1383 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.hevc",\
1386 drv_ctx.decoder_format = VDEC_CODECTYPE_HEVC;
1395 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vc1",\
1398 drv_ctx.decoder_format = VDEC_CODECTYPE_VC1;
1406 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.wmv",\
1409 drv_ctx.decoder_format = VDEC_CODECTYPE_VC1_RCV;
1417 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp8",\
1433 drv_ctx.output_format = VDEC_YUV_FORMAT_NV12;
1442 ret = subscribe_to_events(drv_ctx.video_driver_fd);
1449 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_QUERYCAP, &cap);
1461 while (ioctl(drv_ctx.video_driver_fd, VIDIOC_ENUM_FMT, &fdesc) == 0) {
1468 while (ioctl(drv_ctx.video_driver_fd, VIDIOC_ENUM_FMT, &fdesc) == 0) {
1476 fmt.fmt.pix_mp.height = drv_ctx.video_resolution.frame_height;
1477 fmt.fmt.pix_mp.width = drv_ctx.video_resolution.frame_width;
1479 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_FMT, &fmt);
1489 if (drv_ctx.decoder_format == VDEC_CODECTYPE_DIVX_4) {
1491 } else if (drv_ctx.decoder_format == VDEC_CODECTYPE_DIVX_5) {
1498 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &divx_ctrl);
1508 fmt.fmt.pix_mp.height = drv_ctx.video_resolution.frame_height;
1509 fmt.fmt.pix_mp.width = drv_ctx.video_resolution.frame_width;
1511 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_FMT, &fmt);
1521 ret=ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL,&control);
1524 close(drv_ctx.video_driver_fd);
1530 drv_ctx.ip_buf.buffer_type = VDEC_BUFFER_TYPE_INPUT;
1531 drv_ctx.op_buf.buffer_type = VDEC_BUFFER_TYPE_OUTPUT;
1533 drv_ctx.op_buf.alignment=SZ_1M;
1534 drv_ctx.ip_buf.alignment=SZ_1M;
1536 drv_ctx.op_buf.alignment=SZ_4K;
1537 drv_ctx.ip_buf.alignment=SZ_4K;
1539 drv_ctx.interlace = VDEC_InterlaceFrameProgressive;
1540 drv_ctx.extradata = 0;
1541 drv_ctx.picture_order = VDEC_ORDER_DISPLAY;
1544 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control);
1545 drv_ctx.idr_only_decoding = 0;
1552 eRet=get_buffer_req(&drv_ctx.ip_buf);
1553 DEBUG_PRINT_HIGH("Input Buffer Size =%d",drv_ctx.ip_buf.buffer_size);
1554 get_buffer_req(&drv_ctx.op_buf);
1555 if (drv_ctx.decoder_format == VDEC_CODECTYPE_H264 ||
1556 drv_ctx.decoder_format == VDEC_CODECTYPE_HEVC) {
1557 h264_scratch.nAllocLen = drv_ctx.ip_buf.buffer_size;
1558 h264_scratch.pBuffer = (OMX_U8 *)malloc (drv_ctx.ip_buf.buffer_size);
1568 if (drv_ctx.decoder_format == VDEC_CODECTYPE_H264) {
1577 m_frame_parser.mutils->allocate_rbsp_buffer (drv_ctx.ip_buf.buffer_size);
1617 (void)ioctl(drv_ctx.video_driver_fd, VDEC_IOCTL_STOP_NEXT_MSG,
1620 close (drv_ctx.video_driver_fd);
1621 drv_ctx.video_driver_fd = -1;
1829 if (/*ioctl (drv_ctx.video_driver_fd,VDEC_IOCTL_CMD_START,
2168 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_DECODER_CMD, &dec)) {
2365 if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.avc",OMX_MAX_STRINGNAME_SIZE)) {
2381 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.hevc",OMX_MAX_STRINGNAME_SIZE)) {
2388 } else if ((!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.h263",OMX_MAX_STRINGNAME_SIZE))) {
2396 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg4",OMX_MAX_STRINGNAME_SIZE)) {
2407 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp8",OMX_MAX_STRINGNAME_SIZE)) {
2409 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg2",OMX_MAX_STRINGNAME_SIZE)) {
2663 drv_ctx.video_resolution.frame_width,
2664 drv_ctx.video_resolution.frame_height,
2665 drv_ctx.video_resolution.stride,
2666 drv_ctx.video_resolution.scan_lines);
2758 if ( portDefn->nBufferCountActual >= drv_ctx.op_buf.mincount &&
2759 portDefn->nBufferSize >= drv_ctx.op_buf.buffer_size ) {
2760 drv_ctx.op_buf.actualcount = portDefn->nBufferCountActual;
2761 drv_ctx.op_buf.buffer_size = portDefn->nBufferSize;
2762 eRet = set_buffer_req(&drv_ctx.op_buf);
2767 drv_ctx.op_buf.mincount, drv_ctx.op_buf.buffer_size,
2780 Q16ToFraction(portDefn->format.video.xFramerate, drv_ctx.frame_rate.fps_numerator,
2781 drv_ctx.frame_rate.fps_denominator);
2782 if (!drv_ctx.frame_rate.fps_numerator) {
2784 drv_ctx.frame_rate.fps_numerator = 30;
2786 if (drv_ctx.frame_rate.fps_denominator)
2787 drv_ctx.frame_rate.fps_numerator = (int)
2788 drv_ctx.frame_rate.fps_numerator / drv_ctx.frame_rate.fps_denominator;
2789 drv_ctx.frame_rate.fps_denominator = 1;
2790 frm_int = drv_ctx.frame_rate.fps_denominator * 1e6 /
2791 drv_ctx.frame_rate.fps_numerator;
2793 frm_int, drv_ctx.frame_rate.fps_numerator /
2794 (float)drv_ctx.frame_rate.fps_denominator);
2797 if (drv_ctx.video_resolution.frame_height !=
2799 drv_ctx.video_resolution.frame_width !=
2809 fmt.fmt.pix_mp.height = drv_ctx.video_resolution.frame_height;
2810 fmt.fmt.pix_mp.width = drv_ctx.video_resolution.frame_width;
2813 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_FMT, &fmt);
2818 eRet = get_buffer_req(&drv_ctx.op_buf);
2820 } else if (portDefn->nBufferCountActual >= drv_ctx.ip_buf.mincount
2821 || portDefn->nBufferSize != drv_ctx.ip_buf.buffer_size) {
2822 vdec_allocatorproperty *buffer_prop = &drv_ctx.ip_buf;
2823 drv_ctx.ip_buf.actualcount = portDefn->nBufferCountActual;
2824 drv_ctx.ip_buf.buffer_size = (portDefn->nBufferSize + buffer_prop->alignment - 1) &
2829 drv_ctx.ip_buf.mincount, drv_ctx.ip_buf.buffer_size,
2851 fmt.fmt.pix_mp.height = drv_ctx.video_resolution.frame_height;
2852 fmt.fmt.pix_mp.width = drv_ctx.video_resolution.frame_width;
2867 drv_ctx.output_format = op_format;
2868 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_FMT, &fmt);
2874 eRet = get_buffer_req(&drv_ctx.op_buf);
2942 if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.avc",OMX_MAX_STRINGNAME_SIZE)) {
2949 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.hevc",OMX_MAX_STRINGNAME_SIZE)) {
2956 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg4",OMX_MAX_STRINGNAME_SIZE)) {
2963 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.h263",OMX_MAX_STRINGNAME_SIZE)) {
2970 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg2",OMX_MAX_STRINGNAME_SIZE)) {
2977 } else if ((!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.divx",OMX_MAX_STRINGNAME_SIZE)) ||
2978 (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.divx311",OMX_MAX_STRINGNAME_SIZE))
2986 } else if ( (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vc1",OMX_MAX_STRINGNAME_SIZE)) ||
2987 (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.wmv",OMX_MAX_STRINGNAME_SIZE))
2995 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp8",OMX_MAX_STRINGNAME_SIZE)) {
3004 DEBUG_PRINT_ERROR("Setparameter: unknown param %s", drv_ctx.kind);
3086 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control);
3160 drv_ctx.idr_only_decoding = 1;
3163 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control);
3170 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control);
3199 int rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL,&control);
3227 if (drv_ctx.picture_order == (vdec_output_order)QOMX_VIDEO_DISPLAY_ORDER) {
3312 if (drv_ctx.decoder_format == VDEC_CODECTYPE_H264) {
3373 if (!strcmp(drv_ctx.kind, "OMX.qcom.video.decoder.avc")) {
3427 } else if (!strcmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg4") ||
3428 !strcmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg2")) {
3433 } else if (!strcmp(drv_ctx.kind, "OMX.qcom.video.decoder.vc1")) {
3591 if (drv_ctx.extradata_info.buffer_size) {
3592 if (drv_ctx.extradata_info.ion.ion_alloc_data.handle) {
3593 munmap((void *)drv_ctx.extradata_info.uaddr, drv_ctx.extradata_info.size);
3594 close(drv_ctx.extradata_info.ion.fd_ion_data.fd);
3595 free_ion_memory(&drv_ctx.extradata_info.ion);
3597 drv_ctx.extradata_info.size = (drv_ctx.extradata_info.size + 4095) & (~4095);
3598 DEBUG_PRINT_HIGH("allocate extradata memory size %d", drv_ctx.extradata_info.size);
3599 drv_ctx.extradata_info.ion.ion_device_fd = alloc_map_ion_memory(
3600 drv_ctx.extradata_info.size, 4096,
3601 &drv_ctx.extradata_info.ion.ion_alloc_data,
3602 &drv_ctx.extradata_info.ion.fd_ion_data, 0);
3603 if (drv_ctx.extradata_info.ion.ion_device_fd < 0) {
3607 drv_ctx.extradata_info.uaddr = (char *)mmap(NULL,
3608 drv_ctx.extradata_info.size,
3610 drv_ctx.extradata_info.ion.fd_ion_data.fd , 0);
3611 if (drv_ctx.extradata_info.uaddr == MAP_FAILED) {
3613 close(drv_ctx.extradata_info.ion.fd_ion_data.fd);
3614 free_ion_memory(&drv_ctx.extradata_info.ion);
3617 memset(drv_ctx.extradata_info.uaddr, 0, drv_ctx.extradata_info.size);
3626 if (drv_ctx.extradata_info.uaddr) {
3627 munmap((void *)drv_ctx.extradata_info.uaddr, drv_ctx.extradata_info.size);
3628 close(drv_ctx.extradata_info.ion.fd_ion_data.fd);
3629 free_ion_memory(&drv_ctx.extradata_info.ion);
3631 memset(&drv_ctx.extradata_info, 0, sizeof(drv_ctx.extradata_info));
3662 for (i=0; i< drv_ctx.op_buf.actualcount; i++) {
3669 if (i >= drv_ctx.op_buf.actualcount) {
3670 DEBUG_PRINT_ERROR("Already using %d o/p buffers", drv_ctx.op_buf.actualcount);
3687 if ((OMX_U32)handle->size < drv_ctx.op_buf.buffer_size) {
3690 drv_ctx.op_buf.buffer_size, (OMX_U32)handle->size);
3694 drv_ctx.op_buf.buffer_size = (OMX_U32)handle->size;
3713 drv_ctx.ptr_outputbuffer[i].pmem_fd = handle->fd;
3714 drv_ctx.ptr_outputbuffer[i].offset = 0;
3715 drv_ctx.ptr_outputbuffer[i].bufferaddr = buff;
3716 drv_ctx.ptr_outputbuffer[i].mmaped_size =
3717 drv_ctx.ptr_outputbuffer[i].buffer_len = drv_ctx.op_buf.buffer_size;
3723 DEBUG_PRINT_HIGH("allocate output buffer memory size %d", drv_ctx.op_buf.buffer_size);
3724 drv_ctx.op_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
3725 drv_ctx.op_buf.buffer_size,drv_ctx.op_buf.alignment,
3726 &drv_ctx.op_buf_ion_info[i].ion_alloc_data,
3727 &drv_ctx.op_buf_ion_info[i].fd_ion_data, secure_mode ? ION_SECURE : 0);
3728 if (drv_ctx.op_buf_ion_info[i].ion_device_fd < 0) {
3729 DEBUG_PRINT_ERROR("ION device fd is bad %d", drv_ctx.op_buf_ion_info[i].ion_device_fd);
3732 drv_ctx.ptr_outputbuffer[i].pmem_fd = \
3733 drv_ctx.op_buf_ion_info[i].fd_ion_data.fd;
3735 drv_ctx.ptr_outputbuffer[i].pmem_fd = \
3738 if (drv_ctx.ptr_outputbuffer[i].pmem_fd < 0) {
3739 DEBUG_PRINT_ERROR("ION/pmem buffer fd is bad %d", drv_ctx.ptr_outputbuffer[i].pmem_fd);
3744 if (drv_ctx.ptr_outputbuffer[i].pmem_fd == 0) {
3745 drv_ctx.ptr_outputbuffer[i].pmem_fd = \
3747 if (drv_ctx.ptr_outputbuffer[i].pmem_fd < 0) {
3748 DEBUG_PRINT_ERROR("ION/pmem buffer fd is bad %d", drv_ctx.ptr_outputbuffer[i].pmem_fd);
3753 if (!align_pmem_buffers(drv_ctx.ptr_outputbuffer[i].pmem_fd,
3754 drv_ctx.op_buf.buffer_size,
3755 drv_ctx.op_buf.alignment)) {
3757 close(drv_ctx.ptr_outputbuffer[i].pmem_fd);
3762 drv_ctx.ptr_outputbuffer[i].bufferaddr =
3763 (unsigned char *)mmap(NULL, drv_ctx.op_buf.buffer_size,
3765 drv_ctx.ptr_outputbuffer[i].pmem_fd,0);
3766 if (drv_ctx.ptr_outputbuffer[i].bufferaddr == MAP_FAILED) {
3767 close(drv_ctx.ptr_outputbuffer[i].pmem_fd);
3769 free_ion_memory(&drv_ctx.op_buf_ion_info[i]);
3775 drv_ctx.ptr_outputbuffer[i].offset = 0;
3800 drv_ctx.ptr_outputbuffer[i].pmem_fd = pmem_info->pmem_fd;
3801 drv_ctx.ptr_outputbuffer[i].offset = pmem_info->offset;
3802 drv_ctx.ptr_outputbuffer[i].bufferaddr = buff;
3803 drv_ctx.ptr_outputbuffer[i].mmaped_size =
3804 drv_ctx.ptr_outputbuffer[i].buffer_len = drv_ctx.op_buf.buffer_size;
3807 m_pmem_info[i].offset = drv_ctx.ptr_outputbuffer[i].offset;
3808 m_pmem_info[i].pmem_fd = drv_ctx.ptr_outputbuffer[i].pmem_fd;
3812 drv_ctx.ptr_outputbuffer[i].bufferaddr = *bufferHdr;
3814 memcpy (&setbuffers.buffer,&drv_ctx.ptr_outputbuffer[i],
3818 drv_ctx.ptr_outputbuffer[i].bufferaddr,
3819 drv_ctx.ptr_outputbuffer[i].pmem_fd );
3824 plane[0].length = drv_ctx.op_buf.buffer_size;
3825 plane[0].m.userptr = (unsigned long)drv_ctx.ptr_outputbuffer[i].bufferaddr -
3826 (unsigned long)drv_ctx.ptr_outputbuffer[i].offset;
3827 plane[0].reserved[0] = drv_ctx.ptr_outputbuffer[i].pmem_fd;
3828 plane[0].reserved[1] = drv_ctx.ptr_outputbuffer[i].offset;
3830 extra_idx = EXTRADATA_IDX(drv_ctx.num_planes);
3832 plane[extra_idx].length = drv_ctx.extradata_info.buffer_size;
3833 plane[extra_idx].m.userptr = (long unsigned int) (drv_ctx.extradata_info.uaddr + i * drv_ctx.extradata_info.buffer_size);
3835 plane[extra_idx].reserved[0] = drv_ctx.extradata_info.ion.fd_ion_data.fd;
3837 plane[extra_idx].reserved[1] = i * drv_ctx.extradata_info.buffer_size;
3844 buf.length = drv_ctx.num_planes;
3846 DEBUG_PRINT_LOW("Set the Output Buffer Idx: %d Addr: %x", i, drv_ctx.ptr_outputbuffer[i]);
3848 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_PREPARE_BUF, &buf)) {
3854 if (i == (drv_ctx.op_buf.actualcount -1) && !streaming[CAPTURE_PORT]) {
3857 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_STREAMON,&buf_type)) {
3865 (*bufferHdr)->nAllocLen = drv_ctx.op_buf.buffer_size;
3905 drv_ctx.ip_buf.actualcount);
3909 drv_ctx.ip_buf.actualcount);
3913 } else if (m_in_alloc_cnt < drv_ctx.ip_buf.actualcount) {
4028 if (index < drv_ctx.ip_buf.actualcount && drv_ctx.ptr_inputbuffer) {
4030 if (drv_ctx.ptr_inputbuffer[index].pmem_fd > 0) {
4033 memcpy (&setbuffers.buffer,&drv_ctx.ptr_inputbuffer[index],
4036 drv_ctx.ptr_inputbuffer[index].pmem_fd);
4038 drv_ctx.ptr_inputbuffer[index].mmaped_size,
4039 drv_ctx.ptr_inputbuffer[index].bufferaddr);
4040 munmap (drv_ctx.ptr_inputbuffer[index].bufferaddr,
4041 drv_ctx.ptr_inputbuffer[index].mmaped_size);
4042 close (drv_ctx.ptr_inputbuffer[index].pmem_fd);
4043 drv_ctx.ptr_inputbuffer[index].pmem_fd = -1;
4050 free_ion_memory(&drv_ctx.ip_buf_ion_info[index]);
4069 if (index < drv_ctx.op_buf.actualcount
4070 && drv_ctx.ptr_outputbuffer) {
4072 drv_ctx.ptr_outputbuffer[index].bufferaddr);
4076 memcpy (&setbuffers.buffer,&drv_ctx.ptr_outputbuffer[index],
4080 if (drv_ctx.ptr_outputbuffer[index].pmem_fd > 0) {
4081 munmap(drv_ctx.ptr_outputbuffer[index].bufferaddr,
4082 drv_ctx.ptr_outputbuffer[index].mmaped_size);
4084 drv_ctx.ptr_outputbuffer[index].pmem_fd = -1;
4087 if (drv_ctx.ptr_outputbuffer[0].pmem_fd > 0 && !ouput_egl_buffers && !m_use_output_pmem) {
4089 drv_ctx.ptr_outputbuffer[0].pmem_fd);
4091 drv_ctx.ptr_outputbuffer[0].mmaped_size * drv_ctx.op_buf.actualcount,
4092 drv_ctx.ptr_outputbuffer[0].bufferaddr);
4093 munmap (drv_ctx.ptr_outputbuffer[0].bufferaddr,
4094 drv_ctx.ptr_outputbuffer[0].mmaped_size * drv_ctx.op_buf.actualcount);
4095 close (drv_ctx.ptr_outputbuffer[0].pmem_fd);
4096 drv_ctx.ptr_outputbuffer[0].pmem_fd = -1;
4098 free_ion_memory(&drv_ctx.op_buf_ion_info[0]);
4132 drv_ctx.ip_buf.actualcount);
4135 drv_ctx.ip_buf.actualcount);
4144 for (i=0; i< drv_ctx.ip_buf.actualcount; i++) {
4151 if (i < drv_ctx.ip_buf.actualcount) {
4152 buf_addr = (unsigned char *)malloc (drv_ctx.ip_buf.buffer_size);
4165 input->nAllocLen = drv_ctx.ip_buf.buffer_size;
4215 if (bytes != drv_ctx.ip_buf.buffer_size) {
4217 bytes, drv_ctx.ip_buf.buffer_size);
4223 drv_ctx.ip_buf.actualcount,
4224 drv_ctx.ip_buf.buffer_size);
4227 calloc( (sizeof(OMX_BUFFERHEADERTYPE)), drv_ctx.ip_buf.actualcount);
4233 drv_ctx.ptr_inputbuffer = (struct vdec_bufferpayload *) \
4234 calloc ((sizeof (struct vdec_bufferpayload)),drv_ctx.ip_buf.actualcount);
4236 if (drv_ctx.ptr_inputbuffer == NULL) {
4240 drv_ctx.ip_buf_ion_info = (struct vdec_ion *) \
4241 calloc ((sizeof (struct vdec_ion)),drv_ctx.ip_buf.actualcount);
4243 if (drv_ctx.ip_buf_ion_info == NULL) {
4248 for (i=0; i < drv_ctx.ip_buf.actualcount; i++) {
4249 drv_ctx.ptr_inputbuffer [i].pmem_fd = -1;
4251 drv_ctx.ip_buf_ion_info[i].ion_device_fd = -1;
4256 for (i=0; i< drv_ctx.ip_buf.actualcount; i++) {
4263 if (i < drv_ctx.ip_buf.actualcount) {
4269 DEBUG_PRINT_HIGH("Allocate input Buffer size %d", drv_ctx.ip_buf.buffer_size);
4270 drv_ctx.ip_buf_ion_info[i].ion_device_fd = alloc_map_ion_memory(
4271 drv_ctx.ip_buf.buffer_size,drv_ctx.op_buf.alignment,
4272 &drv_ctx.ip_buf_ion_info[i].ion_alloc_data,
4273 &drv_ctx.ip_buf_ion_info[i].fd_ion_data, secure_mode ? ION_SECURE : 0);
4274 if (drv_ctx.ip_buf_ion_info[i].ion_device_fd < 0) {
4277 pmem_fd = drv_ctx.ip_buf_ion_info[i].fd_ion_data.fd;
4295 if (!align_pmem_buffers(pmem_fd, drv_ctx.ip_buf.buffer_size,
4296 drv_ctx.ip_buf.alignment)) {
4304 drv_ctx.ip_buf.buffer_size,
4310 free_ion_memory(&drv_ctx.ip_buf_ion_info[i]);
4318 drv_ctx.ptr_inputbuffer [i].bufferaddr = *bufferHdr;
4320 drv_ctx.ptr_inputbuffer [i].bufferaddr = buf_addr;
4321 drv_ctx.ptr_inputbuffer [i].pmem_fd = pmem_fd;
4322 drv_ctx.ptr_inputbuffer [i].buffer_len = drv_ctx.ip_buf.buffer_size;
4323 drv_ctx.ptr_inputbuffer [i].mmaped_size = drv_ctx.ip_buf.buffer_size;
4324 drv_ctx.ptr_inputbuffer [i].offset = 0;
4331 plane.length = drv_ctx.ptr_inputbuffer [i].mmaped_size;
4332 plane.m.userptr = (unsigned long)drv_ctx.ptr_inputbuffer[i].bufferaddr;
4333 plane.reserved[0] =drv_ctx.ptr_inputbuffer [i].pmem_fd;
4335 plane.data_offset = drv_ctx.ptr_inputbuffer[i].offset;
4339 DEBUG_PRINT_LOW("Set the input Buffer Idx: %d Addr: %x", i, drv_ctx.ptr_inputbuffer[i]);
4341 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_PREPARE_BUF, &buf);
4353 input->pBuffer = (OMX_U8 *)drv_ctx.ptr_inputbuffer [i].pmem_fd;
4358 input->nAllocLen = drv_ctx.ip_buf.buffer_size;
4361 input->pInputPortPrivate = (void *)&drv_ctx.ptr_inputbuffer [i];
4363 if (drv_ctx.disable_dmx) {
4407 drv_ctx.op_buf.actualcount,
4408 drv_ctx.op_buf.buffer_size);
4421 drv_ctx.op_buf.actualcount);
4422 nBufHdrSize = drv_ctx.op_buf.actualcount *
4425 nPMEMInfoSize = drv_ctx.op_buf.actualcount *
4427 nPlatformListSize = drv_ctx.op_buf.actualcount *
4429 nPlatformEntrySize = drv_ctx.op_buf.actualcount *
4437 drv_ctx.op_buf.actualcount);
4439 DEBUG_PRINT_HIGH("allocate outputBuffer size %d",drv_ctx.op_buf.buffer_size * drv_ctx.op_buf.actualcount);
4441 drv_ctx.op_buf.buffer_size * drv_ctx.op_buf.actualcount,
4442 drv_ctx.op_buf.alignment,
4453 drv_ctx.op_buf.buffer_size);
4462 drv_ctx.op_buf.buffer_size);
4467 if (!align_pmem_buffers(pmem_fd, drv_ctx.op_buf.buffer_size *
4468 drv_ctx.op_buf.actualcount,
4469 drv_ctx.op_buf.alignment)) {
4477 (drv_ctx.op_buf.buffer_size *
4478 drv_ctx.op_buf.actualcount),
4482 drv_ctx.op_buf.buffer_size);
4485 free_ion_memory(&drv_ctx.op_buf_ion_info[i]);
4495 drv_ctx.ptr_outputbuffer = (struct vdec_bufferpayload *)\
4497 drv_ctx.op_buf.actualcount);
4498 drv_ctx.ptr_respbuffer = (struct vdec_output_frameinfo *)\
4500 drv_ctx.op_buf.actualcount);
4502 drv_ctx.op_buf_ion_info = (struct vdec_ion *)\
4504 drv_ctx.op_buf.actualcount);
4507 if (m_out_mem_ptr && pPtr && drv_ctx.ptr_outputbuffer
4508 && drv_ctx.ptr_respbuffer) {
4509 drv_ctx.ptr_outputbuffer[0].mmaped_size =
4510 (drv_ctx.op_buf.buffer_size *
4511 drv_ctx.op_buf.actualcount);
4527 for (i=0; i < drv_ctx.op_buf.actualcount ; i++) {
4547 pPMEMInfo->offset = drv_ctx.op_buf.buffer_size*i;
4551 drv_ctx.ptr_outputbuffer[i].pmem_fd = pmem_fd;
4554 drv_ctx.op_buf_ion_info[i].ion_device_fd = ion_device_fd;
4555 drv_ctx.op_buf_ion_info[i].ion_alloc_data = ion_alloc_data;
4556 drv_ctx.op_buf_ion_info[i].fd_ion_data = fd_ion_data;
4560 bufHdr->pOutputPortPrivate = &drv_ctx.ptr_respbuffer[i];
4561 drv_ctx.ptr_respbuffer[i].client_data = (void *)\
4562 &drv_ctx.ptr_outputbuffer[i];
4563 drv_ctx.ptr_outputbuffer[i].offset = drv_ctx.op_buf.buffer_size*i;
4564 drv_ctx.ptr_outputbuffer[i].bufferaddr =
4565 pmem_baseaddress + (drv_ctx.op_buf.buffer_size*i);
4568 pmem_fd, drv_ctx.ptr_outputbuffer[i].offset,
4569 drv_ctx.ptr_outputbuffer[i].bufferaddr);
4587 if (drv_ctx.ptr_outputbuffer) {
4588 free(drv_ctx.ptr_outputbuffer);
4589 drv_ctx.ptr_outputbuffer = NULL;
4591 if (drv_ctx.ptr_respbuffer) {
4592 free(drv_ctx.ptr_respbuffer);
4593 drv_ctx.ptr_respbuffer = NULL;
4596 if (drv_ctx.op_buf_ion_info) {
4598 free(drv_ctx.op_buf_ion_info);
4599 drv_ctx.op_buf_ion_info = NULL;
4608 for (i=0; i< drv_ctx.op_buf.actualcount; i++) {
4616 if (i < drv_ctx.op_buf.actualcount) {
4620 m_pmem_info[i].offset = drv_ctx.ptr_outputbuffer[i].offset;
4622 drv_ctx.ptr_outputbuffer[i].buffer_len =
4623 drv_ctx.op_buf.buffer_size;
4627 drv_ctx.ptr_outputbuffer[i].bufferaddr = *bufferHdr;
4629 drv_ctx.ptr_outputbuffer[i].mmaped_size = drv_ctx.op_buf.buffer_size;
4634 plane[0].length = drv_ctx.op_buf.buffer_size;
4635 plane[0].m.userptr = (unsigned long)drv_ctx.ptr_outputbuffer[i].bufferaddr -
4636 (unsigned long)drv_ctx.ptr_outputbuffer[i].offset;
4638 plane[0].reserved[0] = drv_ctx.op_buf_ion_info[i].fd_ion_data.fd;
4640 plane[0].reserved[1] = drv_ctx.ptr_outputbuffer[i].offset;
4642 extra_idx = EXTRADATA_IDX(drv_ctx.num_planes);
4644 plane[extra_idx].length = drv_ctx.extradata_info.buffer_size;
4645 plane[extra_idx].m.userptr = (long unsigned int) (drv_ctx.extradata_info.uaddr + i * drv_ctx.extradata_info.buffer_size);
4647 plane[extra_idx].reserved[0] = drv_ctx.extradata_info.ion.fd_ion_data.fd;
4649 plane[extra_idx].reserved[1] = i * drv_ctx.extradata_info.buffer_size;
4656 buf.length = drv_ctx.num_planes;
4657 DEBUG_PRINT_LOW("Set the Output Buffer Idx: %d Addr: %x", i, drv_ctx.ptr_outputbuffer[i]);
4658 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_PREPARE_BUF, &buf);
4664 if (i == (drv_ctx.op_buf.actualcount -1 ) && !streaming[CAPTURE_PORT]) {
4667 rc=ioctl(drv_ctx.video_driver_fd, VIDIOC_STREAMON,&buf_type);
4676 (*bufferHdr)->pBuffer = (OMX_U8*)drv_ctx.ptr_outputbuffer[i].bufferaddr;
4818 if (nPortIndex < drv_ctx.ip_buf.actualcount) {
4858 if (nPortIndex < drv_ctx.op_buf.actualcount) {
4924 unsigned int nBufferIndex = drv_ctx.ip_buf.actualcount;
4983 if (nBufferIndex > drv_ctx.ip_buf.actualcount ) {
5036 if (nPortIndex > drv_ctx.ip_buf.actualcount) {
5085 if ((temp_buffer - drv_ctx.ptr_inputbuffer) > drv_ctx.ip_buf.actualcount) {
5115 if (drv_ctx.disable_dmx && m_desc_buffer_ptr && m_desc_buffer_ptr[nPortIndex].buf_addr) {
5187 plane.length = drv_ctx.ip_buf.buffer_size;
5203 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_QBUF, &buf);
5217 ret=ioctl(drv_ctx.video_driver_fd, VIDIOC_STREAMON,&buf_type);
5267 ((buffer - client_buffers.get_il_buf_hdr()) >= drv_ctx.op_buf.actualcount)) {
5308 if (bufferAdd == NULL || nPortIndex > drv_ctx.op_buf.actualcount)
5346 plane[0].length = drv_ctx.op_buf.buffer_size;
5348 (unsigned long)drv_ctx.ptr_outputbuffer[nPortIndex].bufferaddr -
5349 (unsigned long)drv_ctx.ptr_outputbuffer[nPortIndex].offset;
5350 plane[0].reserved[0] = drv_ctx.ptr_outputbuffer[nPortIndex].pmem_fd;
5351 plane[0].reserved[1] = drv_ctx.ptr_outputbuffer[nPortIndex].offset;
5353 extra_idx = EXTRADATA_IDX(drv_ctx.num_planes);
5356 plane[extra_idx].length = drv_ctx.extradata_info.buffer_size;
5357 plane[extra_idx].m.userptr = (long unsigned int) (drv_ctx.extradata_info.uaddr + nPortIndex * drv_ctx.extradata_info.buffer_size);
5359 plane[extra_idx].reserved[0] = drv_ctx.extradata_info.ion.fd_ion_data.fd;
5361 plane[extra_idx].reserved[1] = nPortIndex * drv_ctx.extradata_info.buffer_size;
5368 buf.length = drv_ctx.num_planes;
5369 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_QBUF, &buf);
5438 for (i = 0; i < drv_ctx.op_buf.actualcount; i++ ) {
5449 for (i = 0; i<drv_ctx.ip_buf.actualcount; i++ ) {
5491 //(void)ioctl(drv_ctx.video_driver_fd, VDEC_IOCTL_STOP_NEXT_MSG,
5578 (void *)&pmem_list, drv_ctx.op_buf.buffer_size,
5605 if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg4",OMX_MAX_STRINGNAME_SIZE)) {
5613 if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.mpeg2",OMX_MAX_STRINGNAME_SIZE)) {
5620 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.h263",OMX_MAX_STRINGNAME_SIZE)) {
5630 else if ((!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.divx",OMX_MAX_STRINGNAME_SIZE)) ||
5631 (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.divx311",OMX_MAX_STRINGNAME_SIZE)) ) {
5639 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.avc",OMX_MAX_STRINGNAME_SIZE)) {
5647 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.hevc",OMX_MAX_STRINGNAME_SIZE)) {
5655 } else if ( (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vc1",OMX_MAX_STRINGNAME_SIZE)) ||
5656 (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.wmv",OMX_MAX_STRINGNAME_SIZE))
5665 } else if (!strncmp(drv_ctx.kind, "OMX.qcom.video.decoder.vp8",OMX_MAX_STRINGNAME_SIZE)) {
5736 for (; i<drv_ctx.ip_buf.actualcount; i++) {
5742 if (i == drv_ctx.ip_buf.actualcount) {
5746 if (i==drv_ctx.ip_buf.actualcount && m_inp_bEnabled) {
5775 for (; j < drv_ctx.op_buf.actualcount; j++) {
5782 if (j == drv_ctx.op_buf.actualcount) {
5840 for (; j < drv_ctx.op_buf.actualcount ; j++) {
5845 if (j == drv_ctx.op_buf.actualcount) {
5876 for (; j<drv_ctx.ip_buf.actualcount; j++) {
5881 if (j==drv_ctx.ip_buf.actualcount) {
5894 if (!buffer || (buffer - m_out_mem_ptr) >= drv_ctx.op_buf.actualcount) {
5932 int stride = drv_ctx.video_resolution.stride;
5933 int scanlines = drv_ctx.video_resolution.scan_lines;
5934 char *temp = (char *)drv_ctx.ptr_outputbuffer[buf_index].bufferaddr;
5937 for (i = 0; i < drv_ctx.video_resolution.frame_height; i++) {
5938 bytes_written = fwrite(temp, drv_ctx.video_resolution.frame_width, 1, outputBufferFile1);
5941 temp = (char *)drv_ctx.ptr_outputbuffer[buf_index].bufferaddr + stride * scanlines;
5943 for (i = 0; i < drv_ctx.video_resolution.frame_height/2; i++) {
5944 bytes_written += fwrite(temp, drv_ctx.video_resolution.frame_width, 1, outputBufferFile1);
5953 (drv_ctx.interlace != VDEC_InterlaceFrameProgressive)
6044 if (buffer == NULL || ((buffer - m_inp_mem_ptr) > drv_ctx.ip_buf.actualcount)) {
6138 ((omxhdr - omx->m_inp_mem_ptr) > omx->drv_ctx.ip_buf.actualcount) ) {
6167 ((omxhdr - omx->m_out_mem_ptr) < omx->drv_ctx.op_buf.actualcount) &&
6169 - omx->drv_ctx.ptr_respbuffer) < omx->drv_ctx.op_buf.actualcount)) {
6184 omx->drv_ctx.ptr_outputbuffer[v4l2_buf_ptr->index].bufferaddr;
6241 ret = ioctl(omx->drv_ctx.video_driver_fd, VIDIOC_G_FMT, &fmt);
6243 omx->drv_ctx.video_resolution.stride = fmt.fmt.pix_mp.plane_fmt[0].bytesperline;
6244 omx->drv_ctx.video_resolution.scan_lines = fmt.fmt.pix_mp.plane_fmt[0].reserved[0];
7007 if (drv_ctx.ptr_respbuffer) {
7008 free (drv_ctx.ptr_respbuffer);
7009 drv_ctx.ptr_respbuffer = NULL;
7011 if (drv_ctx.ptr_outputbuffer) {
7012 free (drv_ctx.ptr_outputbuffer);
7013 drv_ctx.ptr_outputbuffer = NULL;
7016 if (drv_ctx.op_buf_ion_info) {
7018 free(drv_ctx.op_buf_ion_info);
7019 drv_ctx.op_buf_ion_info = NULL;
7051 if (drv_ctx.ptr_inputbuffer) {
7053 free (drv_ctx.ptr_inputbuffer);
7054 drv_ctx.ptr_inputbuffer = NULL;
7057 if (drv_ctx.ip_buf_ion_info) {
7059 free(drv_ctx.ip_buf_ion_info);
7060 drv_ctx.ip_buf_ion_info = NULL;
7096 rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_STREAMOFF, &btype);
7129 ret = ioctl(drv_ctx.video_driver_fd,VIDIOC_REQBUFS, &bufreq);
7144 fmt.fmt.pix_mp.height = drv_ctx.video_resolution.frame_height;
7145 fmt.fmt.pix_mp.width = drv_ctx.video_resolution.frame_width;
7147 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_G_FMT, &fmt);
7151 drv_ctx.num_planes = fmt.fmt.pix_mp.num_planes;
7162 extra_idx = EXTRADATA_IDX(drv_ctx.num_planes);
7185 drv_ctx.extradata_info.size = buffer_prop->actualcount * extra_data_size;
7186 drv_ctx.extradata_info.count = buffer_prop->actualcount;
7187 drv_ctx.extradata_info.buffer_size = extra_data_size;
7219 fmt.fmt.pix_mp.height = drv_ctx.video_resolution.frame_height;
7220 fmt.fmt.pix_mp.width = drv_ctx.video_resolution.frame_width;
7232 ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_FMT, &fmt);
7250 ret = ioctl(drv_ctx.video_driver_fd,VIDIOC_REQBUFS, &bufreq);
7271 drv_ctx.extradata_info.size = buffer_prop->actualcount * drv_ctx.extradata_info.buffer_size;
7272 drv_ctx.extradata_info.count = buffer_prop->actualcount;
7293 if (drv_ctx.frame_rate.fps_denominator > 0)
7294 portDefn->format.video.xFramerate = drv_ctx.frame_rate.fps_numerator /
7295 drv_ctx.frame_rate.fps_denominator;
7302 portDefn->nBufferCountActual = drv_ctx.ip_buf.actualcount;
7303 portDefn->nBufferCountMin = drv_ctx.ip_buf.mincount;
7304 portDefn->nBufferSize = drv_ctx.ip_buf.buffer_size;
7321 portDefn->nBufferCountActual = drv_ctx.op_buf.actualcount;
7322 portDefn->nBufferCountMin = drv_ctx.op_buf.mincount;
7336 portDefn->format.video.nFrameHeight = drv_ctx.video_resolution.frame_height;
7337 portDefn->format.video.nFrameWidth = drv_ctx.video_resolution.frame_width;
7338 portDefn->format.video.nStride = drv_ctx.video_resolution.stride;
7339 portDefn->format.video.nSliceHeight = drv_ctx.video_resolution.scan_lines;
7366 drv_ctx.op_buf.actualcount);
7367 nBufHdrSize = drv_ctx.op_buf.actualcount *
7370 nPMEMInfoSize = drv_ctx.op_buf.actualcount *
7372 nPlatformListSize = drv_ctx.op_buf.actualcount *
7374 nPlatformEntrySize = drv_ctx.op_buf.actualcount *
7388 drv_ctx.ptr_outputbuffer = (struct vdec_bufferpayload *) \
7390 drv_ctx.op_buf.actualcount);
7391 drv_ctx.ptr_respbuffer = (struct vdec_output_frameinfo *)\
7393 drv_ctx.op_buf.actualcount);
7395 drv_ctx.op_buf_ion_info = (struct vdec_ion * ) \
7396 calloc (sizeof(struct vdec_ion),drv_ctx.op_buf.actualcount);
7399 if (m_out_mem_ptr && pPtr && drv_ctx.ptr_outputbuffer
7400 && drv_ctx.ptr_respbuffer) {
7417 for (i=0; i < drv_ctx.op_buf.actualcount ; i++) {
7435 drv_ctx.ptr_outputbuffer[i].pmem_fd = -1;
7437 drv_ctx.op_buf_ion_info[i].ion_device_fd =-1;
7440 bufHdr->pOutputPortPrivate = &drv_ctx.ptr_respbuffer[i];
7441 drv_ctx.ptr_respbuffer[i].client_data = (void *) \
7442 &drv_ctx.ptr_outputbuffer[i];
7460 if (drv_ctx.ptr_outputbuffer) {
7461 free(drv_ctx.ptr_outputbuffer);
7462 drv_ctx.ptr_outputbuffer = NULL;
7464 if (drv_ctx.ptr_respbuffer) {
7465 free(drv_ctx.ptr_respbuffer);
7466 drv_ctx.ptr_respbuffer = NULL;
7469 if (drv_ctx.op_buf_ion_info) {
7471 free(drv_ctx.op_buf_ion_info);
7472 drv_ctx.op_buf_ion_info = NULL;
7551 drv_ctx.frame_rate.fps_numerator = 1e6;
7552 drv_ctx.frame_rate.fps_denominator = frm_int;
7554 frm_int, drv_ctx.frame_rate.fps_numerator /
7555 (float)drv_ctx.frame_rate.fps_denominator);
7568 bool codec_cond = (drv_ctx.timestamp_adjust)?
7596 OMX_U8 *pBuffer = (OMX_U8 *)(drv_ctx.ptr_outputbuffer[buf_index].bufferaddr) +
7598 if (!drv_ctx.extradata_info.uaddr) {
7603 char *p_extradata = drv_ctx.extradata_info.uaddr + buf_index * drv_ctx.extradata_info.buffer_size;
7608 while ((consumed_len < drv_ctx.extradata_info.buffer_size)
7610 if ((consumed_len + data->nSize) > drv_ctx.extradata_info.buffer_size) {
7623 drv_ctx.interlace = VDEC_InterlaceFrameProgressive;
7625 drv_ctx.interlace = VDEC_InterlaceInterleaveFrameTopFieldFirst;
7649 num_MB_in_frame = ((drv_ctx.video_resolution.frame_width + 15) *
7650 (drv_ctx.video_resolution.frame_height + 15)) >> 8;
7716 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
7723 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
7728 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
7733 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
7738 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
7743 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
7749 if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
7754 ret = get_buffer_req(&drv_ctx.op_buf);
7771 num_MB_in_frame = ((drv_ctx.video_resolution.frame_width + 15) *
7772 (drv_ctx.video_resolution.frame_height + 15)) >> 8;
7864 drv_ctx.interlace = VDEC_InterlaceFrameProgressive;
7868 drv_ctx.interlace = VDEC_InterlaceInterleaveFrameTopFieldFirst;
7913 if (drv_ctx.interlace == VDEC_InterlaceInterleaveFrameTopFieldFirst)
7915 else if (drv_ctx.interlace == VDEC_InterlaceInterleaveFrameBottomFieldFirst)
7972 if (index >= drv_ctx.ip_buf.actualcount) {
7979 drv_ctx.ip_buf.actualcount);
8047 if (buffer_index > drv_ctx.ip_buf.actualcount) {
8177 if (omx->drv_ctx.output_format != VDEC_YUV_FORMAT_NV12 &&
8184 status = c2d.open(omx->drv_ctx.video_resolution.frame_height,
8185 omx->drv_ctx.video_resolution.frame_width,
8193 if (!src_size || src_size > omx->drv_ctx.op_buf.buffer_size ||
8197 src_size,omx->drv_ctx.op_buf.buffer_size,destination_size);
8203 if (buffer_size_req < omx->drv_ctx.op_buf.buffer_size)
8204 buffer_size_req = omx->drv_ctx.op_buf.buffer_size;
8205 if (buffer_alignment_req < omx->drv_ctx.op_buf.alignment)
8206 buffer_alignment_req = omx->drv_ctx.op_buf.alignment;
8224 if (omx->drv_ctx.output_format == VDEC_YUV_FORMAT_NV12)
8279 if (index < omx->drv_ctx.op_buf.actualcount) {
8285 status = c2d.convert(omx->drv_ctx.ptr_outputbuffer[index].pmem_fd,
8314 if (index < omx->drv_ctx.op_buf.actualcount) {
8326 buffer_size = omx->drv_ctx.op_buf.buffer_size;
8334 if (buffer_size < omx->drv_ctx.op_buf.buffer_size)
8335 buffer_size = omx->drv_ctx.op_buf.buffer_size;
8336 if (buffer_alignment_req < omx->drv_ctx.op_buf.alignment)
8337 buffer_alignment_req = omx->drv_ctx.op_buf.alignment;
8356 if (index >= omx->drv_ctx.op_buf.actualcount) {
8401 if (allocated_count >= omx->drv_ctx.op_buf.actualcount) {
8407 port,appData,omx->drv_ctx.op_buf.buffer_size);
8413 omx->drv_ctx.op_buf.actualcount) {
8473 if (omx->drv_ctx.output_format == VDEC_YUV_FORMAT_NV12)