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