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