|  | @@ -6795,6 +6795,7 @@ static int decode_picture_timing(H264Context *h){ | 
														
													
														
															
																|  |  | if(h->sps.pic_struct_present_flag){ |  |  | if(h->sps.pic_struct_present_flag){ | 
														
													
														
															
																|  |  | unsigned int i, num_clock_ts; |  |  | unsigned int i, num_clock_ts; | 
														
													
														
															
																|  |  | h->sei_pic_struct = get_bits(&s->gb, 4); |  |  | h->sei_pic_struct = get_bits(&s->gb, 4); | 
														
													
														
															
																|  |  |  |  |  | h->sei_ct_type    = 0; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | if (h->sei_pic_struct > SEI_PIC_STRUCT_FRAME_TRIPLING) |  |  | if (h->sei_pic_struct > SEI_PIC_STRUCT_FRAME_TRIPLING) | 
														
													
														
															
																|  |  | return -1; |  |  | return -1; | 
														
													
												
													
														
															
																|  | @@ -6804,7 +6805,7 @@ static int decode_picture_timing(H264Context *h){ | 
														
													
														
															
																|  |  | for (i = 0 ; i < num_clock_ts ; i++){ |  |  | for (i = 0 ; i < num_clock_ts ; i++){ | 
														
													
														
															
																|  |  | if(get_bits(&s->gb, 1)){                  /* clock_timestamp_flag */ |  |  | if(get_bits(&s->gb, 1)){                  /* clock_timestamp_flag */ | 
														
													
														
															
																|  |  | unsigned int full_timestamp_flag; |  |  | unsigned int full_timestamp_flag; | 
														
													
														
															
																|  |  | skip_bits(&s->gb, 2);                 /* ct_type */ |  |  |  | 
														
													
														
															
																|  |  |  |  |  | h->sei_ct_type |= 1<<get_bits(&s->gb, 2); | 
														
													
														
															
																|  |  | skip_bits(&s->gb, 1);                 /* nuit_field_based_flag */ |  |  | skip_bits(&s->gb, 1);                 /* nuit_field_based_flag */ | 
														
													
														
															
																|  |  | skip_bits(&s->gb, 5);                 /* counting_type */ |  |  | skip_bits(&s->gb, 5);                 /* counting_type */ | 
														
													
														
															
																|  |  | full_timestamp_flag = get_bits(&s->gb, 1); |  |  | full_timestamp_flag = get_bits(&s->gb, 1); | 
														
													
												
													
														
															
																|  | @@ -7762,24 +7763,19 @@ static int decode_frame(AVCodecContext *avctx, | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | /* Signal interlacing information externally. */ |  |  | /* Signal interlacing information externally. */ | 
														
													
														
															
																|  |  | /* Prioritize picture timing SEI information over used decoding process if it exists. */ |  |  | /* Prioritize picture timing SEI information over used decoding process if it exists. */ | 
														
													
														
															
																|  |  |  |  |  | if (h->sei_ct_type) | 
														
													
														
															
																|  |  |  |  |  | cur->interlaced_frame = (h->sei_ct_type & (1<<1)) != 0; | 
														
													
														
															
																|  |  |  |  |  | else | 
														
													
														
															
																|  |  |  |  |  | cur->interlaced_frame = FIELD_OR_MBAFF_PICTURE; | 
														
													
														
															
																|  |  |  |  |  | 
 | 
														
													
														
															
																|  |  | if(h->sps.pic_struct_present_flag){ |  |  | if(h->sps.pic_struct_present_flag){ | 
														
													
														
															
																|  |  | switch (h->sei_pic_struct) |  |  | switch (h->sei_pic_struct) | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_FRAME: |  |  |  | 
														
													
														
															
																|  |  | cur->interlaced_frame = 0; |  |  |  | 
														
													
														
															
																|  |  | break; |  |  |  | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_TOP_FIELD: |  |  |  | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_BOTTOM_FIELD: |  |  |  | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_TOP_BOTTOM: |  |  |  | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_BOTTOM_TOP: |  |  |  | 
														
													
														
															
																|  |  | cur->interlaced_frame = 1; |  |  |  | 
														
													
														
															
																|  |  | break; |  |  |  | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_TOP_BOTTOM_TOP: |  |  | case SEI_PIC_STRUCT_TOP_BOTTOM_TOP: | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM: |  |  | case SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM: | 
														
													
														
															
																|  |  | // Signal the possibility of telecined film externally (pic_struct 5,6) |  |  | // Signal the possibility of telecined film externally (pic_struct 5,6) | 
														
													
														
															
																|  |  | // From these hints, let the applications decide if they apply deinterlacing. |  |  | // From these hints, let the applications decide if they apply deinterlacing. | 
														
													
														
															
																|  |  | cur->repeat_pict = 1; |  |  | cur->repeat_pict = 1; | 
														
													
														
															
																|  |  | cur->interlaced_frame = FIELD_OR_MBAFF_PICTURE; |  |  |  | 
														
													
														
															
																|  |  | break; |  |  | break; | 
														
													
														
															
																|  |  | case SEI_PIC_STRUCT_FRAME_DOUBLING: |  |  | case SEI_PIC_STRUCT_FRAME_DOUBLING: | 
														
													
														
															
																|  |  | // Force progressive here, as doubling interlaced frame is a bad idea. |  |  | // Force progressive here, as doubling interlaced frame is a bad idea. | 
														
													
												
													
														
															
																|  | 
 |