summaryrefslogtreecommitdiff
path: root/msm8996
diff options
context:
space:
mode:
authorMahesh Lanka <mlanka@codeaurora.org>2017-06-28 20:48:59 +0530
committerPawin Vongmasa <pawin@google.com>2017-06-29 17:07:12 -0700
commitd128a260d9c67b376b05959ab50fb7174e30cd1d (patch)
tree138da126cb3c2db0bd9601a6cba9552657b1256d /msm8996
parente34f279fc2fd42057c006614b0f6e5378b97c1fd (diff)
downloadmedia-d128a260d9c67b376b05959ab50fb7174e30cd1d.tar.gz
mm-video-v4l2: venc: Change QBUF and STREAM_ON call sequence
By calling STREAM_ON after QBUF, and meanwhile if there is any buffer requirements query, there is a chance that queued buffer will be ignored by driver. Hence changing the QBUF and STREAM_ON sequence. CRs-Fixed: 2065953 author : Manikanta Kanamarlapudi <kmanikan@codeaurora.org> Bug: 62602083 Bug: 62848424 Bug: 62848422 Merged-In: I9fd910208d197bd0d28160393c3426ed9270494c Change-Id: I9fd910208d197bd0d28160393c3426ed9270494c
Diffstat (limited to 'msm8996')
-rw-r--r--msm8996/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/msm8996/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/msm8996/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
index ed0ce88..03652aa 100644
--- a/msm8996/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/msm8996/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -3692,6 +3692,23 @@ bool venc_dev::venc_empty_buf(void *buffer, void *pmem_data_buf, unsigned index,
return false;
}
+ if (!streaming[OUTPUT_PORT]) {
+ enum v4l2_buf_type buf_type;
+ buf_type=V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
+ int ret;
+ ret = ioctl(m_nDriver_fd, VIDIOC_STREAMON, &buf_type);
+
+ if (ret) {
+ DEBUG_PRINT_ERROR("Failed to call streamon");
+ if (errno == EBUSY) {
+ hw_overload = true;
+ }
+ return false;
+ } else {
+ streaming[OUTPUT_PORT] = true;
+ }
+ }
+
buf.index = index;
buf.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
buf.memory = V4L2_MEMORY_USERPTR;
@@ -3714,22 +3731,6 @@ bool venc_dev::venc_empty_buf(void *buffer, void *pmem_data_buf, unsigned index,
etb++;
- if (!streaming[OUTPUT_PORT]) {
- enum v4l2_buf_type buf_type;
- buf_type=V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
- int ret;
- ret = ioctl(m_nDriver_fd, VIDIOC_STREAMON, &buf_type);
-
- if (ret) {
- DEBUG_PRINT_ERROR("Failed to call streamon");
- if (errno == EBUSY) {
- hw_overload = true;
- }
- return false;
- } else {
- streaming[OUTPUT_PORT] = true;
- }
- }
if (m_debug.in_buffer_log) {
venc_input_log_buffers(bufhdr, fd, plane[0].data_offset, m_sVenc_cfg.inputformat);
}