avcodec/h264_slice: clear old slice POC values on parsing failure
If a slice header fails to parse, and the next one uses different Sequence and Picture parameter sets, certain values may not be read if they are not coded, resulting in the previous slice values being used. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		
							parent
							
								
									85713d85a7
								
							
						
					
					
						commit
						3aba8b176f
					
				@ -1819,6 +1819,8 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
 | 
			
		||||
    if (nal->type == H264_NAL_IDR_SLICE)
 | 
			
		||||
        get_ue_golomb_long(&sl->gb); /* idr_pic_id */
 | 
			
		||||
 | 
			
		||||
    sl->poc_lsb = 0;
 | 
			
		||||
    sl->delta_poc_bottom = 0;
 | 
			
		||||
    if (sps->poc_type == 0) {
 | 
			
		||||
        sl->poc_lsb = get_bits(&sl->gb, sps->log2_max_poc_lsb);
 | 
			
		||||
 | 
			
		||||
@ -1826,6 +1828,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
 | 
			
		||||
            sl->delta_poc_bottom = get_se_golomb(&sl->gb);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sl->delta_poc[0] = sl->delta_poc[1] = 0;
 | 
			
		||||
    if (sps->poc_type == 1 && !sps->delta_pic_order_always_zero_flag) {
 | 
			
		||||
        sl->delta_poc[0] = get_se_golomb(&sl->gb);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user