fix mp3decoder: clear memory locations that are not overwritten.
[IRC.git] / Robust / src / Benchmarks / SSJava / MP3Decoder / Player.java
index b418fc1eedfc649b6205900a39ffad757d3f4cb2..d0ef553aff75f90ffdf97367de116a20dd4077f1 100644 (file)
@@ -71,6 +71,9 @@ public class Player {
   @LOC("B")\r
   private int lastPosition = 0;\r
 \r
+  @LOC("B")\r
+  private long sampleNumber;\r
+\r
   /**\r
    * Creates a new <code>Player</code> instance.\r
    */\r
@@ -117,8 +120,12 @@ public class Player {
     @LOC("THIS,Player.ST") Header h = BitstreamWrapper.readFrame();\r
     decoder.init(h);\r
 \r
-    @LOC("IN") int count = 0;\r
-    SSJAVA: while (count++ < 2147483646) {\r
+    sampleNumber = 1;\r
+    System.out.println("Gobble sentinel: +++");\r
+\r
+    // @LOC("IN") int count = 0;\r
+    SSJAVA: while (Counter.idx() < 2147483646) {\r
+      Counter.inc();\r
       if (h == null) {\r
         break;\r
       }\r
@@ -200,17 +207,8 @@ public class Player {
       // @LOC("O") SampleBuffer output = (SampleBuffer) decoder.decodeFrame(h);\r
       decoder.decodeFrame(h);\r
 \r
-      // eom debug\r
-      @LOC("C") int sum = 0;\r
-      @LOC("C") short[] outbuf = SampleBufferWrapper.getBuffer();\r
-      // short[] outbuf = output.getBuffer();\r
-      TERMINATE: for (@LOC("C") int i = 0; i < SampleBufferWrapper.getBufferLength(); i++) {\r
-        // System.out.println(outbuf[i]);\r
-        sum += outbuf[i];\r
-      }\r
-      System.out.println(sum);\r
-      //\r
-\r
+      DEBUG_OUTPUT_CHECKSUM();\r
+      // DEBUG_OUTPUT();\r
       // synchronized (this)\r
       // {\r
       // out = audio;\r
@@ -236,4 +234,29 @@ public class Player {
     return true;\r
   }\r
 \r
+  @TRUST\r
+  public void DEBUG_OUTPUT() {\r
+    // it looks like there is left and right channel interleaved into the\r
+    // output buffer, so only sample one channel (stride=2)\r
+    short[] outbuf = SampleBufferWrapper.getBuffer();\r
+    for (int i = 0; i < SampleBufferWrapper.getBufferLength(); i = i + 2) {\r
+      System.out.println(sampleNumber + " " + outbuf[i]);\r
+      sampleNumber++;\r
+    }\r
+  }\r
+\r
+  @TRUST\r
+  public void DEBUG_OUTPUT_CHECKSUM() {\r
+    // eom debug\r
+    @LOC("C") int sum = 0;\r
+    @LOC("C") short[] outbuf = SampleBufferWrapper.getBuffer();\r
+    // short[] outbuf = output.getBuffer();\r
+    TERMINATE: for (@LOC("C") int i = 0; i < SampleBufferWrapper.getBufferLength(); i++) {\r
+      // System.out.println(outbuf[i]);\r
+      sum += outbuf[i];\r
+    }\r
+    System.out.println(sum);\r
+    //\r
+  }\r
+\r
 }\r