Merge "Bug fix for svc first pass rate control."
This commit is contained in:
commit
afc5636699
@ -533,6 +533,9 @@ void vp9_first_pass(VP9_COMP *cpi) {
|
|||||||
// Disable golden frame for svc first pass for now.
|
// Disable golden frame for svc first pass for now.
|
||||||
gld_yv12 = NULL;
|
gld_yv12 = NULL;
|
||||||
set_ref_ptrs(cm, xd, ref_frame, NONE);
|
set_ref_ptrs(cm, xd, ref_frame, NONE);
|
||||||
|
|
||||||
|
cpi->Source = vp9_scale_if_required(cm, cpi->un_scaled_source,
|
||||||
|
&cpi->scaled_source);
|
||||||
}
|
}
|
||||||
|
|
||||||
vp9_setup_src_planes(x, cpi->Source, 0, 0);
|
vp9_setup_src_planes(x, cpi->Source, 0, 0);
|
||||||
@ -849,6 +852,8 @@ void vp9_first_pass(VP9_COMP *cpi) {
|
|||||||
++twopass->sr_update_lag;
|
++twopass->sr_update_lag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vp9_extend_frame_borders(new_yv12);
|
||||||
|
|
||||||
if (cpi->use_svc && cpi->svc.number_temporal_layers == 1) {
|
if (cpi->use_svc && cpi->svc.number_temporal_layers == 1) {
|
||||||
vp9_update_reference_frames(cpi);
|
vp9_update_reference_frames(cpi);
|
||||||
} else {
|
} else {
|
||||||
@ -856,8 +861,6 @@ void vp9_first_pass(VP9_COMP *cpi) {
|
|||||||
swap_yv12(lst_yv12, new_yv12);
|
swap_yv12(lst_yv12, new_yv12);
|
||||||
}
|
}
|
||||||
|
|
||||||
vp9_extend_frame_borders(lst_yv12);
|
|
||||||
|
|
||||||
// Special case for the first frame. Copy into the GF buffer as a second
|
// Special case for the first frame. Copy into the GF buffer as a second
|
||||||
// reference.
|
// reference.
|
||||||
if (cm->current_video_frame == 0 && gld_yv12 != NULL) {
|
if (cm->current_video_frame == 0 && gld_yv12 != NULL) {
|
||||||
|
@ -2083,8 +2083,9 @@ static void set_ext_overrides(VP9_COMP *cpi) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static YV12_BUFFER_CONFIG *scale_if_required(VP9_COMMON *cm,
|
YV12_BUFFER_CONFIG *vp9_scale_if_required(VP9_COMMON *cm,
|
||||||
YV12_BUFFER_CONFIG *unscaled, YV12_BUFFER_CONFIG *scaled) {
|
YV12_BUFFER_CONFIG *unscaled,
|
||||||
|
YV12_BUFFER_CONFIG *scaled) {
|
||||||
if (cm->mi_cols * MI_SIZE != unscaled->y_width ||
|
if (cm->mi_cols * MI_SIZE != unscaled->y_width ||
|
||||||
cm->mi_rows * MI_SIZE != unscaled->y_height) {
|
cm->mi_rows * MI_SIZE != unscaled->y_height) {
|
||||||
scale_and_extend_frame_nonnormative(unscaled, scaled);
|
scale_and_extend_frame_nonnormative(unscaled, scaled);
|
||||||
@ -2109,12 +2110,12 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
|
|||||||
struct segmentation *const seg = &cm->seg;
|
struct segmentation *const seg = &cm->seg;
|
||||||
set_ext_overrides(cpi);
|
set_ext_overrides(cpi);
|
||||||
|
|
||||||
cpi->Source = scale_if_required(cm, cpi->un_scaled_source,
|
cpi->Source = vp9_scale_if_required(cm, cpi->un_scaled_source,
|
||||||
&cpi->scaled_source);
|
&cpi->scaled_source);
|
||||||
|
|
||||||
if (cpi->unscaled_last_source != NULL)
|
if (cpi->unscaled_last_source != NULL)
|
||||||
cpi->Last_Source = scale_if_required(cm, cpi->unscaled_last_source,
|
cpi->Last_Source = vp9_scale_if_required(cm, cpi->unscaled_last_source,
|
||||||
&cpi->scaled_last_source);
|
&cpi->scaled_last_source);
|
||||||
|
|
||||||
vp9_scale_references(cpi);
|
vp9_scale_references(cpi);
|
||||||
|
|
||||||
|
@ -617,6 +617,10 @@ void vp9_update_reference_frames(VP9_COMP *cpi);
|
|||||||
|
|
||||||
int64_t vp9_rescale(int64_t val, int64_t num, int denom);
|
int64_t vp9_rescale(int64_t val, int64_t num, int denom);
|
||||||
|
|
||||||
|
YV12_BUFFER_CONFIG *vp9_scale_if_required(VP9_COMMON *cm,
|
||||||
|
YV12_BUFFER_CONFIG *unscaled,
|
||||||
|
YV12_BUFFER_CONFIG *scaled);
|
||||||
|
|
||||||
static INLINE void set_ref_ptrs(VP9_COMMON *cm, MACROBLOCKD *xd,
|
static INLINE void set_ref_ptrs(VP9_COMMON *cm, MACROBLOCKD *xd,
|
||||||
MV_REFERENCE_FRAME ref0,
|
MV_REFERENCE_FRAME ref0,
|
||||||
MV_REFERENCE_FRAME ref1) {
|
MV_REFERENCE_FRAME ref1) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user