diff options
author | Deva Ramasubramanian <dramasub@codeaurora.org> | 2016-01-12 18:26:37 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-01-12 18:33:46 -0800 |
commit | db7937a2bfb4ddd1e1306f34f1955dcb5b69c760 (patch) | |
tree | 64145329071c6855f457aecb7ea20eaac53ccb9e | |
parent | d77ab1039eaae06e6b2fe5690bc8766e5bc5f244 (diff) | |
download | android_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.cpp | 14 |
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; |