From faa26fa3d76077e1c882f746c221ec2517a30e32 Mon Sep 17 00:00:00 2001 From: Naveen Kumar P Date: Wed, 5 Apr 2017 15:46:49 +0530 Subject: [PATCH] Fix reallocation for new sps Bug: 34779227 Bug: 62815506 Change-Id: I345f149eee46ae4ff4261526abca10d7ebc05ac5 --- decoder/ihevcd_parse_headers.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/decoder/ihevcd_parse_headers.c b/decoder/ihevcd_parse_headers.c index 78cc168..06f35a3 100644 --- a/decoder/ihevcd_parse_headers.c +++ b/decoder/ihevcd_parse_headers.c @@ -1361,12 +1361,16 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) /* Check if sps_max_dec_pic_buffering or sps_max_num_reorder_pics has changed */ - if(0 != ps_codec->i4_first_pic_done) + if(0 != ps_codec->u4_allocate_dynamic_done) { sps_t *ps_sps_old = ps_codec->s_parse.ps_sps; if(ps_sps_old->ai1_sps_max_dec_pic_buffering[ps_sps_old->i1_sps_max_sub_layers - 1] != ps_sps->ai1_sps_max_dec_pic_buffering[ps_sps->i1_sps_max_sub_layers - 1]) { + if(0 == ps_codec->i4_first_pic_done) + { + return IHEVCD_INVALID_PARAMETER; + } ps_codec->i4_reset_flag = 1; return (IHEVCD_ERROR_T)IVD_RES_CHANGED; } @@ -1374,6 +1378,10 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) if(ps_sps_old->ai1_sps_max_num_reorder_pics[ps_sps_old->i1_sps_max_sub_layers - 1] != ps_sps->ai1_sps_max_num_reorder_pics[ps_sps->i1_sps_max_sub_layers - 1]) { + if(0 == ps_codec->i4_first_pic_done) + { + return IHEVCD_INVALID_PARAMETER; + } ps_codec->i4_reset_flag = 1; return (IHEVCD_ERROR_T)IVD_RES_CHANGED; } @@ -1547,10 +1555,14 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) ps_sps->i2_pic_ht_in_min_cb = numerator / (1 << ps_sps->i1_log2_min_coding_block_size); } - if((0 != ps_codec->i4_first_pic_done) && + if((0 != ps_codec->u4_allocate_dynamic_done) && ((ps_codec->i4_wd != ps_sps->i2_pic_width_in_luma_samples) || (ps_codec->i4_ht != ps_sps->i2_pic_height_in_luma_samples))) { + if(0 == ps_codec->i4_first_pic_done) + { + return IHEVCD_INVALID_PARAMETER; + } ps_codec->i4_reset_flag = 1; return (IHEVCD_ERROR_T)IVD_RES_CHANGED; }