diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-01-09 03:19:35 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-01-09 03:19:35 -0800 |
commit | d77ab1039eaae06e6b2fe5690bc8766e5bc5f244 (patch) | |
tree | 8587b1f9343b1eeef95502cd44ab8cddc898ffbd | |
parent | 889598543966665356be02cb378e318efc286b6d (diff) | |
parent | 755ec08ddc74feaf0e9c07ee1cb6590cb5ed9780 (diff) | |
download | android_hardware_qcom_media-d77ab1039eaae06e6b2fe5690bc8766e5bc5f244.tar.gz android_hardware_qcom_media-d77ab1039eaae06e6b2fe5690bc8766e5bc5f244.tar.bz2 android_hardware_qcom_media-d77ab1039eaae06e6b2fe5690bc8766e5bc5f244.zip |
Merge "mm-video-v4l2: vidc: Do not queue output buffer if flush is in progress"
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp index 9922ec69..7dfacc05 100644 --- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -7295,8 +7295,8 @@ OMX_ERRORTYPE omx_vdec::fill_this_buffer_proxy( } buf.m.planes = plane; buf.length = drv_ctx.num_planes; - DEBUG_PRINT_LOW("SENDING FTB TO F/W - fd[0] = %d fd[1] = %d offset[1] = %d", - plane[0].reserved[0],plane[extra_idx].reserved[0], plane[extra_idx].reserved[1]); + DEBUG_PRINT_LOW("SENDING FTB TO F/W - fd[0] = %d fd[1] = %d offset[1] = %d in_flush = %d", + plane[0].reserved[0],plane[extra_idx].reserved[0], plane[extra_idx].reserved[1], output_flush_progress); rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_QBUF, &buf); if (rc) { @@ -8327,6 +8327,7 @@ int omx_vdec::async_message_process (void *context, void* message) } if (omxhdr && (v4l2_buf_ptr->flags & V4L2_QCOM_BUF_DROP_FRAME) && + !omx->output_flush_progress && !(v4l2_buf_ptr->flags & V4L2_QCOM_BUF_FLAG_DECODEONLY) && !(v4l2_buf_ptr->flags & V4L2_QCOM_BUF_FLAG_EOS)) { unsigned int index = v4l2_buf_ptr->index; @@ -8358,6 +8359,8 @@ int omx_vdec::async_message_process (void *context, void* message) return -1; } + DEBUG_PRINT_LOW("SENDING FTB TO F/W from async_message_process - fd[0] = %d fd[1] = %d offset[1] = %d in_flush = %d", + plane[0].reserved[0],plane[extra_idx].reserved[0], plane[extra_idx].reserved[1], omx->output_flush_progress); if(ioctl(omx->drv_ctx.video_driver_fd, VIDIOC_QBUF, v4l2_buf_ptr)) { DEBUG_PRINT_ERROR("Failed to queue buffer back to driver: %d, %d, %d", v4l2_buf_ptr->length, v4l2_buf_ptr->m.planes[0].reserved[0], v4l2_buf_ptr->m.planes[1].reserved[0]); return -1; |