|  |  | @@ -2262,7 +2262,31 @@ static int mpeg_decode_a53_cc(AVCodecContext *avctx, | 
		
	
		
			
			|  |  |  | return 1; | 
		
	
		
			
			|  |  |  | } else if (buf_size >= 11 && | 
		
	
		
			
			|  |  |  | p[0] == 'C' && p[1] == 'C' && p[2] == 0x01 && p[3] == 0xf8) { | 
		
	
		
			
			|  |  |  | /* extract DVD CC data */ | 
		
	
		
			
			|  |  |  | /* extract DVD CC data | 
		
	
		
			
			|  |  |  | * | 
		
	
		
			
			|  |  |  | * uint32_t   user_data_start_code        0x000001B2    (big endian) | 
		
	
		
			
			|  |  |  | * uint16_t   user_identifier             0x4343 "CC" | 
		
	
		
			
			|  |  |  | * uint8_t    user_data_type_code         0x01 | 
		
	
		
			
			|  |  |  | * uint8_t    caption_block_size          0xF8 | 
		
	
		
			
			|  |  |  | * uint8_t | 
		
	
		
			
			|  |  |  | *   bit 7    caption_odd_field_first     1=odd field (CC1/CC2) first  0=even field (CC3/CC4) first | 
		
	
		
			
			|  |  |  | *   bit 6    caption_filler              0 | 
		
	
		
			
			|  |  |  | *   bit 5:1  caption_block_count         number of caption blocks (pairs of caption words = frames). Most DVDs use 15 per start of GOP. | 
		
	
		
			
			|  |  |  | *   bit 0    caption_extra_field_added   1=one additional caption word | 
		
	
		
			
			|  |  |  | * | 
		
	
		
			
			|  |  |  | * struct caption_field_block { | 
		
	
		
			
			|  |  |  | *   uint8_t | 
		
	
		
			
			|  |  |  | *     bit 7:1 caption_filler             0x7F (all 1s) | 
		
	
		
			
			|  |  |  | *     bit 0   caption_field_odd          1=odd field (this is CC1/CC2)  0=even field (this is CC3/CC4) | 
		
	
		
			
			|  |  |  | *   uint8_t   caption_first_byte | 
		
	
		
			
			|  |  |  | *   uint8_t   caption_second_byte | 
		
	
		
			
			|  |  |  | * } caption_block[(caption_block_count * 2) + caption_extra_field_added]; | 
		
	
		
			
			|  |  |  | * | 
		
	
		
			
			|  |  |  | * Some DVDs encode caption data for both fields with caption_field_odd=1. The only way to decode the fields | 
		
	
		
			
			|  |  |  | * correctly is to start on the field indicated by caption_odd_field_first and count between odd/even fields. | 
		
	
		
			
			|  |  |  | * Don't assume that the first caption word is the odd field. There do exist MPEG files in the wild that start | 
		
	
		
			
			|  |  |  | * on the even field. There also exist DVDs in the wild that encode an odd field count and the | 
		
	
		
			
			|  |  |  | * caption_extra_field_added/caption_odd_field_first bits change per packet to allow that. */ | 
		
	
		
			
			|  |  |  | int cc_count = 0; | 
		
	
		
			
			|  |  |  | int i; | 
		
	
		
			
			|  |  |  | // There is a caption count field in the data, but it is often | 
		
	
	
		
			
				|  |  | 
 |