h264: add a parameter to the FIELD_OR_MBAFF_PICTURE macro.
This way it does not look like a constant.
This commit is contained in:
		
							parent
							
								
									7fa00653a5
								
							
						
					
					
						commit
						a6931d8ece
					
				| @ -206,7 +206,7 @@ static void fill_slice_long(AVCodecContext *avctx, DXVA_Slice_H264_Long *slice, | |||||||
|     slice->SliceBytesInBuffer    = size; |     slice->SliceBytesInBuffer    = size; | ||||||
|     slice->wBadSliceChopping     = 0; |     slice->wBadSliceChopping     = 0; | ||||||
| 
 | 
 | ||||||
|     slice->first_mb_in_slice     = (h->mb_y >> FIELD_OR_MBAFF_PICTURE) * h->mb_width + h->mb_x; |     slice->first_mb_in_slice     = (h->mb_y >> FIELD_OR_MBAFF_PICTURE(h)) * h->mb_width + h->mb_x; | ||||||
|     slice->NumMbsForSlice        = 0; /* XXX it is set once we have all slices */ |     slice->NumMbsForSlice        = 0; /* XXX it is set once we have all slices */ | ||||||
|     slice->BitOffsetToSliceData  = get_bits_count(&h->gb); |     slice->BitOffsetToSliceData  = get_bits_count(&h->gb); | ||||||
|     slice->slice_type            = ff_h264_get_slice_type(h); |     slice->slice_type            = ff_h264_get_slice_type(h); | ||||||
|  | |||||||
| @ -1862,7 +1862,7 @@ static void decode_postinit(H264Context *h, int setup_finished) | |||||||
|             break; |             break; | ||||||
|         case SEI_PIC_STRUCT_TOP_BOTTOM: |         case SEI_PIC_STRUCT_TOP_BOTTOM: | ||||||
|         case SEI_PIC_STRUCT_BOTTOM_TOP: |         case SEI_PIC_STRUCT_BOTTOM_TOP: | ||||||
|             if (FIELD_OR_MBAFF_PICTURE) |             if (FIELD_OR_MBAFF_PICTURE(h)) | ||||||
|                 cur->f.interlaced_frame = 1; |                 cur->f.interlaced_frame = 1; | ||||||
|             else |             else | ||||||
|                 // try to flag soft telecine progressive
 |                 // try to flag soft telecine progressive
 | ||||||
| @ -1888,7 +1888,7 @@ static void decode_postinit(H264Context *h, int setup_finished) | |||||||
|             cur->f.interlaced_frame = (h->sei_ct_type & (1 << 1)) != 0; |             cur->f.interlaced_frame = (h->sei_ct_type & (1 << 1)) != 0; | ||||||
|     } else { |     } else { | ||||||
|         /* Derive interlacing flag from used decoding process. */ |         /* Derive interlacing flag from used decoding process. */ | ||||||
|         cur->f.interlaced_frame = FIELD_OR_MBAFF_PICTURE; |         cur->f.interlaced_frame = FIELD_OR_MBAFF_PICTURE(h); | ||||||
|     } |     } | ||||||
|     h->prev_interlaced_frame = cur->f.interlaced_frame; |     h->prev_interlaced_frame = cur->f.interlaced_frame; | ||||||
| 
 | 
 | ||||||
| @ -3448,13 +3448,13 @@ static int decode_slice_header(H264Context *h, H264Context *h0) | |||||||
|     h->cur_pic_ptr->frame_num = h->frame_num; // FIXME frame_num cleanup
 |     h->cur_pic_ptr->frame_num = h->frame_num; // FIXME frame_num cleanup
 | ||||||
| 
 | 
 | ||||||
