Chris@1: /******************************************************************** Chris@1: * * Chris@1: * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * Chris@1: * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * Chris@1: * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * Chris@1: * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * Chris@1: * * Chris@1: * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * Chris@1: * by the Xiph.Org Foundation http://www.xiph.org/ * Chris@1: * * Chris@1: ******************************************************************** Chris@1: Chris@1: function: bitrate tracking and management Chris@1: last mod: $Id: bitrate.h 13293 2007-07-24 00:09:47Z xiphmont $ Chris@1: Chris@1: ********************************************************************/ Chris@1: Chris@1: #ifndef _V_BITRATE_H_ Chris@1: #define _V_BITRATE_H_ Chris@1: Chris@1: #include "vorbis/codec.h" Chris@1: #include "codec_internal.h" Chris@1: #include "os.h" Chris@1: Chris@1: /* encode side bitrate tracking */ Chris@1: typedef struct bitrate_manager_state { Chris@1: int managed; Chris@1: Chris@1: long avg_reservoir; Chris@1: long minmax_reservoir; Chris@1: long avg_bitsper; Chris@1: long min_bitsper; Chris@1: long max_bitsper; Chris@1: Chris@1: long short_per_long; Chris@1: double avgfloat; Chris@1: Chris@1: vorbis_block *vb; Chris@1: int choice; Chris@1: } bitrate_manager_state; Chris@1: Chris@1: typedef struct bitrate_manager_info{ Chris@1: long avg_rate; Chris@1: long min_rate; Chris@1: long max_rate; Chris@1: long reservoir_bits; Chris@1: double reservoir_bias; Chris@1: Chris@1: double slew_damp; Chris@1: Chris@1: } bitrate_manager_info; Chris@1: Chris@1: extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs); Chris@1: extern void vorbis_bitrate_clear(bitrate_manager_state *bs); Chris@1: extern int vorbis_bitrate_managed(vorbis_block *vb); Chris@1: extern int vorbis_bitrate_addblock(vorbis_block *vb); Chris@1: extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op); Chris@1: Chris@1: #endif