ref: 0ea4e229a7e79ce85dea84e5c3762b314a1763cf
parent: 7255ff9b85dcf06ee2f522b57389cae8f55f0afd
author: Marco Paniconi <marpan@google.com>
date: Mon Apr 9 05:41:47 EDT 2018
vp9-svc: Make constrained_layer_drop default for svc. Switch the order of constrained and layer drop mode, and keep constrained_layer_drop as the default. Update the svc datarate tests. Change-Id: I764270f7b4964b87b0cd3da6c2f96a628f212a30
--- a/test/svc_datarate_test.cc
+++ b/test/svc_datarate_test.cc
@@ -121,7 +121,7 @@
superframe_count_ = -1;
key_frame_spacing_ = 9999;
num_nonref_frames_ = 0;
- constrained_framedrop_ = 0;
+ layer_framedrop_ = 0;
}
virtual void BeginPassHook(unsigned int /*pass*/) {}
@@ -205,9 +205,9 @@
encoder->Control(VP8E_SET_STATIC_THRESHOLD, 1);
encoder->Control(VP9E_SET_TUNE_CONTENT, tune_content_);
- if (constrained_framedrop_) {
+ if (layer_framedrop_) {
vpx_svc_frame_drop_t svc_drop_frame;
- svc_drop_frame.framedrop_mode = CONSTRAINED_LAYER_DROP;
+ svc_drop_frame.framedrop_mode = LAYER_DROP;
for (i = 0; i < number_spatial_layers_; i++)
svc_drop_frame.framedrop_thresh[i] = 30;
encoder->Control(VP9E_SET_SVC_FRAME_DROP_LAYER, &svc_drop_frame);
@@ -372,7 +372,7 @@
ASSERT_EQ(count, num_layers_encoded);
// In the constrained frame drop mode, if a given spatial is dropped all
// upper layers must be dropped too.
- if (constrained_framedrop_) {
+ if (!layer_framedrop_) {
for (int sl = 0; sl < number_spatial_layers_; ++sl) {
if (!pkt->data.frame.spatial_layer_encoded[sl]) {
// Check that all upper layers are dropped.
@@ -467,7 +467,7 @@
int superframe_count_;
int key_frame_spacing_;
unsigned int num_nonref_frames_;
- int constrained_framedrop_;
+ int layer_framedrop_;
};
// Check basic rate targeting for 1 pass CBR SVC: 2 spatial layers and 1
@@ -699,12 +699,12 @@
::libvpx_test::Y4mVideoSource video("niklas_1280_720_30.y4m", 0, 60);
top_sl_width_ = 1280;
top_sl_height_ = 720;
- constrained_framedrop_ = 0;
+ layer_framedrop_ = 0;
for (int k = 0; k < 2; k++) {
for (int i = 200; i <= 600; i += 200) {
cfg_.rc_target_bitrate = i;
ResetModel();
- constrained_framedrop_ = k;
+ layer_framedrop_ = k;
AssignLayerBitrates(&cfg_, &svc_params_, cfg_.ss_number_layers,
cfg_.ts_number_layers, cfg_.temporal_layering_mode,
layer_target_avg_bandwidth_, bits_in_buffer_model_);
@@ -1000,12 +1000,12 @@
::libvpx_test::Y4mVideoSource video("niklas_1280_720_30.y4m", 0, 60);
top_sl_width_ = 1280;
top_sl_height_ = 720;
- constrained_framedrop_ = 0;
+ layer_framedrop_ = 0;
for (int k = 0; k < 2; k++) {
for (int i = 200; i <= 600; i += 200) {
cfg_.rc_target_bitrate = i;
ResetModel();
- constrained_framedrop_ = k;
+ layer_framedrop_ = k;
AssignLayerBitrates(&cfg_, &svc_params_, cfg_.ss_number_layers,
cfg_.ts_number_layers, cfg_.temporal_layering_mode,
layer_target_avg_bandwidth_, bits_in_buffer_model_);
--- a/vp9/encoder/vp9_svc_layercontext.c
+++ b/vp9/encoder/vp9_svc_layercontext.c
@@ -39,7 +39,7 @@
svc->non_reference_frame = 0;
svc->skip_enhancement_layer = 0;
svc->disable_inter_layer_pred = INTER_LAYER_PRED_ON;
- svc->framedrop_mode = LAYER_DROP;
+ svc->framedrop_mode = CONSTRAINED_LAYER_DROP;
for (i = 0; i < REF_FRAMES; ++i) svc->ref_frame_index[i] = -1;
for (sl = 0; sl < oxcf->ss_number_layers; ++sl) {
--- a/vpx/vp8cx.h
+++ b/vpx/vp8cx.h
@@ -769,9 +769,9 @@
*
*/
typedef enum {
- LAYER_DROP, /**< Any spatial layer can drop. */
- CONSTRAINED_LAYER_DROP
+ CONSTRAINED_LAYER_DROP,
/**< Upper layers are constrained to drop if current layer drops. */
+ LAYER_DROP, /**< Any spatial layer can drop. */
} SVC_LAYER_DROP_MODE;
/*!\brief vp9 svc frame dropping parameters.