"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-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