"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSSoundLib/Src/Ogg/LSSVorbisRes0.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-2010             *
00009  * by the Xiph.Org Foundation http://www.xiph.org/                  *
00010  *                                                                  *
00011  ********************************************************************
00012 
00013  function: residue backend 0, 1 and 2 implementation
00014  last mod: $Id: res0.c 17556 2010-10-21 18:25:19Z tterribe $
00015 
00016  ********************************************************************/
00017 
00018 
00019 #ifndef __LSS_VORBISRES0_H__
00020 #define __LSS_VORBISRES0_H__
00021 
00022 #include "../LSSSoundLib.h"
00023 #include "LSSVorbisBackends.h"
00024 #include "LSSVorbisCodeBook.h"
00025 
00026 namespace lss {
00027 
00034         class CVorbisRes0 {
00035         public :
00036                 // == Members.
00040                 static const CVorbisBackends::vorbis_func_residue       residue0_exportbundle;
00041 
00045                 static const CVorbisBackends::vorbis_func_residue       residue1_exportbundle;
00046 
00050                 static const CVorbisBackends::vorbis_func_residue       residue2_exportbundle;
00051 
00052         protected :
00053                 // == Types.
00057                 typedef struct vorbis_look_residue0 {
00058                         CVorbisBackends::vorbis_info_residue0 *                 info;
00059 
00060                         LSINT32                                                                                 parts;
00061                         LSINT32                                                                                 stages;
00062                         CVorbisCodeBook::codebook *                                             fullbooks;
00063                         CVorbisCodeBook::codebook *                                             phrasebook;
00064                         CVorbisCodeBook::codebook ***                                   partbooks;
00065 
00066                         LSINT32                                                                                 partvals;
00067                         LSINT32 **                                                                              decodemap;
00068 
00069                         LSINT32                                                                                 postbits;
00070                         LSINT32                                                                                 phrasebits;
00071                         LSINT32                                                                                 frames;
00072                 } * LPvorbis_look_residue0, * LPCvorbis_look_residue0;
00073                 
00074 
00075                 // == Functions.
00081                 static LSVOID                                                                           res0_free_info( CVorbisStructs::vorbis_info_residue * _pvirI );
00082 
00088                 static LSVOID                                                                           res0_free_look( CVorbisStructs::vorbis_look_residue * _pvlrI );
00089 
00096                 static LSVOID                                                                           res0_pack( CVorbisStructs::vorbis_info_residue * _pvirVr, COgg::oggpack_buffer * _pobOpb );
00097 
00105                 static CVorbisStructs::vorbis_info_residue *            res0_unpack( CVorbisCodec::vorbis_info * _pviVi, COgg::oggpack_buffer * _pobOpb );
00106 
00114                 static CVorbisStructs::vorbis_look_residue *            res0_look( CVorbisCodec::vorbis_dsp_state * _pvdsVd,
00115                         CVorbisStructs::vorbis_info_residue * _pvirVr );
00116 
00127                 static LSINT32                                                                          res0_inverse( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl, LSFLOAT ** _ppi32In, LSINT32 * _pi32NonZero, LSINT32 _i32Ch );
00128 
00139                 static LSINT32 **                                                                       res1_class( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00140                         LSINT32 ** _ppi32In, LSINT32 * _pi32NonZero, LSINT32 _i32Ch );
00141 
00155                 static LSINT32                                                                          res1_forward( COgg::oggpack_buffer * _pobOpb, CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00156                         LSINT32 ** _ppi32In, LSINT32 * _pi32NonZero, LSINT32 _i32Ch, LSINT32 ** _ppi32PartWord, LSINT32 _i32SubMap );
00157 
00168                 static LSINT32                                                                          res1_inverse( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00169                         LSFLOAT ** _ppi32In, LSINT32 * _pi32NonZero, LSINT32 _i32Ch );
00170 
00181                 static LSINT32 **                                                                       res2_class( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00182                         LSINT32 ** _ppi32In, LSINT32 * _pi32NonZero, LSINT32 _i32Ch );
00183 
00197                 static LSINT32                                                                          res2_forward( COgg::oggpack_buffer * _pbOpb,
00198                         CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00199                         LSINT32 ** _ppi32In, LSINT32 * _pi32NonZero, LSINT32 _i32Ch, LSINT32 ** i32PartWord, LSINT32 i32SubMap );
00200 
00211                 static LSINT32                                                                          res2_inverse( CVorbisCodec::vorbis_block *_pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00212                         LSFLOAT **_ppi32In, LSINT32 * _pi32NonZero, LSINT32 _i32Ch );
00213 
00214 
00215         protected :
00222                 static LSINT32                                                                          ilog( LSUINT32 _ui32V );
00223 
00230                 static LSINT32                                                                          icount( LSUINT32 _ui32V );
00231 
00241                 static LSINT32 **                                                                       _01class( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00242                         LSINT32 ** _ppi32In, LSINT32 _i32Ch );
00243 
00254                 static LSINT32                                                                          _encodepart( COgg::oggpack_buffer * _pobOpb, LSINT32 * _pi32Vec, LSINT32 _i32N,
00255                         CVorbisCodeBook::codebook * _pcbBook, LSINT32 * _pi32Acc );
00256 
00270                 static LSINT32                                                                          _01forward( COgg::oggpack_buffer * _pobOpb, CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00271                         LSINT32 ** _ppi32In, LSINT32 _i32Ch,
00272                         LSINT32 ** _ppi32PartWord,
00273                         LSINT32 (* _pfEncode)( COgg::oggpack_buffer *, LSINT32 *, LSINT32, CVorbisCodeBook::codebook *, LSINT32 * ),
00274                         LSINT32 _i32SubMap );
00275 
00283                 static LSINT32                                                                          local_book_besterror( CVorbisCodeBook::codebook * _pcbBook, LSINT32 * _pi32A );
00284 
00295                 static LSINT32                                                                          _01inverse( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl,
00296                         LSFLOAT ** _ppi32In, LSINT32 _i32Ch,
00297                         LSINT32 (* _pfEncode)( CVorbisCodeBook::codebook *, LSFLOAT *, COgg::oggpack_buffer *, LSINT32 ) );
00298 
00308                 static LSINT32 **                                                                       _2class( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_residue * _pvlrVl, LSINT32 ** _ppi32In,
00309                         LSINT32 _i32Ch );
00310         };
00311 
00312 }       // namespace lss
00313 
00314 #endif  // __LSS_VORBISRES0_H__
00315 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator