С Preon , RtpHeader может быть представлен следующим образом:
public class RtpHeader {
@BoundNumber(size = "2")
public int version;
@Bound
public boolean padding;
@Bound
public boolean extension;
@BoundNumber(size="4")
public int csrcCount;
@Bound
public boolean marker;
@BoundNumber(size="7")
public int payloadType;
@BoundNumber(size="16", byteOrder = ByteOrder.BigEndian)
public int sequenceNumber;
@BoundNumber(size="32", byteOrder = ByteOrder.BigEndian)
public int timestamp;
@BoundNumber(size="32", byteOrder = ByteOrder.BigEndian)
public int synchronizationSource;
@BoundList(size="csrcCount")
public int[] csrcs;
}
Кодирование в байты может быть таким простым:
Codec<RtpHeader> codec = Codecs.create(RtpHeader.class);
RtpHeader header = new RtpHeader();
... // Setting header values
OutputStream out = ...;
Codecs.encode(header, codec, out);
Однако имейте в виду, что кодирование в Preon все еще находится на ранних стадиях. В данном конкретном случае это работает, но я не собираюсь давать никаких гарантий.
Преимущество использования Preon заключается в том, что вам не нужно самим писать всю логику кодирования и декодирования.