@ -1432,6 +1432,7 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx,
int i , ret = 0 ;
int i , ret = 0 ;
unsigned int pps_id = 0 ;
unsigned int pps_id = 0 ;
ptrdiff_t nal_size ;
ptrdiff_t nal_size ;
unsigned log2_parallel_merge_level_minus2 ;
AVBufferRef * pps_buf ;
AVBufferRef * pps_buf ;
HEVCPPS * pps = av_mallocz ( sizeof ( * pps ) ) ;
HEVCPPS * pps = av_mallocz ( sizeof ( * pps ) ) ;
@ -1629,13 +1630,14 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx,
goto err ;
goto err ;
}
}
pps - > lists_modification_present_flag = get_bits1 ( gb ) ;
pps - > lists_modification_present_flag = get_bits1 ( gb ) ;
pps - > log2_parallel_merge_level = get_ue_golomb_long ( gb ) + 2 ;
log2_parallel_merge_level_minus2 = get_ue_golomb_long ( gb ) ;
if ( pps - > log2_parallel_merge_level > sps - > log2_ctb_size ) {
if ( log2_parallel_merge_level_minus2 > sps - > log2_ctb_size ) {
av_log ( avctx , AV_LOG_ERROR , " log2_parallel_merge_level_minus2 out of range: %d \n " ,
av_log ( avctx , AV_LOG_ERROR , " log2_parallel_merge_level_minus2 out of range: %d \n " ,
pps - > log2_parallel_merge_level - 2 ) ;
log2_parallel_merge_level_minus 2) ;
ret = AVERROR_INVALIDDATA ;
ret = AVERROR_INVALIDDATA ;
goto err ;
goto err ;
}
}
pps - > log2_parallel_merge_level = log2_parallel_merge_level_minus2 + 2 ;
pps - > slice_header_extension_present_flag = get_bits1 ( gb ) ;
pps - > slice_header_extension_present_flag = get_bits1 ( gb ) ;