18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#!/usr/bin/perl 28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint <<'EOD'; 38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/******************************************************************** 48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * * 58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * 68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * * 108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * 118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * by the Xiph.Org Foundation http://www.xiph.org/ * 128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels * * 138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ******************************************************************** 148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels function: lookup data; generated by lookups.pl; edit there 168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels last mod: $Id: lookups.pl 13293 2007-07-24 00:09:47Z xiphmont $ 178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels ********************************************************************/ 198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef _V_LOOKUP_DATA_H_ 218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef FLOAT_LOOKUP 238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOD 248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$cos_sz=128; 268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$invsq_sz=32; 278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$invsq2exp_min=-32; 288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$invsq2exp_max=32; 298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$fromdB_sz=35; 318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$fromdB_shift=5; 328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$fromdB2_shift=3; 338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$invsq_i_shift=10; 358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$cos_i_shift=9; 368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$delta_shift=6; 378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define COS_LOOKUP_SZ $cos_sz\n"; 398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "static float COS_LOOKUP[COS_LOOKUP_SZ+1]={\n"; 408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor($i=0;$i<=$cos_sz;){ 428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\t"; 438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for($j=0;$j<4 && $i<=$cos_sz;$j++){ 448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf "%+.13f,", cos(3.14159265358979323846*($i++)/$cos_sz) ; 458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n"; 478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "};\n\n"; 498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define INVSQ_LOOKUP_SZ $invsq_sz\n"; 518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={\n"; 528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor($i=0;$i<=$invsq_sz;){ 548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\t"; 558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for($j=0;$j<4 && $i<=$invsq_sz;$j++){ 568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my$indexmap=$i++/$invsq_sz*.5+.5; 578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf "%.12f,", 1./sqrt($indexmap); 588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n"; 608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "};\n\n"; 628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define INVSQ2EXP_LOOKUP_MIN $invsq2exp_min\n"; 648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define INVSQ2EXP_LOOKUP_MAX $invsq2exp_max\n"; 658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\\\n". 668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels " INVSQ2EXP_LOOKUP_MIN+1]={\n"; 678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor($i=$invsq2exp_min;$i<=$invsq2exp_max;){ 698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\t"; 708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for($j=0;$j<4 && $i<=$invsq2exp_max;$j++){ 718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf "%15.10g,", 2**($i++*-.5); 728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n"; 748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "};\n\n#endif\n\n"; 768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 0 to -140 dB 798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$fromdB2_sz=1<<$fromdB_shift; 808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$fromdB_gran=1<<($fromdB_shift-$fromdB2_shift); 818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define FROMdB_LOOKUP_SZ $fromdB_sz\n"; 828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define FROMdB2_LOOKUP_SZ $fromdB2_sz\n"; 838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define FROMdB_SHIFT $fromdB_shift\n"; 848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define FROMdB2_SHIFT $fromdB2_shift\n"; 858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define FROMdB2_MASK ".((1<<$fromdB_shift)-1)."\n"; 868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={\n"; 888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor($i=0;$i<$fromdB_sz;){ 908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\t"; 918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for($j=0;$j<4 && $i<$fromdB_sz;$j++){ 928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf "%15.10g,", 10**(.05*(-$fromdB_gran*$i++)); 938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n"; 958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "};\n\n"; 978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={\n"; 998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor($i=0;$i<$fromdB2_sz;){ 1018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\t"; 1028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for($j=0;$j<4 && $i<$fromdB_sz;$j++){ 1038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf "%15.10g,", 10**(.05*(-$fromdB_gran/$fromdB2_sz*(.5+$i++))); 1048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 1058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n"; 1068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 1078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "};\n\n#ifdef INT_LOOKUP\n\n"; 1088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$iisz=0x10000>>$invsq_i_shift; 1118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define INVSQ_LOOKUP_I_SHIFT $invsq_i_shift\n"; 1128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define INVSQ_LOOKUP_I_MASK ".(0x0ffff>>(16-$invsq_i_shift))."\n"; 1138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "static long INVSQ_LOOKUP_I[$iisz+1]={\n"; 1148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor($i=0;$i<=$iisz;){ 1158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\t"; 1168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for($j=0;$j<4 && $i<=$iisz;$j++){ 1178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels my$indexmap=$i++/$iisz*.5+.5; 1188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf "%8d,", int(1./sqrt($indexmap)*65536.+.5); 1198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 1208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n"; 1218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 1228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "};\n\n"; 1238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$cisz=0x10000>>$cos_i_shift; 1258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define COS_LOOKUP_I_SHIFT $cos_i_shift\n"; 1268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define COS_LOOKUP_I_MASK ".(0x0ffff>>(16-$cos_i_shift))."\n"; 1278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#define COS_LOOKUP_I_SZ $cisz\n"; 1288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={\n"; 1298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor($i=0;$i<=$cisz;){ 1318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\t"; 1328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels for($j=0;$j<4 && $i<=$cisz;$j++){ 1338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels printf "%8d,", int(cos(3.14159265358979323846*($i++)/$cos_sz)*16384.+.5) ; 1348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels } 1358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels print "\n"; 1368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} 1378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "};\n\n"; 1388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprint "#endif\n\n#endif\n"; 1418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 1428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 143