"L. Spiro Engine"
|
00001 /******************************************************************** 00002 * * 00003 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 00004 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 00005 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 00006 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 00007 * * 00008 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 00009 * by the Xiph.Org Foundation http://www.xiph.org/ * 00010 * * 00011 ******************************************************************** 00012 00013 function: bitrate tracking and management 00014 last mod: $Id: bitrate.h 13293 2007-07-24 00:09:47Z xiphmont $ 00015 00016 ********************************************************************/ 00017 00018 00019 #ifndef __LSS_VORBISBITRATE_H__ 00020 #define __LSS_VORBISBITRATE_H__ 00021 00022 #include "../LSSSoundLib.h" 00023 #include "LSSOgg.h" 00024 #include "LSSVorbisCodec.h" 00025 00026 namespace lss { 00027 00034 class CVorbisBitrate { 00035 public : 00036 // == Types. 00040 typedef struct bitrate_manager_state { 00041 LSINT32 managed; 00042 00043 LSINT32 avg_reservoir; 00044 LSINT32 minmax_reservoir; 00045 LSINT32 avg_bitsper; 00046 LSINT32 min_bitsper; 00047 LSINT32 max_bitsper; 00048 00049 LSINT32 short_per_long; 00050 LSDOUBLE avgfloat; 00051 00052 CVorbisCodec::vorbis_block * vb; 00053 LSINT32 choice; 00054 } * LPbitrate_manager_state, * const LPCbitrate_manager_state; 00055 00059 typedef struct bitrate_manager_info { 00060 LSINT32 avg_rate; 00061 LSINT32 min_rate; 00062 LSINT32 max_rate; 00063 LSINT32 reservoir_bits; 00064 LSDOUBLE reservoir_bias; 00065 00066 LSDOUBLE slew_damp; 00067 00068 } * LPbitrate_manager_info, * const LPCbitrate_manager_info; 00069 00070 00071 // == Functions. 00078 static LSVOID vorbis_bitrate_init( CVorbisCodec::vorbis_info * _pviVi, bitrate_manager_state * _pbmsBs ); 00079 00085 static LSVOID vorbis_bitrate_clear( bitrate_manager_state * _pbmsBs ); 00086 00093 static LSINT32 vorbis_bitrate_managed( CVorbisCodec::vorbis_block * _pvbVb ); 00094 00101 static LSINT32 vorbis_bitrate_addblock( CVorbisCodec::vorbis_block * _pvbVb ); 00102 00110 static LSINT32 vorbis_bitrate_flushpacket( CVorbisCodec::vorbis_dsp_state * _pvdsVd, COgg::ogg_packet * _popOp ); 00111 00112 }; 00113 00114 } // namespace lss 00115 00116 #endif // __LSS_VORBISBITRATE_H__ 00117