*----------------------------------------------------------------------
*/
-
-
/**
* Class Implementing Layer 3 Decoder.
*
SSJAVA.arrayinit(scalefac_buffer, 0);
SSJAVA.arrayinit(nonzero, 576);
SSJAVA.arrayinit(new_slen, 0);
+
+ SSJAVA.arrayinit(raw_full, 2, SBLIMIT * SSLIMIT, 0);
+ SSJAVA.arrayinit(rawout, 0);
CheckSumHuff = 0;
// prevblck = new float[2][SBLIMIT * SSLIMIT];
si = new III_side_info_t();
@LOC("THIS,LayerIIIDecoder.HD1") int version = header.version();
// additional codes for the definitely written property
- filter_pos = (filter_pos + 4) & 0xf;
+ filter_pos = (header.getIdx() * 4) & 0xf;
filter1.vidx = 1;
filter2.vidx = 1;
filter1.actual_write_pos = filter_pos;
filter2.actual_write_pos = filter_pos;
- //
-
- // System.out.println("filter1="+filter1.vidx+" "+filter1.actual_write_pos);
- // System.out.println("filter1="+filter2.vidx+" "+filter2.actual_write_pos);
// here 'gr' and 'max_gr' should be higher than 'ch','channels', and more
for (gr = 0; gr < max_gr; gr++) { // two granules per channel
} // channels
// TODO
- // init prev
- SSJAVA.arrayinit(prevblck, 2, SBLIMIT * SSLIMIT, 0);
- // copy from raw_full to prev
- SSJAVA.arraycopy(prevblck, raw_full, 2, SBLIMIT * SSLIMIT);
+ if (gr < max_gr - 1) {
+ // init prev
+ SSJAVA.arrayinit(prevblck, 2, SBLIMIT * SSLIMIT, 0);
+ // copy from raw_full to prev
+ SSJAVA.arraycopy(prevblck, raw_full, 2, SBLIMIT * SSLIMIT);
+ }
// for (int chidx = 0; chidx < 2; chidx++) {
// for (int sidx = 0; sidx < SBLIMIT * SSLIMIT; sidx++) {
// prevblck[chidx][sidx] = raw_full[chidx][sidx];
// filter1.actual_write_pos);
} // granule
+ // TODO
+ // init prev
+ SSJAVA.arrayinit(prevblck, 2, SBLIMIT * SSLIMIT, 0);
+ // copy from raw_full to prev
+ SSJAVA.arraycopy(prevblck, raw_full, 2, SBLIMIT * SSLIMIT);
+
// System.out.println("#END FRAME actual_write_pos=" +
// filter1.actual_write_pos);
// System.out.println("Counter = ................................."+counter);
// if (counter < 609)
// {
- counter++; // count should be loc*
+ // counter++; // count should be loc*
// buffer.write_buffer(1); // buffer!!!
// }
// else if (counter == 609)
si.ch[ch].gr[gr].big_values = sib.get_bits(9);
si.ch[ch].gr[gr].global_gain = sib.get_bits(8);
si.ch[ch].gr[gr].scalefac_compress = sib.get_bits(4);
- @LOC("THIS,LayerIIIDecoder.SI,III_side_info_t.TEMP") int cond =
- sib.get_bits(1);
+ @LOC("THIS,LayerIIIDecoder.SI,III_side_info_t.TEMP") int cond = sib.get_bits(1);
// si.ch[ch].gr[gr].window_switching_flag = sib.get_bits(1);
// if ((si.ch[ch].gr[gr].window_switching_flag) != 0) {
if (cond != 0) {
si.ch[ch].gr[0].global_gain = sib.get_bits(8);
si.ch[ch].gr[0].scalefac_compress = sib.get_bits(9);
- @LOC("THIS,LayerIIIDecoder.SI,III_side_info_t.TEMP") int cond =
- sib.get_bits(1);
+ @LOC("THIS,LayerIIIDecoder.SI,III_side_info_t.TEMP") int cond = sib.get_bits(1);
// si.ch[ch].gr[0].window_switching_flag = sib.get_bits(1);
// if ((si.ch[ch].gr[0].window_switching_flag) != 0) {
if (cond != 0) {
&& !(si.ch[ch].gr[gr].mixed_block_flag != 0))
return;
-
if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].mixed_block_flag != 0)
&& (si.ch[ch].gr[gr].block_type == 2)) {
sb18lim = 18;
// This may be adjusted for performance without any problems.
// public static final int POW_TABLE_LIMIT=512;
-
private static final int slen[][] = { { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 },
{ 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 } };
}
+/************************************************************/
+/* L3TABLE */
+/************************************************************/
+@LATTICE("N<VAR")
+class SBI {
+ @LOC("VAR")
+ public int[] l;
+ @LOC("VAR")
+ public int[] s;
+ public SBI() {
+ l = new int[23];
+ s = new int[14];
+ }
- /************************************************************/
- /* L3TABLE */
- /************************************************************/
-
- @LATTICE("N<VAR")
- class SBI {
- @LOC("VAR")
- public int[] l;
- @LOC("VAR")
- public int[] s;
+ @LATTICE("THIS<IN,THISLOC=THIS")
+ public SBI(@DELEGATE @LOC("IN") int[] thel, @DELEGATE @LOC("IN") int[] thes) {
+ l = thel;
+ s = thes;
+ }
+}
- public SBI() {
- l = new int[23];
- s = new int[14];
- }
+@LATTICE("V,V*")
+class gr_info_s {
+ @LOC("V")
+ public int part2_3_length = 0;
+ @LOC("V")
+ public int big_values = 0;
+ @LOC("V")
+ public int global_gain = 0;
+ @LOC("V")
+ public int scalefac_compress = 0;
+ @LOC("V")
+ public int window_switching_flag = 0;
+ @LOC("V")
+ public int block_type = 0;
+ @LOC("V")
+ public int mixed_block_flag = 0;
+ @LOC("V")
+ public int[] table_select;
+ @LOC("V")
+ public int[] subblock_gain;
+ @LOC("V")
+ public int region0_count = 0;
+ @LOC("V")
+ public int region1_count = 0;
+ @LOC("V")
+ public int preflag = 0;
+ @LOC("V")
+ public int scalefac_scale = 0;
+ @LOC("V")
+ public int count1table_select = 0;
- @LATTICE("THIS<IN,THISLOC=THIS")
- public SBI(@DELEGATE @LOC("IN") int[] thel, @DELEGATE @LOC("IN") int[] thes) {
- l = thel;
- s = thes;
- }
+ /**
+ * Dummy Constructor
+ */
+ public gr_info_s() {
+ table_select = new int[3];
+ subblock_gain = new int[3];
}
+}
- @LATTICE("V,V*")
- class gr_info_s {
- @LOC("V")
- public int part2_3_length = 0;
- @LOC("V")
- public int big_values = 0;
- @LOC("V")
- public int global_gain = 0;
- @LOC("V")
- public int scalefac_compress = 0;
- @LOC("V")
- public int window_switching_flag = 0;
- @LOC("V")
- public int block_type = 0;
- @LOC("V")
- public int mixed_block_flag = 0;
- @LOC("V")
- public int[] table_select;
- @LOC("V")
- public int[] subblock_gain;
- @LOC("V")
- public int region0_count = 0;
- @LOC("V")
- public int region1_count = 0;
- @LOC("V")
- public int preflag = 0;
- @LOC("V")
- public int scalefac_scale = 0;
- @LOC("V")
- public int count1table_select = 0;
-
- /**
- * Dummy Constructor
- */
- public gr_info_s() {
- table_select = new int[3];
- subblock_gain = new int[3];
- }
- }
+@LATTICE("GR2<GR1,GR1<GR,GR2*")
+class temporaire {
+ @LOC("GR")
+ public int[] scfsi;
+ @LOC("GR")
+ public gr_info_s[] gr;
- @LATTICE("GR2<GR1,GR1<GR,GR2*")
- class temporaire {
- @LOC("GR")
- public int[] scfsi;
- @LOC("GR")
- public gr_info_s[] gr;
-
- /**
- * Dummy Constructor
- */
- public temporaire() {
- scfsi = new int[4];
- gr = new gr_info_s[2];
- gr[0] = new gr_info_s();
- gr[1] = new gr_info_s();
- }
+ /**
+ * Dummy Constructor
+ */
+ public temporaire() {
+ scfsi = new int[4];
+ gr = new gr_info_s[2];
+ gr[0] = new gr_info_s();
+ gr[1] = new gr_info_s();
}
+}
- @LATTICE("CH<TEMP,TEMP*")
- class III_side_info_t {
-
- @LOC("CH")
- public int main_data_begin = 0;
- @LOC("CH")
- public int private_bits = 0;
- @LOC("CH")
- public temporaire[] ch;
-
- /**
- * Dummy Constructor
- */
- public III_side_info_t() {
- ch = new temporaire[2];
- ch[0] = new temporaire();
- ch[1] = new temporaire();
- }
+@LATTICE("CH<TEMP,TEMP*")
+class III_side_info_t {
+
+ @LOC("CH")
+ public int main_data_begin = 0;
+ @LOC("CH")
+ public int private_bits = 0;
+ @LOC("CH")
+ public temporaire[] ch;
+
+ /**
+ * Dummy Constructor
+ */
+ public III_side_info_t() {
+ ch = new temporaire[2];
+ ch[0] = new temporaire();
+ ch[1] = new temporaire();
}
+}
- @LATTICE("N<VAR")
- class temporaire2 {
- @LOC("VAR")
- public int[] l; /* [cb] */
- @LOC("VAR")
- public int[][] s; /* [window][cb] */
-
- /**
- * Dummy Constructor
- */
- public temporaire2() {
- l = new int[23];
- s = new int[3][13];
- }
+@LATTICE("N<VAR")
+class temporaire2 {
+ @LOC("VAR")
+ public int[] l; /* [cb] */
+ @LOC("VAR")
+ public int[][] s; /* [window][cb] */
+
+ /**
+ * Dummy Constructor
+ */
+ public temporaire2() {
+ l = new int[23];
+ s = new int[3][13];
}
+}
- // class III_scalefac_t
- // {
- // public temporaire2[] tab;
- // /**
- // * Dummy Constructor
- // */
- // public III_scalefac_t()
- // {
- // tab = new temporaire2[2];
- // }
- // }
+// class III_scalefac_t
+// {
+// public temporaire2[] tab;
+// /**
+// * Dummy Constructor
+// */
+// public III_scalefac_t()
+// {
+// tab = new temporaire2[2];
+// }
+// }