summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-01-09 03:19:35 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-01-09 03:19:35 -0800
commitd77ab1039eaae06e6b2fe5690bc8766e5bc5f244 (patch)
tree8587b1f9343b1eeef95502cd44ab8cddc898ffbd
parent889598543966665356be02cb378e318efc286b6d (diff)
parent755ec08ddc74feaf0e9c07ee1cb6590cb5ed9780 (diff)
downloadandroid_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.cpp7
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;