private void decodeMacroblocks(Frame[][] refList) { Picture mb = Picture.create(16, 16, activeSps.chromaFormatIdc); int mbWidth = activeSps.picWidthInMbsMinus1 + 1; MBlock mBlock = new MBlock(activeSps.chromaFormatIdc); while (parser.readMacroblock(mBlock)) { decode(mBlock, parser.getSliceHeader().sliceType, mb, refList); int mbAddr = mapper.getAddress(mBlock.mbIdx); int mbX = mbAddr % mbWidth; int mbY = mbAddr / mbWidth; putMacroblock(frameOut, mb, mbX, mbY); di.shs[mbAddr] = parser.getSliceHeader(); di.refsUsed[mbAddr] = refList; fillCoeff(mBlock, mbX, mbY); mb.fill(0); mBlock.clear(); } }