int getContentSize() { int out = 13 + (audioSpecificInfo == null ? 0 : audioSpecificInfo.getSize()) + (decoderSpecificInfo == null ? 0 : decoderSpecificInfo.getSize()); for (ProfileLevelIndicationDescriptor profileLevelIndicationDescriptor : profileLevelIndicationDescriptors) { out += profileLevelIndicationDescriptor.getSize(); } return out; }
private int parse0x05Unit(ByteBuffer nal) { int visual_object_verid = 0; BitReaderBuffer brb = new BitReaderBuffer(nal); boolean is_visual_object_identifier = brb.readBool(); if (is_visual_object_identifier) { visual_object_verid = brb.readBits(4); int visual_object_priority = brb.readBits(3); } return visual_object_verid; }
@Override protected void getContent(ByteBuffer byteBuffer) { BitWriterBuffer bwb = new BitWriterBuffer(byteBuffer); bwb.writeBits(fscod, 2); bwb.writeBits(bsid, 5); bwb.writeBits(bsmod, 3); bwb.writeBits(acmod, 3); bwb.writeBits(lfeon, 1); bwb.writeBits(bitRateCode, 5); bwb.writeBits(reserved, 5); }
private void parseParametricSpecificConfig(int samplingFrequencyIndex, int channelConfiguration, int audioObjectType, BitReaderBuffer in) throws IOException { /* ParametricSpecificConfig() { isBaseLayer; 1 uimsbf if (isBaseLayer) { PARAconfig(); } else { HILNenexConfig(); } } */ isBaseLayer = in.readBits(1); if (isBaseLayer == 1) { parseParaConfig(samplingFrequencyIndex, channelConfiguration, audioObjectType, in); } else { parseHilnEnexConfig(samplingFrequencyIndex, channelConfiguration, audioObjectType, in); } }
public int byteSync() { int left = 8 - position % 8; if (left == 8) { left = 0; } readBits(left); return left; }
public int getSize() { return getContentSize() + getSizeSize() + 1; }
public int getSizeSize() { int size = getContentSize(); int i = 0; while (size > 0 || i < sizeBytes) { size >>>= 7; i++; } return i; }
@Descriptor(tags = 0x00) public abstract class ObjectDescriptorBase extends BaseDescriptor { }
public String getDescriptorAsString() { return descriptor.toString(); }
@Override public void _parseDetails(ByteBuffer content) { BitReaderBuffer brb = new BitReaderBuffer(content); format_info = brb.readBits(32); peak_data_rate = brb.readBits(15); reserved = brb.readBits(1); reserved2 = brb.readBits(32); }
@Override protected void getContent(ByteBuffer byteBuffer) { BitWriterBuffer bwb = new BitWriterBuffer(byteBuffer); bwb.writeBits(format_info, 32); bwb.writeBits(peak_data_rate, 15); bwb.writeBits(reserved, 1); bwb.writeBits(reserved2, 32); //To change body of implemented methods use File | Settings | File Templates. }
public void writeBool(boolean b) { writeBits(b ? 1 : 0, 1); }
public boolean readBool() { return readBits(1) == 1; }
private void parseHilnEnexConfig(int samplingFrequencyIndex, int channelConfiguration, int audioObjectType, BitReaderBuffer in) throws IOException { /* HILNenexConfig() { HILNenhaLayer; 1 uimsbf if (HILNenhaLayer) { HILNenhaQuantMode; 2 uimsbf } } */ hilnEnhaLayer = in.readBits(1); if (hilnEnhaLayer == 1) { hilnEnhaQuantMode = in.readBits(2); } }
private void parseHilnConfig(int samplingFrequencyIndex, int channelConfiguration, int audioObjectType, BitReaderBuffer in) throws IOException { /* HILNconfig() { HILNquantMode; 1 uimsbf HILNmaxNumLine; 8 uimsbf HILNsampleRateCode; 4 uimsbf HILNframeLength; 12 uimsbf HILNcontMode; 2 uimsbf } */ hilnQuantMode = in.readBits(1); hilnMaxNumLine = in.readBits(8); hilnSampleRateCode = in.readBits(4); hilnFrameLength = in.readBits(12); hilnContMode = in.readBits(2); }
private void parseErHvxcConfig(int samplingFrequencyIndex, int channelConfiguration, int audioObjectType, BitReaderBuffer in) throws IOException { /* ErHVXCconfig() { HVXCvarMode; 1 uimsbf HVXCrateMode; 2 uimsbf extensionFlag; 1 uimsbf if (extensionFlag) { var_ScalableFlag; 1 uimsbf } } */ hvxcVarMode = in.readBits(1); hvxcRateMode = in.readBits(2); erHvxcExtensionFlag = in.readBits(1); if (erHvxcExtensionFlag == 1) { var_ScalableFlag = in.readBits(1); } }