annotate src/libvorbis-1.3.3/lib/lookups.pl @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 05aa0afa9217
children
rev   line source
Chris@1 1 #!/usr/bin/perl
Chris@1 2 print <<'EOD';
Chris@1 3 /********************************************************************
Chris@1 4 * *
Chris@1 5 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
Chris@1 6 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
Chris@1 7 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
Chris@1 8 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
Chris@1 9 * *
Chris@1 10 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
Chris@1 11 * by the Xiph.Org Foundation http://www.xiph.org/ *
Chris@1 12 * *
Chris@1 13 ********************************************************************
Chris@1 14
Chris@1 15 function: lookup data; generated by lookups.pl; edit there
Chris@1 16 last mod: $Id: lookups.pl 13293 2007-07-24 00:09:47Z xiphmont $
Chris@1 17
Chris@1 18 ********************************************************************/
Chris@1 19
Chris@1 20 #ifndef _V_LOOKUP_DATA_H_
Chris@1 21
Chris@1 22 #ifdef FLOAT_LOOKUP
Chris@1 23 EOD
Chris@1 24
Chris@1 25 $cos_sz=128;
Chris@1 26 $invsq_sz=32;
Chris@1 27 $invsq2exp_min=-32;
Chris@1 28 $invsq2exp_max=32;
Chris@1 29
Chris@1 30 $fromdB_sz=35;
Chris@1 31 $fromdB_shift=5;
Chris@1 32 $fromdB2_shift=3;
Chris@1 33
Chris@1 34 $invsq_i_shift=10;
Chris@1 35 $cos_i_shift=9;
Chris@1 36 $delta_shift=6;
Chris@1 37
Chris@1 38 print "#define COS_LOOKUP_SZ $cos_sz\n";
Chris@1 39 print "static float COS_LOOKUP[COS_LOOKUP_SZ+1]={\n";
Chris@1 40
Chris@1 41 for($i=0;$i<=$cos_sz;){
Chris@1 42 print "\t";
Chris@1 43 for($j=0;$j<4 && $i<=$cos_sz;$j++){
Chris@1 44 printf "%+.13f,", cos(3.14159265358979323846*($i++)/$cos_sz) ;
Chris@1 45 }
Chris@1 46 print "\n";
Chris@1 47 }
Chris@1 48 print "};\n\n";
Chris@1 49
Chris@1 50 print "#define INVSQ_LOOKUP_SZ $invsq_sz\n";
Chris@1 51 print "static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={\n";
Chris@1 52
Chris@1 53 for($i=0;$i<=$invsq_sz;){
Chris@1 54 print "\t";
Chris@1 55 for($j=0;$j<4 && $i<=$invsq_sz;$j++){
Chris@1 56 my$indexmap=$i++/$invsq_sz*.5+.5;
Chris@1 57 printf "%.12f,", 1./sqrt($indexmap);
Chris@1 58 }
Chris@1 59 print "\n";
Chris@1 60 }
Chris@1 61 print "};\n\n";
Chris@1 62
Chris@1 63 print "#define INVSQ2EXP_LOOKUP_MIN $invsq2exp_min\n";
Chris@1 64 print "#define INVSQ2EXP_LOOKUP_MAX $invsq2exp_max\n";
Chris@1 65 print "static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\\\n".
Chris@1 66 " INVSQ2EXP_LOOKUP_MIN+1]={\n";
Chris@1 67
Chris@1 68 for($i=$invsq2exp_min;$i<=$invsq2exp_max;){
Chris@1 69 print "\t";
Chris@1 70 for($j=0;$j<4 && $i<=$invsq2exp_max;$j++){
Chris@1 71 printf "%15.10g,", 2**($i++*-.5);
Chris@1 72 }
Chris@1 73 print "\n";
Chris@1 74 }
Chris@1 75 print "};\n\n#endif\n\n";
Chris@1 76
Chris@1 77
Chris@1 78 # 0 to -140 dB
Chris@1 79 $fromdB2_sz=1<<$fromdB_shift;
Chris@1 80 $fromdB_gran=1<<($fromdB_shift-$fromdB2_shift);
Chris@1 81 print "#define FROMdB_LOOKUP_SZ $fromdB_sz\n";
Chris@1 82 print "#define FROMdB2_LOOKUP_SZ $fromdB2_sz\n";
Chris@1 83 print "#define FROMdB_SHIFT $fromdB_shift\n";
Chris@1 84 print "#define FROMdB2_SHIFT $fromdB2_shift\n";
Chris@1 85 print "#define FROMdB2_MASK ".((1<<$fromdB_shift)-1)."\n";
Chris@1 86
Chris@1 87 print "static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={\n";
Chris@1 88
Chris@1 89 for($i=0;$i<$fromdB_sz;){
Chris@1 90 print "\t";
Chris@1 91 for($j=0;$j<4 && $i<$fromdB_sz;$j++){
Chris@1 92 printf "%15.10g,", 10**(.05*(-$fromdB_gran*$i++));
Chris@1 93 }
Chris@1 94 print "\n";
Chris@1 95 }
Chris@1 96 print "};\n\n";
Chris@1 97
Chris@1 98 print "static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={\n";
Chris@1 99
Chris@1 100 for($i=0;$i<$fromdB2_sz;){
Chris@1 101 print "\t";
Chris@1 102 for($j=0;$j<4 && $i<$fromdB_sz;$j++){
Chris@1 103 printf "%15.10g,", 10**(.05*(-$fromdB_gran/$fromdB2_sz*(.5+$i++)));
Chris@1 104 }
Chris@1 105 print "\n";
Chris@1 106 }
Chris@1 107 print "};\n\n#ifdef INT_LOOKUP\n\n";
Chris@1 108
Chris@1 109
Chris@1 110 $iisz=0x10000>>$invsq_i_shift;
Chris@1 111 print "#define INVSQ_LOOKUP_I_SHIFT $invsq_i_shift\n";
Chris@1 112 print "#define INVSQ_LOOKUP_I_MASK ".(0x0ffff>>(16-$invsq_i_shift))."\n";
Chris@1 113 print "static long INVSQ_LOOKUP_I[$iisz+1]={\n";
Chris@1 114 for($i=0;$i<=$iisz;){
Chris@1 115 print "\t";
Chris@1 116 for($j=0;$j<4 && $i<=$iisz;$j++){
Chris@1 117 my$indexmap=$i++/$iisz*.5+.5;
Chris@1 118 printf "%8d,", int(1./sqrt($indexmap)*65536.+.5);
Chris@1 119 }
Chris@1 120 print "\n";
Chris@1 121 }
Chris@1 122 print "};\n\n";
Chris@1 123
Chris@1 124 $cisz=0x10000>>$cos_i_shift;
Chris@1 125 print "#define COS_LOOKUP_I_SHIFT $cos_i_shift\n";
Chris@1 126 print "#define COS_LOOKUP_I_MASK ".(0x0ffff>>(16-$cos_i_shift))."\n";
Chris@1 127 print "#define COS_LOOKUP_I_SZ $cisz\n";
Chris@1 128 print "static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={\n";
Chris@1 129
Chris@1 130 for($i=0;$i<=$cisz;){
Chris@1 131 print "\t";
Chris@1 132 for($j=0;$j<4 && $i<=$cisz;$j++){
Chris@1 133 printf "%8d,", int(cos(3.14159265358979323846*($i++)/$cos_sz)*16384.+.5) ;
Chris@1 134 }
Chris@1 135 print "\n";
Chris@1 136 }
Chris@1 137 print "};\n\n";
Chris@1 138
Chris@1 139
Chris@1 140 print "#endif\n\n#endif\n";
Chris@1 141
Chris@1 142