summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeva Ramasubramanian <dramasub@codeaurora.org>2016-01-12 18:26:37 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-01-12 18:33:46 -0800
commitdb7937a2bfb4ddd1e1306f34f1955dcb5b69c760 (patch)
tree64145329071c6855f457aecb7ea20eaac53ccb9e
parentd77ab1039eaae06e6b2fe5690bc8766e5bc5f244 (diff)
downloadandroid_hardware_qcom_media-db7937a2bfb4ddd1e1306f34f1955dcb5b69c760.tar.gz
android_hardware_qcom_media-db7937a2bfb4ddd1e1306f34f1955dcb5b69c760.tar.bz2
android_hardware_qcom_media-db7937a2bfb4ddd1e1306f34f1955dcb5b69c760.zip
mm-video: vidc: memset struct v4l2_format prior to S_FMT
There are some unused fields in there that are uninitialized. This results in the driver returning errors due to garbage. Change-Id: I0c208291e2019db4ee1f5dc4dcc817c5f34b2e4e
-rw-r--r--mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
index b30422b1..4f58521f 100644
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -1203,6 +1203,8 @@ bool venc_dev::venc_open(OMX_U32 codec)
m_sOutput_buff_property.alignment = SZ_4K;
m_sInput_buff_property.alignment = SZ_4K;
}
+
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
fmt.fmt.pix_mp.height = m_sVenc_cfg.dvs_height;
fmt.fmt.pix_mp.width = m_sVenc_cfg.dvs_width;
@@ -1219,6 +1221,7 @@ bool venc_dev::venc_open(OMX_U32 codec)
m_sOutput_buff_property.datasize=fmt.fmt.pix_mp.plane_fmt[0].sizeimage;
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
fmt.fmt.pix_mp.height = m_sVenc_cfg.input_height;
fmt.fmt.pix_mp.width = m_sVenc_cfg.input_width;
@@ -1504,6 +1507,7 @@ bool venc_dev::venc_get_buf_req(OMX_U32 *min_buff_count,
mInputExtradata.update(m_sInput_buff_property.actualcount + 1, extra_data_size);
} else {
unsigned int extra_idx = 0;
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
fmt.fmt.pix_mp.height = m_sVenc_cfg.dvs_height;
fmt.fmt.pix_mp.width = m_sVenc_cfg.dvs_width;
@@ -1592,6 +1596,8 @@ bool venc_dev::venc_set_param(void *paramData, OMX_INDEXTYPE index)
DEBUG_PRINT_LOW("Basic parameter has changed");
m_sVenc_cfg.input_height = portDefn->format.video.nFrameHeight;
m_sVenc_cfg.input_width = portDefn->format.video.nFrameWidth;
+
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
fmt.fmt.pix_mp.height = m_sVenc_cfg.input_height;
fmt.fmt.pix_mp.width = m_sVenc_cfg.input_width;
@@ -1625,6 +1631,8 @@ bool venc_dev::venc_set_param(void *paramData, OMX_INDEXTYPE index)
} else if (portDefn->nPortIndex == PORT_INDEX_OUT) {
m_sVenc_cfg.dvs_height = portDefn->format.video.nFrameHeight;
m_sVenc_cfg.dvs_width = portDefn->format.video.nFrameWidth;
+
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
fmt.fmt.pix_mp.height = m_sVenc_cfg.dvs_height;
fmt.fmt.pix_mp.width = m_sVenc_cfg.dvs_width;
@@ -3195,6 +3203,8 @@ bool venc_dev::venc_empty_buf(void *buffer, void *pmem_data_buf, unsigned index,
if (!streaming[OUTPUT_PORT] && !(m_sVenc_cfg.inputformat == V4L2_PIX_FMT_RGB32 ||
m_sVenc_cfg.inputformat == V4L2_PIX_FMT_RGBA8888_UBWC)) {
struct v4l2_format fmt;
+
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
m_sVenc_cfg.inputformat = V4L2_PIX_FMT_NV12;
fmt.fmt.pix_mp.height = m_sVenc_cfg.input_height;
@@ -3236,6 +3246,8 @@ bool venc_dev::venc_empty_buf(void *buffer, void *pmem_data_buf, unsigned index,
private_handle_t *handle = (private_handle_t *)meta_buf->meta_handle;
if (!streaming[OUTPUT_PORT]) {
struct v4l2_format fmt;
+ memset(&fmt, 0, sizeof(fmt));
+
fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
if (handle->format == HAL_PIXEL_FORMAT_NV12_ENCODEABLE) {
if ((handle->flags & private_handle_t::PRIV_FLAGS_UBWC_ALIGNED) &&
@@ -4875,6 +4887,7 @@ bool venc_dev::venc_set_color_format(OMX_COLOR_FORMATTYPE color_format)
break;
}
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
fmt.fmt.pix_mp.pixelformat = m_sVenc_cfg.inputformat;
fmt.fmt.pix_mp.height = m_sVenc_cfg.input_height;
@@ -5309,6 +5322,7 @@ bool venc_dev::venc_set_vpe_rotation(OMX_S32 rotation_angle)
}
DEBUG_PRINT_LOW("Success IOCTL set control for id=%x, value=%d", control.id, control.value);
+ memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
fmt.fmt.pix_mp.height = m_sVenc_cfg.dvs_height;
fmt.fmt.pix_mp.width = m_sVenc_cfg.dvs_width;