avcodec/h264_picture: split copying H264Picture some fields into a separate function
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		
							parent
							
								
									ce4a31cd1f
								
							
						
					
					
						commit
						ab448a7f9b
					
				| @ -63,6 +63,38 @@ void ff_h264_unref_picture(H264Context *h, H264Picture *pic) | |||||||
|     memset((uint8_t*)pic + off, 0, sizeof(*pic) - off); |     memset((uint8_t*)pic + off, 0, sizeof(*pic) - off); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void h264_copy_picture_params(H264Picture *dst, const H264Picture *src) | ||||||
|  | { | ||||||
|  |     dst->qscale_table = src->qscale_table; | ||||||
|  |     dst->mb_type      = src->mb_type; | ||||||
|  |     dst->pps          = src->pps; | ||||||
|  | 
 | ||||||
|  |     for (int i = 0; i < 2; i++) { | ||||||
|  |         dst->motion_val[i] = src->motion_val[i]; | ||||||
|  |         dst->ref_index[i]  = src->ref_index[i]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     for (int i = 0; i < 2; i++) | ||||||
|  |         dst->field_poc[i] = src->field_poc[i]; | ||||||
|  | 
 | ||||||
|  |     memcpy(dst->ref_poc,   src->ref_poc,   sizeof(src->ref_poc)); | ||||||
|  |     memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count)); | ||||||
|  | 
 | ||||||
|  |     dst->poc           = src->poc; | ||||||
|  |     dst->frame_num     = src->frame_num; | ||||||
|  |     dst->mmco_reset    = src->mmco_reset; | ||||||
|  |     dst->long_ref      = src->long_ref; | ||||||
|  |     dst->mbaff         = src->mbaff; | ||||||
|  |     dst->field_picture = src->field_picture; | ||||||
|  |     dst->reference     = src->reference; | ||||||
|  |     dst->recovered     = src->recovered; | ||||||
|  |     dst->invalid_gap   = src->invalid_gap; | ||||||
|  |     dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt; | ||||||
|  |     dst->mb_width      = src->mb_width; | ||||||
|  |     dst->mb_height     = src->mb_height; | ||||||
|  |     dst->mb_stride     = src->mb_stride; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) | int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) | ||||||
| { | { | ||||||
|     int ret, i; |     int ret, i; | ||||||
| @ -83,9 +115,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) | |||||||
|         ret = AVERROR(ENOMEM); |         ret = AVERROR(ENOMEM); | ||||||
|         goto fail; |         goto fail; | ||||||
|     } |     } | ||||||
|     dst->qscale_table = src->qscale_table; |  | ||||||
|     dst->mb_type      = src->mb_type; |  | ||||||
|     dst->pps          = src->pps; |  | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < 2; i++) { |     for (i = 0; i < 2; i++) { | ||||||
|         dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]); |         dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]); | ||||||
| @ -94,8 +123,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) | |||||||
|             ret = AVERROR(ENOMEM); |             ret = AVERROR(ENOMEM); | ||||||
|             goto fail; |             goto fail; | ||||||
|         } |         } | ||||||
|         dst->motion_val[i] = src->motion_val[i]; |  | ||||||
|         dst->ref_index[i]  = src->ref_index[i]; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (src->hwaccel_picture_private) { |     if (src->hwaccel_picture_private) { | ||||||
| @ -107,25 +134,7 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) | |||||||
|         dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data; |         dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < 2; i++) |     h264_copy_picture_params(dst, src); | ||||||
|         dst->field_poc[i] = src->field_poc[i]; |  | ||||||
| 
 |  | ||||||
|     memcpy(dst->ref_poc,   src->ref_poc,   sizeof(src->ref_poc)); |  | ||||||
|     memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count)); |  | ||||||
| 
 |  | ||||||
|     dst->poc           = src->poc; |  | ||||||
|     dst->frame_num     = src->frame_num; |  | ||||||
|     dst->mmco_reset    = src->mmco_reset; |  | ||||||
|     dst->long_ref      = src->long_ref; |  | ||||||
|     dst->mbaff         = src->mbaff; |  | ||||||
|     dst->field_picture = src->field_picture; |  | ||||||
|     dst->reference     = src->reference; |  | ||||||
|     dst->recovered     = src->recovered; |  | ||||||
|     dst->invalid_gap   = src->invalid_gap; |  | ||||||
|     dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt; |  | ||||||
|     dst->mb_width      = src->mb_width; |  | ||||||
|     dst->mb_height     = src->mb_height; |  | ||||||
|     dst->mb_stride     = src->mb_stride; |  | ||||||
| 
 | 
 | ||||||
|     return 0; |     return 0; | ||||||
| fail: | fail: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user