diff options
| author | android-build-team Robot <android-build-team-robot@google.com> | 2018-06-11 22:32:32 +0000 |
|---|---|---|
| committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-06-11 22:32:32 +0000 |
| commit | 3f5b06f7e9f45ce3ae09c0dfb0d88c6769a19a7d (patch) | |
| tree | 449c8662eb5d88f1404d1a2b9e69b7f74e2a5f2e | |
| parent | 39e63bfc32809a794e65b47c68185b4943f51d08 (diff) | |
| parent | ccd64eb050f5226301df77699250a6abb440c27e (diff) | |
| download | platform_external_libhevc-oreo-m4-s10-release.tar.gz platform_external_libhevc-oreo-m4-s10-release.tar.bz2 platform_external_libhevc-oreo-m4-s10-release.zip | |
Merge cherrypicks of [4314173, 4314174, 4314175, 4314176, 4314471, 4314472, 4314473, 4314474, 4314475, 4314645, 4314646, 4314193, 4314476, 4314477, 4315350, 4315351, 4315352, 4315353, 4315354, 4314478, 4315430, 4314194, 4314195, 4314196, 4314197, 4314198, 4314199, 4314200, 4315093, 4315094, 4315095, 4315096, 4315097, 4315098, 4315099, 4315100, 4315501, 4315502, 4315503, 4314177, 4315431, 4315432, 4315433, 4315434, 4314178, 4314179, 4315355, 4315435, 4315382, 4315403, 4315404, 4315436, 4315437, 4315438, 4315439, 4315440, 4315521, 4315522, 4315523, 4315524, 4315525, 4315526, 4315527, 4315528, 4315529, 4314035, 4314230, 4315356, 4315530, 4315531, 4315471, 4315357, 4315358, 4314479, 4315532, 4315533, 4315534, 4315535, 4315536] into sparse-4732991-L06700000181398573android-8.1.0_r40oreo-m4-s10-release
Change-Id: I4093e3f0b9b562d54c314ead2b722e14c1d06f23
| -rw-r--r-- | common/ihevc_defs.h | 2 | ||||
| -rw-r--r-- | decoder/ihevcd_parse_headers.c | 28 |
2 files changed, 21 insertions, 9 deletions
diff --git a/common/ihevc_defs.h b/common/ihevc_defs.h index 13b0239..1878f30 100644 --- a/common/ihevc_defs.h +++ b/common/ihevc_defs.h @@ -313,7 +313,7 @@ enum #define SPS_MAX_SUB_LAYERS 7 /* Maximum long term reference pics */ -#define MAX_LTREF_PICS_SPS 16 +#define MAX_LTREF_PICS_SPS 32 #define MAX_STREF_PICS_SPS 64 diff --git a/decoder/ihevcd_parse_headers.c b/decoder/ihevcd_parse_headers.c index b8ed252..383204c 100644 --- a/decoder/ihevcd_parse_headers.c +++ b/decoder/ihevcd_parse_headers.c @@ -1414,20 +1414,18 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) for(; i < ps_sps->i1_sps_max_sub_layers; i++) { UEV_PARSE("max_dec_pic_buffering", value, ps_bitstrm); - ps_sps->ai1_sps_max_dec_pic_buffering[i] = value + 1; - - if(ps_sps->ai1_sps_max_dec_pic_buffering[i] > MAX_DPB_SIZE) + if(value < 0 || (value + 1) > MAX_DPB_SIZE) { return IHEVCD_INVALID_PARAMETER; } + ps_sps->ai1_sps_max_dec_pic_buffering[i] = value + 1; UEV_PARSE("num_reorder_pics", value, ps_bitstrm); - ps_sps->ai1_sps_max_num_reorder_pics[i] = value; - - if(ps_sps->ai1_sps_max_num_reorder_pics[i] > ps_sps->ai1_sps_max_dec_pic_buffering[i]) + if(value < 0 || value > ps_sps->ai1_sps_max_dec_pic_buffering[i]) { return IHEVCD_INVALID_PARAMETER; } + ps_sps->ai1_sps_max_num_reorder_pics[i] = value; UEV_PARSE("max_latency_increase", value, ps_bitstrm); ps_sps->ai1_sps_max_latency_increase[i] = value; @@ -1503,9 +1501,17 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) ps_sps->i1_log2_diff_max_min_pcm_coding_block_size = 0; UEV_PARSE("max_transform_hierarchy_depth_inter", value, ps_bitstrm); + if(value < 0 || value > (ps_sps->i1_log2_ctb_size - ps_sps->i1_log2_min_transform_block_size)) + { + return IHEVCD_INVALID_PARAMETER; + } ps_sps->i1_max_transform_hierarchy_depth_inter = value; UEV_PARSE("max_transform_hierarchy_depth_intra", value, ps_bitstrm); + if(value < 0 || value > (ps_sps->i1_log2_ctb_size - ps_sps->i1_log2_min_transform_block_size)) + { + return IHEVCD_INVALID_PARAMETER; + } ps_sps->i1_max_transform_hierarchy_depth_intra = value; /* String has a d (enabled) in order to match with HM */ @@ -1553,10 +1559,12 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) } UEV_PARSE("num_short_term_ref_pic_sets", value, ps_bitstrm); + if(value < 0 || value > MAX_STREF_PICS_SPS) + { + return IHEVCD_INVALID_PARAMETER; + } ps_sps->i1_num_short_term_ref_pic_sets = value; - ps_sps->i1_num_short_term_ref_pic_sets = CLIP3(ps_sps->i1_num_short_term_ref_pic_sets, 0, MAX_STREF_PICS_SPS); - for(i = 0; i < ps_sps->i1_num_short_term_ref_pic_sets; i++) ihevcd_short_term_ref_pic_set(ps_bitstrm, &ps_sps->as_stref_picset[0], ps_sps->i1_num_short_term_ref_pic_sets, i, &ps_sps->as_stref_picset[i]); @@ -1566,6 +1574,10 @@ IHEVCD_ERROR_T ihevcd_parse_sps(codec_t *ps_codec) if(ps_sps->i1_long_term_ref_pics_present_flag) { UEV_PARSE("num_long_term_ref_pics_sps", value, ps_bitstrm); + if(value < 0 || value > MAX_LTREF_PICS_SPS) + { + return IHEVCD_INVALID_PARAMETER; + } ps_sps->i1_num_long_term_ref_pics_sps = value; for(i = 0; i < ps_sps->i1_num_long_term_ref_pics_sps; i++) |
