home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2000 February / maximum-cd-2000-02.iso / Flash 4 / data1.cab / App_Files / Players / Flash_Player_Java(tm)_Edition / Sound.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-06-15  |  4.9 KB  |  513 lines

  1. import java.applet.AudioClip;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import sun.audio.AudioPlayer;
  6.  
  7. final class Sound implements AudioClip {
  8.    // $FF: renamed from: ╞Å int
  9.    private int field_0;
  10.    // $FF: renamed from: ╞É int
  11.    private int field_1;
  12.    // $FF: renamed from: ╞æ int
  13.    private int field_2;
  14.    // $FF: renamed from: ╞Æ byte[]
  15.    private byte[] field_3;
  16.    // $FF: renamed from: ╞ô int
  17.    private int field_4;
  18.    // $FF: renamed from: ╞ö int
  19.    private int field_5;
  20.    // $FF: renamed from: ╞ò boolean
  21.    private boolean field_6;
  22.    // $FF: renamed from: ╞û boolean
  23.    private boolean field_7;
  24.    // $FF: renamed from: ╞ù byte[]
  25.    private byte[] field_8;
  26.    // $FF: renamed from: ├Ç Sound
  27.    Sound field_9;
  28.    // $FF: renamed from: ╞ÿ int
  29.    int field_10;
  30.    // $FF: renamed from: ╞Ö int[]
  31.    static final int[] field_11 = new int[]{11025, 22050, 44100, 88200};
  32.    // $FF: renamed from: ╞Ü int[]
  33.    static final int[] field_12 = new int[]{3, 2, 1, 0};
  34.    // $FF: renamed from: ╞¢ SoundMixer
  35.    private SoundMixer field_13;
  36.    // $FF: renamed from: ╞£ byte[]
  37.    private static byte[] field_14;
  38.    // $FF: renamed from: ╞¥ int
  39.    int field_15;
  40.    // $FF: renamed from: ╞₧ int
  41.    int field_16;
  42.    // $FF: renamed from: ╞ƒ int
  43.    int field_17;
  44.    // $FF: renamed from: ╞á int
  45.    int field_18;
  46.    // $FF: renamed from: ╞í int[]
  47.    int[] field_19 = new int[2];
  48.    // $FF: renamed from: ─⌐ int[]
  49.    int[] field_20 = new int[2];
  50.    // $FF: renamed from: ╞ó int[]
  51.    static final int[] field_21 = new int[]{-1, 2};
  52.    // $FF: renamed from: ╞ú int[]
  53.    static final int[] field_22 = new int[]{-1, -1, 2, 4};
  54.    // $FF: renamed from: ╞ñ int[]
  55.    static final int[] field_23 = new int[]{-1, -1, -1, -1, 2, 4, 6, 8};
  56.    // $FF: renamed from: ╞Ñ int[]
  57.    static final int[] field_24 = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 4, 6, 8, 10, 13, 16};
  58.    // $FF: renamed from: ╞ª int[][]
  59.    static final int[][] field_25;
  60.    // $FF: renamed from: ╞º int[]
  61.    static final int[] field_26;
  62.  
  63.    // $FF: renamed from: ╞Å () int
  64.    int method_0() {
  65.       return this.field_0 & 240;
  66.    }
  67.  
  68.    Sound(int var1, int var2, byte[] var3, int var4) {
  69.       this.field_0 = var1;
  70.       this.field_1 = var2;
  71.       this.field_3 = var3;
  72.       this.field_4 = this.field_5 = var4;
  73.       this.field_6 = (this.field_0 & 1) != 0;
  74.       this.method_6();
  75.       switch (field_11[this.field_0 >> 2 & 3]) {
  76.          case 11025:
  77.             this.field_2 = (int)(((long)var2 * 16000L + 11024L) / 11025L);
  78.             return;
  79.          case 22050:
  80.             this.field_2 = (int)(((long)var2 * 16000L + 22049L) / 22050L);
  81.             return;
  82.          case 44100:
  83.             this.field_2 = (int)(((long)var2 * 16000L + 44099L) / 44100L);
  84.             return;
  85.          case 88200:
  86.             this.field_2 = (int)(((long)var2 * 16000L + 88199L) / 88200L);
  87.             return;
  88.          default:
  89.       }
  90.    }
  91.  
  92.    public synchronized void play(int var1) {
  93.       this.stop();
  94.       if (this.field_8 != null) {
  95.          this.field_13 = new SoundMixer(this.field_8, var1);
  96.          AudioPlayer.player.start(this.field_13);
  97.       }
  98.  
  99.    }
  100.  
  101.    public synchronized void play() {
  102.       this.play(1);
  103.    }
  104.  
  105.    // $FF: renamed from: ╞É (int) void
  106.    synchronized void method_1(int var1) {
  107.       if (this.field_8 != null) {
  108.          this.field_13 = new SoundMixer(this.field_8, var1);
  109.          AudioPlayer.player.start(this.field_13);
  110.       }
  111.  
  112.    }
  113.  
  114.    // $FF: renamed from: ╞É () void
  115.    synchronized void method_2() {
  116.       this.method_1(1);
  117.    }
  118.  
  119.    // $FF: renamed from: ╞æ (int) void
  120.    synchronized void method_3(int var1) {
  121.       if (this.field_13 == null || this.field_13.available() <= 0) {
  122.          this.stop();
  123.          if (this.field_8 != null) {
  124.             this.field_13 = new SoundMixer(this.field_8, var1);
  125.             AudioPlayer.player.start(this.field_13);
  126.          }
  127.  
  128.       }
  129.    }
  130.  
  131.    // $FF: renamed from: ╞æ () void
  132.    synchronized void method_4() {
  133.       this.method_1(1);
  134.    }
  135.  
  136.    public synchronized void loop() {
  137.       this.stop();
  138.       if (this.field_8 != null) {
  139.          this.field_13 = new SoundMixer(this.field_8, -1);
  140.          AudioPlayer.player.start(this.field_13);
  141.       }
  142.  
  143.    }
  144.  
  145.    public synchronized void stop() {
  146.       if (this.field_13 != null) {
  147.          AudioPlayer.player.stop(this.field_13);
  148.  
  149.          try {
  150.             this.field_13.close();
  151.          } catch (IOException var1) {
  152.          }
  153.  
  154.          this.field_13 = null;
  155.       }
  156.  
  157.    }
  158.  
  159.    // $FF: renamed from: ╞Æ () boolean
  160.    synchronized boolean method_5() {
  161.       if (this.field_7) {
  162.          return true;
  163.       } else if ((this.field_8 = this.method_8()) == null) {
  164.          return false;
  165.       } else {
  166.          ByteArrayOutputStream var1 = new ByteArrayOutputStream(0);
  167.          DataOutputStream var2 = new DataOutputStream(var1);
  168.  
  169.          try {
  170.             var2.writeInt(779316836);
  171.             var2.writeInt(0);
  172.             var2.writeInt(this.field_2);
  173.             var2.writeInt(1);
  174.             var2.writeInt(8000);
  175.             var2.writeInt(1);
  176.             var2.writeInt(0);
  177.          } catch (IOException var5) {
  178.             return false;
  179.          }
  180.  
  181.          byte[] var3 = var1.toByteArray();
  182.  
  183.          for(int var4 = 0; var4 < 0; ++var4) {
  184.             this.field_8[var4] = var3[var4];
  185.          }
  186.  
  187.          this.field_7 = true;
  188.          return true;
  189.       }
  190.    }
  191.  
  192.    // $FF: renamed from: ╞ô () void
  193.    void method_6() {
  194.       if (field_14 == null) {
  195.          field_14 = new byte[256];
  196.  
  197.          for(int var1 = 0; var1 < 8; ++var1) {
  198.             int var2 = 1 << var1;
  199.  
  200.             for(int var3 = var2; var2 > 0; --var2) {
  201.                field_14[var3] = (byte)var1;
  202.                ++var3;
  203.             }
  204.          }
  205.  
  206.          field_14[0] = 0;
  207.       }
  208.  
  209.    }
  210.  
  211.    // $FF: renamed from: ╞ö (int) byte
  212.    private static byte method_7(int var0) {
  213.       short var1;
  214.       if (var0 < 0) {
  215.          var1 = 128;
  216.          var0 = -var0;
  217.       } else {
  218.          var1 = 0;
  219.       }
  220.  
  221.       int var2 = var0 + 132;
  222.       if (var2 > 32767) {
  223.          var2 = 32767;
  224.       }
  225.  
  226.       byte var3 = field_14[var2 >> 7];
  227.       int var4 = var2 >> var3 + 3 & 15;
  228.       int var5 = ~(var1 | var3 << 4 | var4);
  229.       if (var5 == 0) {
  230.          var5 = 2;
  231.       }
  232.  
  233.       return (byte)var5;
  234.    }
  235.  
  236.    // $FF: renamed from: ╞ò () byte[]
  237.    private byte[] method_8() {
  238.       int var1 = 0;
  239.       int var2 = 0;
  240.       int var3 = 0;
  241.       int var4 = 0;
  242.       int var7 = this.field_2;
  243.       switch (field_11[this.field_0 >> 2 & 3]) {
  244.          case 11025:
  245.             var1 = 45158;
  246.             break;
  247.          case 22050:
  248.             var1 = 90316;
  249.             break;
  250.          case 44100:
  251.             var1 = 180633;
  252.             break;
  253.          case 88200:
  254.             var1 = 361267;
  255.       }
  256.  
  257.       this.field_5 = this.field_4;
  258.       byte[] var5;
  259.       if ((var5 = new byte[2048]) == null) {
  260.          return null;
  261.       } else {
  262.          this.method_13(0);
  263.          byte[] var6;
  264.          if ((var6 = new byte[this.field_2]) == null) {
  265.             return null;
  266.          } else {
  267.             for(int var8 = this.field_1; var8 > 0; var8 -= 2048) {
  268.                if (var8 > 2048) {
  269.                   this.method_14(var5, 2048);
  270.                   var2 = 134217728;
  271.                } else {
  272.                   this.method_14(var5, var8);
  273.                   var2 = var8 - 1 << 16;
  274.                }
  275.  
  276.                while(var3 < var2 && var4 < var7) {
  277.                   var6[var4++] = var5[var3 >> 16];
  278.                   var3 += var1;
  279.                }
  280.  
  281.                if (var8 <= 2048) {
  282.                   var6[this.field_2 - 1] = var5[var8 - 1];
  283.                } else {
  284.                   var3 -= 134217728;
  285.                }
  286.             }
  287.  
  288.             return var6;
  289.          }
  290.       }
  291.    }
  292.  
  293.    // $FF: renamed from: ╞û () void
  294.    private void method_9() {
  295.       while(this.field_16 <= 24) {
  296.          this.field_15 = this.field_15 << 8 | 255 & this.field_3[this.field_5++];
  297.          this.field_16 += 8;
  298.       }
  299.  
  300.    }
  301.  
  302.    // $FF: renamed from: ╞ù (int) int
  303.    private int method_10(int var1) {
  304.       if (this.field_16 < var1) {
  305.          this.method_9();
  306.       }
  307.  
  308.       int var2 = this.field_15 << 32 - this.field_16 >>> 32 - var1;
  309.       this.field_16 -= var1;
  310.       return var2;
  311.    }
  312.  
  313.    // $FF: renamed from: ╞ÿ (int) int
  314.    private int method_11(int var1) {
  315.       if (this.field_16 < var1) {
  316.          this.method_9();
  317.       }
  318.  
  319.       int var2 = this.field_15 << 32 - this.field_16 >> 32 - var1;
  320.       this.field_16 -= var1;
  321.       return var2;
  322.    }
  323.  
  324.    // $FF: renamed from: ╞Ö (int) void
  325.    private void method_12(int var1) {
  326.       if (var1 > 32) {
  327.          var1 -= this.field_16;
  328.          this.field_16 = 0;
  329.          int var4 = var1 / 8;
  330.          this.field_5 += var4;
  331.          this.method_10(var1 & 7);
  332.       } else {
  333.          while(var1 > 0) {
  334.             int var2 = Math.min(16, var1);
  335.             this.method_10(var2);
  336.             var1 -= var2;
  337.          }
  338.  
  339.       }
  340.    }
  341.  
  342.    // $FF: renamed from: ╞Ü (int) void
  343.    private void method_13(int var1) {
  344.       if (this.field_17 == 0) {
  345.          this.field_17 = this.method_10(2) + 2;
  346.       }
  347.  
  348.       int var2 = this.field_18 & -4096;
  349.       if (var2 > 0 && var1 > var2 + this.field_18) {
  350.          this.field_18 += var2;
  351.          var1 -= var2;
  352.          int var3 = var2 * this.field_17;
  353.          if (this.field_6) {
  354.             var3 *= 2;
  355.          }
  356.  
  357.          this.method_12(var3);
  358.       }
  359.  
  360.       int var9 = var1 >> 12;
  361.       int var4 = var9 * (22 + this.field_17 * 4095);
  362.       if (this.field_6) {
  363.          var4 *= 2;
  364.       }
  365.  
  366.       this.method_12(var4);
  367.       var1 &= 4095;
  368.       byte[] var5 = new byte[2048];
  369.  
  370.       int var7;
  371.       for(int var6 = this.field_6 ? 512 : 1024; var1 > 0; var1 -= var7) {
  372.          var7 = Math.min(var6, var1);
  373.          this.method_14(var5, var7 + var7);
  374.       }
  375.  
  376.    }
  377.  
  378.    // $FF: renamed from: ╞¢ (byte[], int) void
  379.    private void method_14(byte[] var1, int var2) {
  380.       int var3 = 0;
  381.       if (this.field_17 == 0) {
  382.          this.field_17 = this.method_10(2) + 2;
  383.       }
  384.  
  385.       int[] var4 = field_25[this.field_17 - 2];
  386.       int var5 = 1 << this.field_17 - 2;
  387.       int var6 = 1 << this.field_17 - 1;
  388.       if (!this.field_6) {
  389.          int var16 = this.field_19[0];
  390.          int var18 = this.field_20[0];
  391.          int var19 = this.field_18;
  392.  
  393.          while(var2-- > 0) {
  394.             ++var19;
  395.             if ((var19 & 4095) == 1) {
  396.                var16 = this.method_11(16);
  397.                var1[var3++] = method_7(var16);
  398.                var18 = this.method_10(6);
  399.             } else {
  400.                int var20 = this.method_10(this.field_17);
  401.                int var22 = field_26[var18];
  402.                int var23 = 0;
  403.                int var13 = var5;
  404.  
  405.                do {
  406.                   if ((var20 & var13) != 0) {
  407.                      var23 += var22;
  408.                   }
  409.  
  410.                   var22 >>= 1;
  411.                   var13 >>= 1;
  412.                } while(var13 != 0);
  413.  
  414.                var23 += var22;
  415.                if ((var20 & var6) != 0) {
  416.                   var16 -= var23;
  417.                } else {
  418.                   var16 += var23;
  419.                }
  420.  
  421.                var18 += var4[var20 & ~var6];
  422.                if (var18 < 0) {
  423.                   var18 = 0;
  424.                } else if (var18 > 88) {
  425.                   var18 = 88;
  426.                }
  427.  
  428.                if (var16 != (short)var16) {
  429.                   var16 = var16 < 0 ? Short.MIN_VALUE : 32767;
  430.                }
  431.  
  432.                var1[var3++] = method_7(var16);
  433.             }
  434.          }
  435.  
  436.          this.field_19[0] = var16;
  437.          this.field_20[0] = var18;
  438.          this.field_18 = var19;
  439.       } else {
  440.          int var7 = 0;
  441.  
  442.          while(var2-- > 0) {
  443.             ++this.field_18;
  444.             if ((this.field_18 & 4095) == 1) {
  445.                for(int var17 = 0; var17 < 2; ++var17) {
  446.                   this.field_19[var17] = this.method_11(16);
  447.                   if (var17 == 0) {
  448.                      var7 = this.field_19[var17];
  449.                   } else {
  450.                      int var15 = var7 + this.field_19[var17];
  451.                      var7 = var15 >> 1;
  452.                      var1[var3++] = method_7(var7);
  453.                   }
  454.  
  455.                   this.field_20[var17] = this.method_10(6);
  456.                }
  457.             } else {
  458.                for(int var8 = 0; var8 < 2; ++var8) {
  459.                   int var9 = this.method_10(this.field_17);
  460.                   int var10 = field_26[this.field_20[var8]];
  461.                   int var11 = 0;
  462.                   int var12 = var5;
  463.  
  464.                   do {
  465.                      if ((var9 & var12) != 0) {
  466.                         var11 += var10;
  467.                      }
  468.  
  469.                      var10 >>= 1;
  470.                      var12 >>= 1;
  471.                   } while(var12 != 0);
  472.  
  473.                   var11 += var10;
  474.                   if ((var9 & var6) != 0) {
  475.                      int[] var25 = this.field_19;
  476.                      var25[var8] -= var11;
  477.                   } else {
  478.                      int[] var26 = this.field_19;
  479.                      var26[var8] += var11;
  480.                   }
  481.  
  482.                   int[] var27 = this.field_20;
  483.                   var27[var8] += var4[var9 & ~var6];
  484.                   if (this.field_20[var8] < 0) {
  485.                      this.field_20[var8] = 0;
  486.                   } else if (this.field_20[var8] > 88) {
  487.                      this.field_20[var8] = 88;
  488.                   }
  489.  
  490.                   if (this.field_19[var8] != (short)this.field_19[var8]) {
  491.                      this.field_19[var8] = this.field_19[var8] < 0 ? Short.MIN_VALUE : 32767;
  492.                   }
  493.  
  494.                   if (var8 == 0) {
  495.                      var7 = this.field_19[var8];
  496.                   } else {
  497.                      int var14 = var7 + this.field_19[var8];
  498.                      var7 = var14 >> 1;
  499.                      var1[var3++] = method_7(var7);
  500.                   }
  501.                }
  502.             }
  503.          }
  504.  
  505.       }
  506.    }
  507.  
  508.    static {
  509.       field_25 = new int[][]{field_21, field_22, field_23, field_24};
  510.       field_26 = new int[]{7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767};
  511.    }
  512. }
  513.