package org.ifsoft.rtp; import org.ifsoft.*; import java.util.ArrayList; public class RTCPRRPacket extends RTCPPacket { private RTCPReportBlock _reportBlocks[]; private Long _synchronizationSource; protected void deserialize() { Integer startIndex = Integer.valueOf(0); setSynchronizationSource(BitAssistant.toLongFromIntegerNetwork(super.getPayload(), startIndex)); startIndex = Integer.valueOf(startIndex.intValue() + 4); Byte firstByte = super.getFirstByte(); if(startIndex.intValue() < ArrayExtensions.getLength(super.getPayload()).intValue()) { ArrayList list = new ArrayList(); for(Integer i = Integer.valueOf(0); i.intValue() < firstByte.byteValue();) { RTCPReportBlock item = RTCPReportBlock.parseBytes(BitAssistant.subArray(super.getPayload(), startIndex, Integer.valueOf(24))); if(item != null) list.add(item); startIndex = Integer.valueOf(startIndex.intValue() + 24); //item = i; Integer integer = i = Integer.valueOf(i.intValue() + 1); RTCPReportBlock _tmp = item; } setReportBlocks((RTCPReportBlock[])list.toArray(new RTCPReportBlock[0])); } } public RTCPRRPacket(Long synchronizationSource) { _synchronizationSource = Long.valueOf(0L); setSynchronizationSource(synchronizationSource); } RTCPRRPacket() { _synchronizationSource = Long.valueOf(0L); } public RTCPReportBlock[] getReportBlocks() { return _reportBlocks; } public Long getSynchronizationSource() { return _synchronizationSource; } protected void serialize() { if(getReportBlocks() != null) super.setFirstByte(new Byte((new Integer(ArrayExtensions.getLength(getReportBlocks()).intValue())).byteValue())); ArrayList list = new ArrayList(); ArrayListExtensions.addRange(list, BitAssistant.getIntegerBytesFromLongNetwork(getSynchronizationSource())); if(getReportBlocks() != null) { RTCPReportBlock arr$[] = getReportBlocks(); int len$ = arr$.length; for(int i$ = 0; i$ < len$; i$++) { RTCPReportBlock block = arr$[i$]; ArrayListExtensions.addRange(list, block.getBytes()); } } super.setPayload((Byte[])list.toArray(new Byte[0])); } public void setReportBlocks(RTCPReportBlock value[]) { _reportBlocks = value; } private void setSynchronizationSource(Long value) { _synchronizationSource = value; } }