Merge "Adding setup_frame() function."
This commit is contained in:
Коммит
79303c993a
|
@ -131,6 +131,24 @@ static void setup_inter_frame(VP9_COMMON *cm) {
|
||||||
cm->fc = cm->frame_contexts[cm->frame_context_idx];
|
cm->fc = cm->frame_contexts[cm->frame_context_idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setup_frame(VP9_COMP *cpi) {
|
||||||
|
VP9_COMMON *const cm = &cpi->common;
|
||||||
|
// Set up entropy context depending on frame type. The decoder mandates
|
||||||
|
// the use of the default context, index 0, for keyframes and inter
|
||||||
|
// frames where the error_resilient_mode or intra_only flag is set. For
|
||||||
|
// other inter-frames the encoder currently uses only two contexts;
|
||||||
|
// context 1 for ALTREF frames and context 0 for the others.
|
||||||
|
if (cm->frame_type == KEY_FRAME) {
|
||||||
|
setup_key_frame(cpi);
|
||||||
|
} else {
|
||||||
|
if (!cm->intra_only && !cm->error_resilient_mode && !cpi->use_svc)
|
||||||
|
cm->frame_context_idx = cpi->refresh_alt_ref_frame;
|
||||||
|
setup_inter_frame(cm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void vp9_initialize_enc() {
|
void vp9_initialize_enc() {
|
||||||
static int init_done = 0;
|
static int init_done = 0;
|
||||||
|
|
||||||
|
@ -1798,20 +1816,7 @@ static void encode_without_recode_loop(VP9_COMP *cpi,
|
||||||
VP9_COMMON *const cm = &cpi->common;
|
VP9_COMMON *const cm = &cpi->common;
|
||||||
vp9_clear_system_state();
|
vp9_clear_system_state();
|
||||||
vp9_set_quantizer(cm, q);
|
vp9_set_quantizer(cm, q);
|
||||||
|
setup_frame(cpi);
|
||||||
// Set up entropy context depending on frame type. The decoder mandates
|
|
||||||
// the use of the default context, index 0, for keyframes and inter
|
|
||||||
// frames where the error_resilient_mode or intra_only flag is set. For
|
|
||||||
// other inter-frames the encoder currently uses only two contexts;
|
|
||||||
// context 1 for ALTREF frames and context 0 for the others.
|
|
||||||
if (cm->frame_type == KEY_FRAME) {
|
|
||||||
setup_key_frame(cpi);
|
|
||||||
} else {
|
|
||||||
if (!cm->intra_only && !cm->error_resilient_mode && !cpi->use_svc)
|
|
||||||
cm->frame_context_idx = cpi->refresh_alt_ref_frame;
|
|
||||||
|
|
||||||
setup_inter_frame(cm);
|
|
||||||
}
|
|
||||||
// Variance adaptive and in frame q adjustment experiments are mutually
|
// Variance adaptive and in frame q adjustment experiments are mutually
|
||||||
// exclusive.
|
// exclusive.
|
||||||
if (cpi->oxcf.aq_mode == VARIANCE_AQ) {
|
if (cpi->oxcf.aq_mode == VARIANCE_AQ) {
|
||||||
|
@ -1856,21 +1861,8 @@ static void encode_with_recode_loop(VP9_COMP *cpi,
|
||||||
|
|
||||||
vp9_set_quantizer(cm, q);
|
vp9_set_quantizer(cm, q);
|
||||||
|
|
||||||
if (loop_count == 0) {
|
if (loop_count == 0)
|
||||||
// Set up entropy context depending on frame type. The decoder mandates
|
setup_frame(cpi);
|
||||||
// the use of the default context, index 0, for keyframes and inter
|
|
||||||
// frames where the error_resilient_mode or intra_only flag is set. For
|
|
||||||
// other inter-frames the encoder currently uses only two contexts;
|
|
||||||
// context 1 for ALTREF frames and context 0 for the others.
|
|
||||||
if (cm->frame_type == KEY_FRAME) {
|
|
||||||
setup_key_frame(cpi);
|
|
||||||
} else {
|
|
||||||
if (!cm->intra_only && !cm->error_resilient_mode && !cpi->use_svc)
|
|
||||||
cpi->common.frame_context_idx = cpi->refresh_alt_ref_frame;
|
|
||||||
|
|
||||||
setup_inter_frame(cm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Variance adaptive and in frame q adjustment experiments are mutually
|
// Variance adaptive and in frame q adjustment experiments are mutually
|
||||||
// exclusive.
|
// exclusive.
|
||||||
|
@ -2161,7 +2153,6 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
|
||||||
|
|
||||||
// Set various flags etc to special state if it is a key frame.
|
// Set various flags etc to special state if it is a key frame.
|
||||||
if (frame_is_intra_only(cm)) {
|
if (frame_is_intra_only(cm)) {
|
||||||
setup_key_frame(cpi);
|
|
||||||
// Reset the loop filter deltas and segmentation map.
|
// Reset the loop filter deltas and segmentation map.
|
||||||
vp9_reset_segment_features(&cm->seg);
|
vp9_reset_segment_features(&cm->seg);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче