@Override protected List<IrStreamItem> process(int beg, int length) { List<IrStreamItem> items = new ArrayList<>(16); ParameterData data = new ParameterData(CHUNKSIZE); for (int i = beg; i < beg + length - 1; i += 2) { int noBitsLimit = params.getNoBitsLimit(noPayload); int mark = analyzer.getCleanedTime(i); int space = analyzer.getCleanedTime(i + 1); Burst burst = new Burst(mark, space); if (burst.equals(zero)) { data.update(0); } else if (burst.equals(one)) { data.update(1); } else if (burst.equals(two)) { data.update(2); } else if (burst.equals(three)) { data.update(3); } else { if (!data.isEmpty()) { saveParameter(data, items, params.getBitDirection()); data = new ParameterData(); } items.add(newFlash(mark)); if (i == beg + length - 2 && params.isUseExtents()) items.add(newExtent(analyzer.getTotalDuration(beg, length))); else items.add(newGap(space)); } if (data.getNoBits() >= noBitsLimit) { saveParameter(data, items, params.getBitDirection()); data = new ParameterData(CHUNKSIZE); } } if (!data.isEmpty()) saveParameter(data, items, params.getBitDirection()); return items; }