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