1*abb65b4bSAndroid Build Coastguard Worker /* 2*abb65b4bSAndroid Build Coastguard Worker * Copyright (c) 2022 Samsung Electronics Co., Ltd. 3*abb65b4bSAndroid Build Coastguard Worker * All Rights Reserved. 4*abb65b4bSAndroid Build Coastguard Worker * 5*abb65b4bSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 6*abb65b4bSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions are met: 7*abb65b4bSAndroid Build Coastguard Worker * 8*abb65b4bSAndroid Build Coastguard Worker * - Redistributions of source code must retain the above copyright notice, 9*abb65b4bSAndroid Build Coastguard Worker * this list of conditions and the following disclaimer. 10*abb65b4bSAndroid Build Coastguard Worker * 11*abb65b4bSAndroid Build Coastguard Worker * - Redistributions in binary form must reproduce the above copyright notice, 12*abb65b4bSAndroid Build Coastguard Worker * this list of conditions and the following disclaimer in the documentation 13*abb65b4bSAndroid Build Coastguard Worker * and/or other materials provided with the distribution. 14*abb65b4bSAndroid Build Coastguard Worker * 15*abb65b4bSAndroid Build Coastguard Worker * - Neither the name of the copyright owner, nor the names of its contributors 16*abb65b4bSAndroid Build Coastguard Worker * may be used to endorse or promote products derived from this software 17*abb65b4bSAndroid Build Coastguard Worker * without specific prior written permission. 18*abb65b4bSAndroid Build Coastguard Worker * 19*abb65b4bSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20*abb65b4bSAndroid Build Coastguard Worker * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21*abb65b4bSAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22*abb65b4bSAndroid Build Coastguard Worker * ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23*abb65b4bSAndroid Build Coastguard Worker * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24*abb65b4bSAndroid Build Coastguard Worker * CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25*abb65b4bSAndroid Build Coastguard Worker * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26*abb65b4bSAndroid Build Coastguard Worker * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27*abb65b4bSAndroid Build Coastguard Worker * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28*abb65b4bSAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29*abb65b4bSAndroid Build Coastguard Worker * POSSIBILITY OF SUCH DAMAGE. 30*abb65b4bSAndroid Build Coastguard Worker */ 31*abb65b4bSAndroid Build Coastguard Worker 32*abb65b4bSAndroid Build Coastguard Worker #ifndef _OAPV_RC_H_ 33*abb65b4bSAndroid Build Coastguard Worker #define _OAPV_RC_H_ 34*abb65b4bSAndroid Build Coastguard Worker 35*abb65b4bSAndroid Build Coastguard Worker #include "oapv_def.h" 36*abb65b4bSAndroid Build Coastguard Worker #include <math.h> 37*abb65b4bSAndroid Build Coastguard Worker 38*abb65b4bSAndroid Build Coastguard Worker #define OAPV_RC_ALPHA (6.7542) 39*abb65b4bSAndroid Build Coastguard Worker #define OAPV_RC_BETA (1.2517) 40*abb65b4bSAndroid Build Coastguard Worker #define OAPV_RC_QP_OFFSET 12 41*abb65b4bSAndroid Build Coastguard Worker 42*abb65b4bSAndroid Build Coastguard Worker int oapve_rc_get_tile_cost(oapve_ctx_t* ctx, oapve_core_t* core, oapve_tile_t* tile); 43*abb65b4bSAndroid Build Coastguard Worker double oapve_rc_estimate_pic_lambda(oapve_ctx_t* ctx, double cost); 44*abb65b4bSAndroid Build Coastguard Worker int oapve_rc_estimate_pic_qp(double lambda); 45*abb65b4bSAndroid Build Coastguard Worker void oapve_rc_get_qp(oapve_ctx_t* ctx, oapve_tile_t* tile, int frame_qp, int* qp); 46*abb65b4bSAndroid Build Coastguard Worker void oapve_rc_update_after_pic(oapve_ctx_t* ctx, double cost); 47*abb65b4bSAndroid Build Coastguard Worker int oapve_rc_get_tile_cost_thread(oapve_ctx_t* ctx, u64* sum); 48*abb65b4bSAndroid Build Coastguard Worker 49*abb65b4bSAndroid Build Coastguard Worker #endif