1 |
#ifndef _RATECONTROL_H_ |
#ifndef _RATECONTROL_H_ |
2 |
#define _RATECONTROL_H_ |
#define _RATECONTROL_H_ |
3 |
|
|
|
#include "../encoder.h" |
|
4 |
#include "../portab.h" |
#include "../portab.h" |
5 |
|
|
6 |
void RateControlInit(uint32_t target_rate, uint32_t reaction_delay_factor, |
typedef struct |
7 |
uint32_t averaging_period, uint32_t buffer, |
{ |
8 |
int framerate, int max_quant, int min_quant); |
int64_t size; |
9 |
|
int32_t count; |
10 |
int RateControlGetQ(int keyframe); |
} |
11 |
|
QuantInfo; |
12 |
void RateControlUpdate(int16_t quant, int frame_size, int keyframe); |
|
13 |
|
typedef struct |
14 |
|
{ |
15 |
|
int32_t rtn_quant; |
16 |
|
int64_t frames; |
17 |
|
int64_t total_size; |
18 |
|
double framerate; |
19 |
|
int32_t target_rate; |
20 |
|
int16_t max_quant; |
21 |
|
int16_t min_quant; |
22 |
|
int64_t last_change; |
23 |
|
int64_t quant_sum; |
24 |
|
double quant_error[32]; |
25 |
|
double avg_framesize; |
26 |
|
double target_framesize; |
27 |
|
double sequence_quality; |
28 |
|
int32_t averaging_period; |
29 |
|
int32_t reaction_delay_factor; |
30 |
|
int32_t buffer; |
31 |
|
} |
32 |
|
RateControl; |
33 |
|
|
34 |
|
void RateControlInit(RateControl * rate_control, |
35 |
|
uint32_t target_rate, |
36 |
|
uint32_t reaction_delay_factor, |
37 |
|
uint32_t averaging_period, |
38 |
|
uint32_t buffer, |
39 |
|
int framerate, |
40 |
|
int max_quant, |
41 |
|
int min_quant); |
42 |
|
|
43 |
|
int RateControlGetQ(RateControl * rate_control, |
44 |
|
int keyframe); |
45 |
|
|
46 |
|
void RateControlUpdate(RateControl * rate_control, |
47 |
|
int16_t quant, |
48 |
|
int frame_size, |
49 |
|
int keyframe); |
50 |
|
|
51 |
#endif /* _RATECONTROL_H_ */ |
#endif /* _RATECONTROL_H_ */ |
|
|
|