|     assert(h->mb_num == h->mb_width * h->mb_height); |     assert(h->mb_num == h->mb_width * h->mb_height); | ||||||
|     if (first_mb_in_slice << FIELD_OR_MBAFF_PICTURE >= h->mb_num || |     if (first_mb_in_slice << FIELD_OR_MBAFF_PICTURE(h) >= h->mb_num || | ||||||
|         first_mb_in_slice >= h->mb_num) { |         first_mb_in_slice >= h->mb_num) { | ||||||
|         av_log(h->avctx, AV_LOG_ERROR, "first_mb_in_slice overflow\n"); |         av_log(h->avctx, AV_LOG_ERROR, "first_mb_in_slice overflow\n"); | ||||||
|         return -1; |         return -1; | ||||||
|     } |     } | ||||||
|     h->resync_mb_x = h->mb_x =  first_mb_in_slice % h->mb_width; |     h->resync_mb_x = h->mb_x =  first_mb_in_slice % h->mb_width; | ||||||
|     h->resync_mb_y = h->mb_y = (first_mb_in_slice / h->mb_width) << FIELD_OR_MBAFF_PICTURE; |     h->resync_mb_y = h->mb_y = (first_mb_in_slice / h->mb_width) << FIELD_OR_MBAFF_PICTURE(h); | ||||||
|     if (h->picture_structure == PICT_BOTTOM_FIELD) |     if (h->picture_structure == PICT_BOTTOM_FIELD) | ||||||
|         h->resync_mb_y = h->mb_y = h->mb_y + 1; |         h->resync_mb_y = h->mb_y = h->mb_y + 1; | ||||||
|     assert(h->mb_y < h->mb_height); |     assert(h->mb_y < h->mb_height); | ||||||
| @ -4163,7 +4163,7 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) | |||||||
|                 h->mb_x = lf_x_start = 0; |                 h->mb_x = lf_x_start = 0; | ||||||
|                 decode_finish_row(h); |                 decode_finish_row(h); | ||||||
|                 ++h->mb_y; |                 ++h->mb_y; | ||||||
|                 if (FIELD_OR_MBAFF_PICTURE) { |                 if (FIELD_OR_MBAFF_PICTURE(h)) { | ||||||
|                     ++h->mb_y; |                     ++h->mb_y; | ||||||
|                     if (FRAME_MBAFF(h) && h->mb_y < h->mb_height) |                     if (FRAME_MBAFF(h) && h->mb_y < h->mb_height) | ||||||
|                         predict_field_decoding_flag(h); |                         predict_field_decoding_flag(h); | ||||||
| @ -4210,7 +4210,7 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) | |||||||
|                 h->mb_x = lf_x_start = 0; |                 h->mb_x = lf_x_start = 0; | ||||||
|                 decode_finish_row(h); |                 decode_finish_row(h); | ||||||
|                 ++h->mb_y; |                 ++h->mb_y; | ||||||
|                 if (FIELD_OR_MBAFF_PICTURE) { |                 if (FIELD_OR_MBAFF_PICTURE(h)) { | ||||||
|                     ++h->mb_y; |                     ++h->mb_y; | ||||||
|                     if (FRAME_MBAFF(h) && h->mb_y < h->mb_height) |                     if (FRAME_MBAFF(h) && h->mb_y < h->mb_height) | ||||||
|                         predict_field_decoding_flag(h); |                         predict_field_decoding_flag(h); | ||||||
|  | |||||||
| @ -79,7 +79,7 @@ | |||||||
| #define LBOT     0 | #define LBOT     0 | ||||||
| #define LEFT(i)  0 | #define LEFT(i)  0 | ||||||
| #endif | #endif | ||||||
| #define FIELD_OR_MBAFF_PICTURE (FRAME_MBAFF(h) || FIELD_PICTURE(h)) | #define FIELD_OR_MBAFF_PICTURE(h) (FRAME_MBAFF(h) || FIELD_PICTURE(h)) | ||||||
| 
 | 
 | ||||||
| #ifndef CABAC | #ifndef CABAC | ||||||
| #define CABAC h->pps.cabac | #define CABAC h->pps.cabac | ||||||
|  | |||||||
| @ -324,7 +324,7 @@ static int vaapi_h264_decode_slice(AVCodecContext *avctx, | |||||||
|     if (!slice_param) |     if (!slice_param) | ||||||
|         return -1; |         return -1; | ||||||
|     slice_param->slice_data_bit_offset          = get_bits_count(&h->gb) + 8; /* bit buffer started beyond nal_unit_type */ |     slice_param->slice_data_bit_offset          = get_bits_count(&h->gb) + 8; /* bit buffer started beyond nal_unit_type */ | ||||||
|     slice_param->first_mb_in_slice              = (h->mb_y >> FIELD_OR_MBAFF_PICTURE) * h->mb_width + h->mb_x; |     slice_param->first_mb_in_slice              = (h->mb_y >> FIELD_OR_MBAFF_PICTURE(h)) * h->mb_width + h->mb_x; | ||||||
|     slice_param->slice_type                     = ff_h264_get_slice_type(h); |     slice_param->slice_type                     = ff_h264_get_slice_type(h); | ||||||
|     slice_param->direct_spatial_mv_pred_flag    = h->slice_type == AV_PICTURE_TYPE_B ? h->direct_spatial_mv_pred : 0; |     slice_param->direct_spatial_mv_pred_flag    = h->slice_type == AV_PICTURE_TYPE_B ? h->direct_spatial_mv_pred : 0; | ||||||
|     slice_param->num_ref_idx_l0_active_minus1   = h->list_count > 0 ? h->ref_count[0] - 1 : 0; |     slice_param->num_ref_idx_l0_active_minus1   = h->list_count > 0 ? h->ref_count[0] - 1 : 0; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user