From aed2ed96d1790629f6dd25e849bbb9377aaab5cc Mon Sep 17 00:00:00 2001 From: Tomasz Figa <tfiga@chromium.org> Date: Wed, 25 Feb 2015 14:05:53 +0900 Subject: [PATCH] Rockchip: Zero the params struct after deferred setting rk_vepu_update_parameter() expects all parameters that do not change to be zero, so after we apply them in qbuf_if_pending_buffer_exists_locked(), we need to memset the struct to zero, just as ioctl_s_ext_ctrls_locked() already does if setting is not deferred by pending buffer. Otherwise, a keyframe might be requested by the way of other parameter change request. BUG=chrome-os-partner:37203 TEST=video_encode_accelerator_unittest (after 4fc28962e2d);apprtc Change-Id: I1f3a6551b2c5faedbb789506c4b84e021ef68792 Reviewed-on: https://chromium-review.googlesource.com/253251 Reviewed-by: Wu-cheng Li <wuchengli@chromium.org> Commit-Queue: Tomasz Figa <tfiga@chromium.org> Tested-by: Tomasz Figa <tfiga@chromium.org> --- libv4l-rockchip/libv4l-encplugin-rockchip.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libv4l-rockchip/libv4l-encplugin-rockchip.c b/libv4l-rockchip/libv4l-encplugin-rockchip.c index 120beb0..aaa4967 100644 --- a/libv4l-rockchip/libv4l-encplugin-rockchip.c +++ b/libv4l-rockchip/libv4l-encplugin-rockchip.c @@ -536,6 +536,8 @@ static int qbuf_if_pending_buffer_exists_locked(struct encoder_context *ctx, VLOG_FD(0, "rk_vepu_update_parameter failed."); return -EIO; } + memset(&element->next_runtime_param, 0, + sizeof(element->next_runtime_param)); ret = ioctl_qbuf_locked(ctx, fd, &element->buffer); if (ret) return ret; -- GitLab