summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>2014-05-28 15:02:41 -0600
committerXiang, Haihao <haihao.xiang@intel.com>2014-06-16 11:53:36 +0800
commit45481435f93b52f944c5f876e95fb7bfba56ed4f (patch)
tree405124c6333847c7cd2fad028e9b3013def4c366
parent1ed9128c99723ea202ba7614ca4f9c563b7ad846 (diff)
downloadlibva-intel-driver-45481435f93b52f944c5f876e95fb7bfba56ed4f.tar.gz
libva-intel-driver-45481435f93b52f944c5f876e95fb7bfba56ed4f.tar.bz2
libva-intel-driver-45481435f93b52f944c5f876e95fb7bfba56ed4f.zip
Fix the segfault while encoding multiple slice per frame.
Zero initialize the packed raw data index array and packed slice header index array during each preallocation. Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com> Reviewed-by: Zhao, Yakui <yakui.zhao@intel.com> (cherry picked from commit fbbe401aa28a0b3859d587ef08f0df15a2f7c8f2)
-rwxr-xr-xsrc/i965_drv_video.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 82a4e69..68a6052 100755
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -2489,6 +2489,7 @@ i965_encoder_render_picture(VADriverContextP ctx,
* the packed data index/count for the slice
*/
if (encode->max_slice_params_ext > encode->slice_num) {
+ int slice_num = encode->slice_num;
encode->slice_num = encode->max_slice_params_ext;
encode->slice_rawdata_index = realloc(encode->slice_rawdata_index,
encode->slice_num * sizeof(int));
@@ -2496,6 +2497,12 @@ i965_encoder_render_picture(VADriverContextP ctx,
encode->slice_num * sizeof(int));
encode->slice_header_index = realloc(encode->slice_header_index,
encode->slice_num * sizeof(int));
+ memset(encode->slice_rawdata_index + slice_num, 0,
+ sizeof(int) * NUM_SLICES);
+ memset(encode->slice_rawdata_count + slice_num, 0,
+ sizeof(int) * NUM_SLICES);
+ memset(encode->slice_header_index + slice_num, 0,
+ sizeof(int) * NUM_SLICES);
if ((encode->slice_rawdata_index == NULL) ||
(encode->slice_header_index == NULL) ||
(encode->slice_rawdata_count == NULL)) {