1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2018 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker #ifndef VPX_TEST_SVC_TEST_H_ 12*fb1b10abSAndroid Build Coastguard Worker #define VPX_TEST_SVC_TEST_H_ 13*fb1b10abSAndroid Build Coastguard Worker 14*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_config.h" 15*fb1b10abSAndroid Build Coastguard Worker #include "gtest/gtest.h" 16*fb1b10abSAndroid Build Coastguard Worker #include "test/codec_factory.h" 17*fb1b10abSAndroid Build Coastguard Worker #include "test/encode_test_driver.h" 18*fb1b10abSAndroid Build Coastguard Worker #include "test/i420_video_source.h" 19*fb1b10abSAndroid Build Coastguard Worker #include "test/util.h" 20*fb1b10abSAndroid Build Coastguard Worker #include "test/y4m_video_source.h" 21*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_codec.h" 22*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/bitops.h" 23*fb1b10abSAndroid Build Coastguard Worker 24*fb1b10abSAndroid Build Coastguard Worker namespace svc_test { 25*fb1b10abSAndroid Build Coastguard Worker class OnePassCbrSvc : public ::libvpx_test::EncoderTest { 26*fb1b10abSAndroid Build Coastguard Worker public: OnePassCbrSvc(const::libvpx_test::CodecFactory * codec)27*fb1b10abSAndroid Build Coastguard Worker explicit OnePassCbrSvc(const ::libvpx_test::CodecFactory *codec) 28*fb1b10abSAndroid Build Coastguard Worker : EncoderTest(codec), base_speed_setting_(0), speed_setting_(0), 29*fb1b10abSAndroid Build Coastguard Worker superframe_count_(0), temporal_layer_id_(0), number_temporal_layers_(0), 30*fb1b10abSAndroid Build Coastguard Worker number_spatial_layers_(0) { 31*fb1b10abSAndroid Build Coastguard Worker memset(&svc_params_, 0, sizeof(svc_params_)); 32*fb1b10abSAndroid Build Coastguard Worker memset(bits_in_buffer_model_, 0, 33*fb1b10abSAndroid Build Coastguard Worker sizeof(bits_in_buffer_model_[0]) * VPX_MAX_LAYERS); 34*fb1b10abSAndroid Build Coastguard Worker memset(layer_target_avg_bandwidth_, 0, 35*fb1b10abSAndroid Build Coastguard Worker sizeof(layer_target_avg_bandwidth_[0]) * VPX_MAX_LAYERS); 36*fb1b10abSAndroid Build Coastguard Worker } 37*fb1b10abSAndroid Build Coastguard Worker 38*fb1b10abSAndroid Build Coastguard Worker protected: ~OnePassCbrSvc()39*fb1b10abSAndroid Build Coastguard Worker ~OnePassCbrSvc() override {} 40*fb1b10abSAndroid Build Coastguard Worker 41*fb1b10abSAndroid Build Coastguard Worker virtual void SetConfig(const int num_temporal_layer) = 0; 42*fb1b10abSAndroid Build Coastguard Worker 43*fb1b10abSAndroid Build Coastguard Worker virtual void SetSvcConfig(const int num_spatial_layer, 44*fb1b10abSAndroid Build Coastguard Worker const int num_temporal_layer); 45*fb1b10abSAndroid Build Coastguard Worker 46*fb1b10abSAndroid Build Coastguard Worker virtual void PreEncodeFrameHookSetup(::libvpx_test::VideoSource *video, 47*fb1b10abSAndroid Build Coastguard Worker ::libvpx_test::Encoder *encoder); 48*fb1b10abSAndroid Build Coastguard Worker 49*fb1b10abSAndroid Build Coastguard Worker void PostEncodeFrameHook(::libvpx_test::Encoder *encoder) override; 50*fb1b10abSAndroid Build Coastguard Worker 51*fb1b10abSAndroid Build Coastguard Worker virtual void AssignLayerBitrates(); 52*fb1b10abSAndroid Build Coastguard Worker MismatchHook(const vpx_image_t *,const vpx_image_t *)53*fb1b10abSAndroid Build Coastguard Worker void MismatchHook(const vpx_image_t *, const vpx_image_t *) override {} 54*fb1b10abSAndroid Build Coastguard Worker 55*fb1b10abSAndroid Build Coastguard Worker vpx_svc_extra_cfg_t svc_params_; 56*fb1b10abSAndroid Build Coastguard Worker int64_t bits_in_buffer_model_[VPX_MAX_LAYERS]; 57*fb1b10abSAndroid Build Coastguard Worker int layer_target_avg_bandwidth_[VPX_MAX_LAYERS]; 58*fb1b10abSAndroid Build Coastguard Worker int base_speed_setting_; 59*fb1b10abSAndroid Build Coastguard Worker int speed_setting_; 60*fb1b10abSAndroid Build Coastguard Worker int superframe_count_; 61*fb1b10abSAndroid Build Coastguard Worker int temporal_layer_id_; 62*fb1b10abSAndroid Build Coastguard Worker int number_temporal_layers_; 63*fb1b10abSAndroid Build Coastguard Worker int number_spatial_layers_; 64*fb1b10abSAndroid Build Coastguard Worker }; 65*fb1b10abSAndroid Build Coastguard Worker } // namespace svc_test 66*fb1b10abSAndroid Build Coastguard Worker 67*fb1b10abSAndroid Build Coastguard Worker #endif // VPX_TEST_SVC_TEST_H_ 68