Merge "Refactor: Clean memory allocation for copy partition."
This commit is contained in:
@@ -1445,6 +1445,33 @@ static void realloc_segmentation_maps(VP9_COMP *cpi) {
|
|||||||
vpx_calloc(cm->mi_rows * cm->mi_cols, 1));
|
vpx_calloc(cm->mi_rows * cm->mi_cols, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void alloc_copy_partition_data(VP9_COMP *cpi) {
|
||||||
|
VP9_COMMON *const cm = &cpi->common;
|
||||||
|
if (cpi->prev_partition == NULL) {
|
||||||
|
CHECK_MEM_ERROR(cm, cpi->prev_partition,
|
||||||
|
(BLOCK_SIZE *)vpx_calloc(cm->mi_stride * cm->mi_rows,
|
||||||
|
sizeof(*cpi->prev_partition)));
|
||||||
|
}
|
||||||
|
if (cpi->prev_segment_id == NULL) {
|
||||||
|
CHECK_MEM_ERROR(
|
||||||
|
cm, cpi->prev_segment_id,
|
||||||
|
(int8_t *)vpx_calloc((cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1),
|
||||||
|
sizeof(*cpi->prev_segment_id)));
|
||||||
|
}
|
||||||
|
if (cpi->prev_variance_low == NULL) {
|
||||||
|
CHECK_MEM_ERROR(cm, cpi->prev_variance_low,
|
||||||
|
(uint8_t *)vpx_calloc(
|
||||||
|
(cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1) * 25,
|
||||||
|
sizeof(*cpi->prev_variance_low)));
|
||||||
|
}
|
||||||
|
if (cpi->copied_frame_cnt == NULL) {
|
||||||
|
CHECK_MEM_ERROR(
|
||||||
|
cm, cpi->copied_frame_cnt,
|
||||||
|
(uint8_t *)vpx_calloc((cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1),
|
||||||
|
sizeof(*cpi->copied_frame_cnt)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) {
|
void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) {
|
||||||
VP9_COMMON *const cm = &cpi->common;
|
VP9_COMMON *const cm = &cpi->common;
|
||||||
RATE_CONTROL *const rc = &cpi->rc;
|
RATE_CONTROL *const rc = &cpi->rc;
|
||||||
@@ -3197,6 +3224,8 @@ static void encode_without_recode_loop(VP9_COMP *cpi, size_t *size,
|
|||||||
set_size_independent_vars(cpi);
|
set_size_independent_vars(cpi);
|
||||||
set_size_dependent_vars(cpi, &q, &bottom_index, &top_index);
|
set_size_dependent_vars(cpi, &q, &bottom_index, &top_index);
|
||||||
|
|
||||||
|
if (cpi->sf.copy_partition_flag) alloc_copy_partition_data(cpi);
|
||||||
|
|
||||||
if (cpi->oxcf.speed >= 5 && cpi->oxcf.pass == 0 &&
|
if (cpi->oxcf.speed >= 5 && cpi->oxcf.pass == 0 &&
|
||||||
cpi->oxcf.rc_mode == VPX_CBR &&
|
cpi->oxcf.rc_mode == VPX_CBR &&
|
||||||
cpi->oxcf.content != VP9E_CONTENT_SCREEN &&
|
cpi->oxcf.content != VP9E_CONTENT_SCREEN &&
|
||||||
|
@@ -525,28 +525,9 @@ static void set_rt_speed_feature_framesize_independent(
|
|||||||
sf->adaptive_rd_thresh = 4;
|
sf->adaptive_rd_thresh = 4;
|
||||||
// Enable partition copy
|
// Enable partition copy
|
||||||
if (!cpi->use_svc && !cpi->resize_pending && cpi->resize_state == ORIG &&
|
if (!cpi->use_svc && !cpi->resize_pending && cpi->resize_state == ORIG &&
|
||||||
!cpi->external_resize && cpi->oxcf.resize_mode == RESIZE_NONE)
|
!cpi->external_resize && cpi->oxcf.resize_mode == RESIZE_NONE) {
|
||||||
sf->copy_partition_flag = 1;
|
sf->copy_partition_flag = 1;
|
||||||
|
|
||||||
if (sf->copy_partition_flag) {
|
|
||||||
cpi->max_copied_frame = 4;
|
cpi->max_copied_frame = 4;
|
||||||
if (cpi->prev_partition == NULL) {
|
|
||||||
cpi->prev_partition = (BLOCK_SIZE *)vpx_calloc(
|
|
||||||
cm->mi_stride * cm->mi_rows, sizeof(BLOCK_SIZE));
|
|
||||||
}
|
|
||||||
if (cpi->prev_segment_id == NULL) {
|
|
||||||
cpi->prev_segment_id = (int8_t *)vpx_calloc(
|
|
||||||
(cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1), sizeof(int8_t));
|
|
||||||
}
|
|
||||||
if (cpi->prev_variance_low == NULL) {
|
|
||||||
cpi->prev_variance_low = (uint8_t *)vpx_calloc(
|
|
||||||
(cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1) * 25,
|
|
||||||
sizeof(uint8_t));
|
|
||||||
}
|
|
||||||
if (cpi->copied_frame_cnt == NULL) {
|
|
||||||
cpi->copied_frame_cnt = (uint8_t *)vpx_calloc(
|
|
||||||
(cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1), sizeof(uint8_t));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cpi->row_mt && cpi->oxcf.max_threads > 1)
|
if (cpi->row_mt && cpi->oxcf.max_threads > 1)
|
||||||
|
Reference in New Issue
Block a user