* @version 0.0.7 12/12/99\r
* @since 0.0.5\r
*/\r
-@LATTICE("ST,OUT,FIL,DE,O,EQ,PA,INIT,DE*")\r
+@LATTICE("ST,OUT,FIL,DE<LA,O,EQ,PA,INIT,DE*")\r
public class Decoder implements DecoderErrors\r
{\r
static private final Params DEFAULT_PARAMS = new Params();\r
// initialize(header,stream);\r
// }\r
\r
- @LOC("DELTA(TH)") int layer = header.layer();\r
+ @LOC("TH") int layer = header.layer();\r
\r
output.clear_buffer();\r
\r
- @LOC("TH,Decoder.DE") FrameDecoder decoder = retrieveDecoder(header, stream, layer);\r
- decoder.decodeFrame();\r
+// @LOC("DE,Decoder.DE") FrameDecoder decoder = retrieveDecoder(header, stream, layer); // return ceil=DELTA(TH)\r
+// decoder.decodeFrame();\r
\r
if(layer==3){\r
- l3decoder=(LayerIIIDecoder)decoder;\r
+ if (l3decoder==null)\r
+ {\r
+ l3decoder = new LayerIIIDecoder(stream, \r
+ header, filter1, filter2, \r
+ output, OutputChannels.BOTH_CHANNELS);\r
+ } \r
+ l3decoder.decodeFrame();\r
}else if(layer==2){\r
- l2decoder=(LayerIIDecoder)decoder;\r
+ if (l2decoder==null)\r
+ {\r
+ l2decoder = new LayerIIDecoder();\r
+ l2decoder.create(stream, \r
+ header, filter1, filter2, \r
+ output, OutputChannels.BOTH_CHANNELS); \r
+ }\r
+ l2decoder.decodeFrame();\r
}else{\r
- l1decoder=(LayerIDecoder)decoder;\r
+ if (l1decoder==null)\r
+ {\r
+ l1decoder = new LayerIDecoder();\r
+ l1decoder.create(stream, \r
+ header, filter1, filter2, \r
+ output, OutputChannels.BOTH_CHANNELS); \r
+ }\r
+ l1decoder.decodeFrame();\r
}\r
- \r
+\r
output.write_buffer(1);\r
\r
return output; \r
return new DecoderException(errorcode, throwable);\r
}\r
\r
- @LATTICE("DE<IN,THISLOC=IN")\r
- @RETURNLOC("DE")\r
+ @LATTICE("IN,TH,THISLOC=TH")\r
+ @RETURNLOC("TH")\r
protected FrameDecoder retrieveDecoder(@LOC("IN") Header header, @LOC("IN") Bitstream stream, @LOC("IN") int layer)\r
throws DecoderException\r
{\r
- @LOC("DE") FrameDecoder decoder = null;\r
+// @LOC("DE") FrameDecoder decoder = null;\r
\r
// REVIEW: allow channel output selection type\r
// (LEFT, RIGHT, BOTH, DOWNMIX)\r
output, OutputChannels.BOTH_CHANNELS);\r
} \r
\r
- decoder = l3decoder;\r
+ return l3decoder;\r
+// decoder = l3decoder;\r
break;\r
case 2:\r
if (l2decoder==null)\r
header, filter1, filter2, \r
output, OutputChannels.BOTH_CHANNELS); \r
}\r
- decoder = l2decoder;\r
+ return l2decoder;\r
+// decoder = l2decoder;\r
break;\r
case 1:\r
if (l1decoder==null)\r
header, filter1, filter2, \r
output, OutputChannels.BOTH_CHANNELS); \r
}\r
- decoder = l1decoder;\r
+ return l1decoder;\r
+// decoder = l1decoder;\r
break;\r
}\r
- \r
- if (decoder==null)\r
- {\r
- throw newDecoderException(UNSUPPORTED_LAYER, null);\r
- }\r
- \r
- return decoder;\r
+// \r
+// if (decoder==null)\r
+// {\r
+// throw newDecoderException(UNSUPPORTED_LAYER, null);\r
+// }\r
+// \r
+// return decoder;\r
}\r
\r
public void initialize(Header header, Bitstream stream)\r