"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSSoundLib/Src/Ogg/LSSVorbisFloor1.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-2009             *
00009  * by the Xiph.Org Foundation http://www.xiph.org/                  *
00010  *                                                                  *
00011  ********************************************************************
00012 
00013  function: floor backend 1 implementation
00014  last mod: $Id: floor1.c 17555 2010-10-21 18:14:51Z tterribe $
00015 
00016  ********************************************************************/
00017 
00018 
00019 #ifndef __LSS_VORBISFLOOR1_H__
00020 #define __LSS_VORBISFLOOR1_H__
00021 
00022 #include "../LSSSoundLib.h"
00023 #include "LSSOgg.h"
00024 #include "LSSVorbisBackends.h"
00025 #include "LSSVorbisCodec.h"
00026 #include "LSSVorbisStructs.h"
00027 
00028 namespace lss {
00029 
00036         class CVorbisFloor1 {
00037         public :
00038                 // == Members.
00042                 static const CVorbisBackends::vorbis_func_floor floor1_exportbundle;
00043 
00044         protected :
00045                 // == Types.
00049                 typedef struct lsfit_acc {
00050                         LSINT32                                                                         x0;
00051                         LSINT32                                                                         x1;
00052 
00053                         LSINT32                                                                         xa;
00054                         LSINT32                                                                         ya;
00055                         LSINT32                                                                         x2a;
00056                         LSINT32                                                                         y2a;
00057                         LSINT32                                                                         xya;
00058                         LSINT32                                                                         an;
00059 
00060                         LSINT32                                                                         xb;
00061                         LSINT32                                                                         yb;
00062                         LSINT32                                                                         x2b;
00063                         LSINT32                                                                         y2b;
00064                         LSINT32                                                                         xyb;
00065                         LSINT32                                                                         bn;
00066                 } * LPlsfit_acc, * const LPClsfit_acc;
00067 
00068 
00069                 // == Functions.
00075                 static LSVOID                                                                   floor1_free_info( CVorbisStructs::vorbis_info_floor * _pvifI );
00076 
00082                 static LSVOID                                                                   floor1_free_look( CVorbisStructs::vorbis_look_floor * _pvlfI );
00083 
00091                 static LSVOID                                                                   floor1_pack( CVorbisStructs::vorbis_info_floor * _pvifI, COgg::oggpack_buffer * _pobOpb );
00092 
00100                 static CVorbisStructs::vorbis_info_floor *              floor1_unpack( CVorbisCodec::vorbis_info * _pviVi, COgg::oggpack_buffer * _pobOpb );
00101 
00109                 static CVorbisStructs::vorbis_look_floor *              floor1_look( CVorbisCodec::vorbis_dsp_state * _pvdsVd, CVorbisStructs::vorbis_info_floor * _pvifIn );
00110 
00118                 static LSVOID *                                                                 floor1_inverse1( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_floor * _pvlfIn );
00119 
00129                 static LSINT32                                                                  floor1_inverse2( CVorbisCodec::vorbis_block * _pvbVb, CVorbisStructs::vorbis_look_floor * _pvlfIn, LSVOID * _pvMemo, LSFLOAT * _pfOut );
00130 
00131         protected :
00138                 static LSINT32                                                                  ilog2( LSUINT32 _ui32V );
00139 
00148                 static LSINT32 LSE_CCALL                                                icomp( LSVOID * _pvContext, const LSVOID * _pvA, const LSVOID * _pvB );
00149 
00156                 static LSINT32                                                                  ilog( LSUINT32 _ui32V );
00157 
00168                 static LSINT32                                                                  render_point( LSINT32 _i32X0, LSINT32 _i32X1, LSINT32 _i32Y0, LSINT32 _i32Y1, LSINT32 _i32X );
00169 
00180                 static LSVOID                                                                   render_line( LSINT32 _i32N, LSINT32 _i32X0, LSINT32 _i32X1, LSINT32 _i32Y0, LSINT32 _i32Y1, LSFLOAT * _pfD );
00181         };
00182 
00183 }       // namespace lss
00184 
00185 #endif  // __LSS_VORBISFLOOR1_H__
00186 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator