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); | ||||
| } | ||||
| 
 | ||||
| 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 ret, i; | ||||
| @ -83,9 +115,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src) | ||||
|         ret = AVERROR(ENOMEM); | ||||
|         goto fail; | ||||
|     } | ||||
|     dst->qscale_table = src->qscale_table; | ||||
|     dst->mb_type      = src->mb_type; | ||||
|     dst->pps          = src->pps; | ||||
| 
 | ||||
|     for (i = 0; i < 2; 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); | ||||
|             goto fail; | ||||
|         } | ||||
|         dst->motion_val[i] = src->motion_val[i]; | ||||
|         dst->ref_index[i]  = src->ref_index[i]; | ||||
|     } | ||||
| 
 | ||||
|     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; | ||||
|     } | ||||
| 
 | ||||
|     for (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; | ||||
|     h264_copy_picture_params(dst, src); | ||||
| 
 | ||||
|     return 0; | ||||
| fail: | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user