"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSSoundLib/Src/Ogg/LSSVorbisBitrate.h

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 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator