Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/libvorbis/bitrate.h
9898 views
1
/********************************************************************
2
* *
3
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
4
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
5
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
7
* *
8
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
9
* by the Xiph.Org Foundation https://xiph.org/ *
10
* *
11
********************************************************************
12
13
function: bitrate tracking and management
14
15
********************************************************************/
16
17
#ifndef _V_BITRATE_H_
18
#define _V_BITRATE_H_
19
20
#include "vorbis/codec.h"
21
#include "codec_internal.h"
22
#include "os.h"
23
24
/* encode side bitrate tracking */
25
typedef struct bitrate_manager_state {
26
int managed;
27
28
long avg_reservoir;
29
long minmax_reservoir;
30
long avg_bitsper;
31
long min_bitsper;
32
long max_bitsper;
33
34
long short_per_long;
35
double avgfloat;
36
37
vorbis_block *vb;
38
int choice;
39
} bitrate_manager_state;
40
41
typedef struct bitrate_manager_info{
42
long avg_rate;
43
long min_rate;
44
long max_rate;
45
long reservoir_bits;
46
double reservoir_bias;
47
48
double slew_damp;
49
50
} bitrate_manager_info;
51
52
extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs);
53
extern void vorbis_bitrate_clear(bitrate_manager_state *bs);
54
extern int vorbis_bitrate_managed(vorbis_block *vb);
55
extern int vorbis_bitrate_addblock(vorbis_block *vb);
56
extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op);
57
58
#endif
59
60