summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
authorJohann Koenig <johannkoenig@google.com>2018-03-15 19:26:16 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-03-15 19:26:16 +0000
commitf3adb459147de2ed21a3a93ebd78a4c41a4b843f (patch)
tree87726c998b965d37e84a0af9c7e81990a46ad81e /vp9
parent5dfb01bb30729550c381e14ea6ffce5a4599cf50 (diff)
parent0e97e704962390389cab01d7b37f2f97757487fe (diff)
downloadlibvpx-f3adb459147de2ed21a3a93ebd78a4c41a4b843f.tar
libvpx-f3adb459147de2ed21a3a93ebd78a4c41a4b843f.tar.gz
libvpx-f3adb459147de2ed21a3a93ebd78a4c41a4b843f.tar.bz2
libvpx-f3adb459147de2ed21a3a93ebd78a4c41a4b843f.zip
Merge "remove spatial svc experiment"
Diffstat (limited to 'vp9')
-rw-r--r--vp9/encoder/vp9_encoder.c19
-rw-r--r--vp9/encoder/vp9_lookahead.h4
-rw-r--r--vp9/encoder/vp9_svc_layercontext.c114
-rw-r--r--vp9/vp9_cx_iface.c51
4 files changed, 0 insertions, 188 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index 98cba3c14..a09212e36 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -5226,12 +5226,6 @@ int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags,
int i;
if (is_two_pass_svc(cpi)) {
-#if CONFIG_SPATIAL_SVC
- vp9_svc_start_frame(cpi);
- // Use a small empty frame instead of a real frame
- if (cpi->svc.encode_empty_frame_state == ENCODING)
- source = &cpi->svc.empty_frame;
-#endif
if (oxcf->pass == 2) vp9_restore_layer_context(cpi);
} else if (is_one_pass_cbr_svc(cpi)) {
vp9_one_pass_cbr_svc_start_layer(cpi);
@@ -5284,19 +5278,6 @@ int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags,
if ((source = vp9_lookahead_peek(cpi->lookahead, arf_src_index)) != NULL) {
cpi->alt_ref_source = source;
-#if CONFIG_SPATIAL_SVC
- if (is_two_pass_svc(cpi) && cpi->svc.spatial_layer_id > 0) {
- int i;
- // Reference a hidden frame from a lower layer
- for (i = cpi->svc.spatial_layer_id - 1; i >= 0; --i) {
- if (oxcf->ss_enable_auto_arf[i]) {
- cpi->gld_fb_idx = cpi->svc.layer_context[i].alt_ref_idx;
- break;
- }
- }
- }
- cpi->svc.layer_context[cpi->svc.spatial_layer_id].has_alt_frame = 1;
-#endif
#if !CONFIG_REALTIME_ONLY
if ((oxcf->mode != REALTIME) && (oxcf->arnr_max_frames > 0) &&
(oxcf->arnr_strength > 0)) {
diff --git a/vp9/encoder/vp9_lookahead.h b/vp9/encoder/vp9_lookahead.h
index 88be0ffcd..995588386 100644
--- a/vp9/encoder/vp9_lookahead.h
+++ b/vp9/encoder/vp9_lookahead.h
@@ -15,10 +15,6 @@
#include "vpx/vpx_encoder.h"
#include "vpx/vpx_integer.h"
-#if CONFIG_SPATIAL_SVC
-#include "vpx/vp8cx.h"
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/vp9/encoder/vp9_svc_layercontext.c b/vp9/encoder/vp9_svc_layercontext.c
index aaacbcbcc..0fc21f000 100644
--- a/vp9/encoder/vp9_svc_layercontext.c
+++ b/vp9/encoder/vp9_svc_layercontext.c
@@ -711,120 +711,6 @@ int vp9_one_pass_cbr_svc_start_layer(VP9_COMP *const cpi) {
return 0;
}
-#if CONFIG_SPATIAL_SVC
-#define SMALL_FRAME_FB_IDX 7
-
-int vp9_svc_start_frame(VP9_COMP *const cpi) {
- int width = 0, height = 0;
- LAYER_CONTEXT *lc;
- struct lookahead_entry *buf;
- int count = 1 << (cpi->svc.number_temporal_layers - 1);
-
- cpi->svc.spatial_layer_id = cpi->svc.spatial_layer_to_encode;
- lc = &cpi->svc.layer_context[cpi->svc.spatial_layer_id];
-
- cpi->svc.temporal_layer_id = 0;
- while ((lc->current_video_frame_in_layer % count) != 0) {
- ++cpi->svc.temporal_layer_id;
- count >>= 1;
- }
-
- cpi->ref_frame_flags = VP9_ALT_FLAG | VP9_GOLD_FLAG | VP9_LAST_FLAG;
-
- cpi->lst_fb_idx = cpi->svc.spatial_layer_id;
-
- if (cpi->svc.spatial_layer_id == 0)
- cpi->gld_fb_idx =
- (lc->gold_ref_idx >= 0) ? lc->gold_ref_idx : cpi->lst_fb_idx;
- else
- cpi->gld_fb_idx = cpi->svc.spatial_layer_id - 1;
-
- if (lc->current_video_frame_in_layer == 0) {
- if (cpi->svc.spatial_layer_id >= 2) {
- cpi->alt_fb_idx = cpi->svc.spatial_layer_id - 2;
- } else {
- cpi->alt_fb_idx = cpi->lst_fb_idx;
- cpi->ref_frame_flags &= (~VP9_LAST_FLAG & ~VP9_ALT_FLAG);
- }
- } else {
- if (cpi->oxcf.ss_enable_auto_arf[cpi->svc.spatial_layer_id]) {
- cpi->alt_fb_idx = lc->alt_ref_idx;
- if (!lc->has_alt_frame) cpi->ref_frame_flags &= (~VP9_ALT_FLAG);
- } else {
- // Find a proper alt_fb_idx for layers that don't have alt ref frame
- if (cpi->svc.spatial_layer_id == 0) {
- cpi->alt_fb_idx = cpi->lst_fb_idx;
- } else {
- LAYER_CONTEXT *lc_lower =
- &cpi->svc.layer_context[cpi->svc.spatial_layer_id - 1];
-
- if (cpi->oxcf.ss_enable_auto_arf[cpi->svc.spatial_layer_id - 1] &&
- lc_lower->alt_ref_source != NULL)
- cpi->alt_fb_idx = lc_lower->alt_ref_idx;
- else if (cpi->svc.spatial_layer_id >= 2)
- cpi->alt_fb_idx = cpi->svc.spatial_layer_id - 2;
- else
- cpi->alt_fb_idx = cpi->lst_fb_idx;
- }
- }
- }
-
- get_layer_resolution(cpi->oxcf.width, cpi->oxcf.height,
- lc->scaling_factor_num, lc->scaling_factor_den, &width,
- &height);
-
- // Workaround for multiple frame contexts. In some frames we can't use prev_mi
- // since its previous frame could be changed during decoding time. The idea is
- // we put a empty invisible frame in front of them, then we will not use
- // prev_mi when encoding these frames.
-
- buf = vp9_lookahead_peek(cpi->lookahead, 0);
- if (cpi->oxcf.error_resilient_mode == 0 && cpi->oxcf.pass == 2 &&
- cpi->svc.encode_empty_frame_state == NEED_TO_ENCODE &&
- lc->rc.frames_to_key != 0 &&
- !(buf != NULL && (buf->flags & VPX_EFLAG_FORCE_KF))) {
- if ((cpi->svc.number_temporal_layers > 1 &&
- cpi->svc.temporal_layer_id < cpi->svc.number_temporal_layers - 1) ||
- (cpi->svc.number_spatial_layers > 1 &&
- cpi->svc.spatial_layer_id == 0)) {
- struct lookahead_entry *buf = vp9_lookahead_peek(cpi->lookahead, 0);
-
- if (buf != NULL) {
- cpi->svc.empty_frame.ts_start = buf->ts_start;
- cpi->svc.empty_frame.ts_end = buf->ts_end;
- cpi->svc.encode_empty_frame_state = ENCODING;
- cpi->common.show_frame = 0;
- cpi->ref_frame_flags = 0;
- cpi->common.frame_type = INTER_FRAME;
- cpi->lst_fb_idx = cpi->gld_fb_idx = cpi->alt_fb_idx =
- SMALL_FRAME_FB_IDX;
-
- if (cpi->svc.encode_intra_empty_frame != 0) cpi->common.intra_only = 1;
-
- width = SMALL_FRAME_WIDTH;
- height = SMALL_FRAME_HEIGHT;
- }
- }
- }
-
- cpi->oxcf.worst_allowed_q = vp9_quantizer_to_qindex(lc->max_q);
- cpi->oxcf.best_allowed_q = vp9_quantizer_to_qindex(lc->min_q);
-
- vp9_change_config(cpi, &cpi->oxcf);
-
- if (vp9_set_size_literal(cpi, width, height) != 0)
- return VPX_CODEC_INVALID_PARAM;
-
- vp9_set_high_precision_mv(cpi, 1);
-
- cpi->alt_ref_source = get_layer_context(cpi)->alt_ref_source;
-
- return 0;
-}
-
-#undef SMALL_FRAME_FB_IDX
-#endif // CONFIG_SPATIAL_SVC
-
struct lookahead_entry *vp9_svc_lookahead_pop(VP9_COMP *const cpi,
struct lookahead_ctx *ctx,
int drain) {
diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c
index 510701d18..215a42a23 100644
--- a/vp9/vp9_cx_iface.c
+++ b/vp9/vp9_cx_iface.c
@@ -237,22 +237,6 @@ static vpx_codec_err_t validate_config(vpx_codec_alg_priv_t *ctx,
ERROR("ts_rate_decimator factors are not powers of 2");
}
-#if CONFIG_SPATIAL_SVC
-
- if ((cfg->ss_number_layers > 1 || cfg->ts_number_layers > 1) &&
- cfg->g_pass == VPX_RC_LAST_PASS) {
- unsigned int i, alt_ref_sum = 0;
- for (i = 0; i < cfg->ss_number_layers; ++i) {
- if (cfg->ss_enable_auto_alt_ref[i]) ++alt_ref_sum;
- }
- if (alt_ref_sum > REF_FRAMES - cfg->ss_number_layers)
- ERROR("Not enough ref buffers for svc alt ref frames");
- if (cfg->ss_number_layers * cfg->ts_number_layers > 3 &&
- cfg->g_error_resilient == 0)
- ERROR("Multiple frame context are not supported for more than 3 layers");
- }
-#endif
-
// VP9 does not support a lower bound on the keyframe interval in
// automatic keyframe placement mode.
if (cfg->kf_mode != VPX_KF_DISABLED && cfg->kf_min_dist != cfg->kf_max_dist &&
@@ -589,9 +573,6 @@ static vpx_codec_err_t set_encoder_config(
oxcf->motion_vector_unit_test = extra_cfg->motion_vector_unit_test;
for (sl = 0; sl < oxcf->ss_number_layers; ++sl) {
-#if CONFIG_SPATIAL_SVC
- oxcf->ss_enable_auto_arf[sl] = cfg->ss_enable_auto_alt_ref[sl];
-#endif
for (tl = 0; tl < oxcf->ts_number_layers; ++tl) {
oxcf->layer_target_bitrate[sl * oxcf->ts_number_layers + tl] =
1000 * cfg->layer_target_bitrate[sl * oxcf->ts_number_layers + tl];
@@ -599,9 +580,6 @@ static vpx_codec_err_t set_encoder_config(
}
if (oxcf->ss_number_layers == 1 && oxcf->pass != 0) {
oxcf->ss_target_bitrate[0] = (int)oxcf->target_bandwidth;
-#if CONFIG_SPATIAL_SVC
- oxcf->ss_enable_auto_arf[0] = extra_cfg->enable_auto_alt_ref;
-#endif
}
if (oxcf->ts_number_layers > 1) {
for (tl = 0; tl < VPX_TS_MAX_LAYERS; ++tl) {
@@ -1215,14 +1193,6 @@ static vpx_codec_err_t encoder_encode(vpx_codec_alg_priv_t *ctx,
if (size || (cpi->use_svc && cpi->svc.skip_enhancement_layer)) {
vpx_codec_cx_pkt_t pkt;
-#if CONFIG_SPATIAL_SVC
- if (cpi->use_svc)
- cpi->svc
- .layer_context[cpi->svc.spatial_layer_id *
- cpi->svc.number_temporal_layers]
- .layer_size += size;
-#endif
-
// Pack invisible frames with the next visible frame
if (!cpi->common.show_frame ||
(cpi->use_svc &&
@@ -1291,27 +1261,6 @@ static vpx_codec_err_t encoder_encode(vpx_codec_alg_priv_t *ctx,
cx_data += size;
cx_data_sz -= size;
-#if CONFIG_SPATIAL_SVC && defined(VPX_TEST_SPATIAL_SVC)
- if (cpi->use_svc && !ctx->output_cx_pkt_cb.output_cx_pkt) {
- vpx_codec_cx_pkt_t pkt_sizes, pkt_psnr;
- int sl;
- vp9_zero(pkt_sizes);
- vp9_zero(pkt_psnr);
- pkt_sizes.kind = VPX_CODEC_SPATIAL_SVC_LAYER_SIZES;
- pkt_psnr.kind = VPX_CODEC_SPATIAL_SVC_LAYER_PSNR;
- for (sl = 0; sl < cpi->svc.number_spatial_layers; ++sl) {
- LAYER_CONTEXT *lc =
- &cpi->svc.layer_context[sl * cpi->svc.number_temporal_layers];
- pkt_sizes.data.layer_sizes[sl] = lc->layer_size;
- pkt_psnr.data.layer_psnr[sl] = lc->psnr_pkt;
- lc->layer_size = 0;
- }
-
- vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt_sizes);
-
- vpx_codec_pkt_list_add(&ctx->pkt_list.head, &pkt_psnr);
- }
-#endif
if (is_one_pass_cbr_svc(cpi) &&
(cpi->svc.spatial_layer_id == cpi->svc.number_spatial_layers - 1)) {
// Encoded all spatial layers; exit loop.