-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrate_control.h
103 lines (90 loc) · 5.13 KB
/
rate_control.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/***************************************************************************
** intoPIX SA & Fraunhofer IIS (hereinafter the "Software Copyright **
** Holder") hold or have the right to license copyright with respect to **
** the accompanying software (hereinafter the "Software"). **
** **
** Copyright License for Evaluation and Testing **
** -------------------------------------------- **
** **
** The Software Copyright Holder hereby grants, to any implementer of **
** this ISO Standard, an irrevocable, non-exclusive, worldwide, **
** royalty-free, sub-licensable copyright licence to prepare derivative **
** works of (including translations, adaptations, alterations), the **
** Software and reproduce, display, distribute and execute the Software **
** and derivative works thereof, for the following limited purposes: (i) **
** to evaluate the Software and any derivative works thereof for **
** inclusion in its implementation of this ISO Standard, and (ii) **
** to determine whether its implementation conforms with this ISO **
** Standard. **
** **
** The Software Copyright Holder represents and warrants that, to the **
** best of its knowledge, it has the necessary copyright rights to **
** license the Software pursuant to the terms and conditions set forth in **
** this option. **
** **
** No patent licence is granted, nor is a patent licensing commitment **
** made, by implication, estoppel or otherwise. **
** **
** Disclaimer: Other than as expressly provided herein, (1) the Software **
** is provided “AS IS” WITH NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING **
** BUT NOT LIMITED TO, THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A **
** PARTICULAR PURPOSE AND NON-INFRINGMENT OF INTELLECTUAL PROPERTY RIGHTS **
** and (2) neither the Software Copyright Holder (or its affiliates) nor **
** the ISO shall be held liable in any event for any damages whatsoever **
** (including, without limitation, damages for loss of profits, business **
** interruption, loss of information, or any other pecuniary loss) **
** arising out of or related to the use of or inability to use the **
** Software.” **
** **
** RAND Copyright Licensing Commitment **
** ----------------------------------- **
** **
** IN THE EVENT YOU WISH TO INCLUDE THE SOFTWARE IN A CONFORMING **
** IMPLEMENTATION OF THIS ISO STANDARD, PLEASE BE FURTHER ADVISED THAT: **
** **
** The Software Copyright Holder agrees to grant a copyright **
** license on reasonable and non- discriminatory terms and conditions for **
** the purpose of including the Software in a conforming implementation **
** of the ISO Standard. Negotiations with regard to the license are **
** left to the parties concerned and are performed outside the ISO. **
** **
** No patent licence is granted, nor is a patent licensing commitment **
** made, by implication, estoppel or otherwise. **
***************************************************************************/
#ifndef SRC_RATE_CONTROL_H
#define SRC_RATE_CONTROL_H
#include "precinct.h"
#include "predbuffer.h"
#include "precinct_budget.h"
#include "gcli_methods.h"
typedef struct rate_control_t rate_control_t;
typedef struct ra_params_t ra_params_t;
struct ra_params_t
{
uint8_t Rl;
int budget;
int all_enabled_methods;
const uint8_t* lvl_gains;
const uint8_t* lvl_priorities;
};
typedef struct rc_results_t rc_results_t;
struct rc_results_t
{
int quantization;
int refinement;
int gcli_method;
int gcli_sb_methods[MAX_NBANDS];
precinct_budget_info_t pbinfo;
int precinct_total_bits;
int padding_bits;
int bits_consumed;
predbuffer_t* pred_residuals;
int* gtli_table_data;
int* gtli_table_gcli;
int rc_error;
};
rate_control_t* rate_control_open(const xs_config_t* xs_config, const ids_t* ids, int column);
void rate_control_init(rate_control_t* rc, int rate_bytes, int report_bytes);
int rate_control_process_precinct(rate_control_t* rc, precinct_t* precinct, rc_results_t* rc_results);
void rate_control_close(rate_control_t* rc);
#endif