public int byteSync() { int left = 8 - position % 8; if (left == 8) { left = 0; } readBits(left); return left; }
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); } }
public SEIMessage(BitReaderBuffer bsr) throws IOException { int payloadType = 0; long ff_byte; while ((ff_byte = bsr.readBits(8)) == 0xFF) { payloadType += 255; } int last_payload_type_byte = (int) bsr.readBits(8); payloadType += last_payload_type_byte; int payloadSize = 0; while ((ff_byte = bsr.readBits(8)) == 0xFF) { payloadSize += 255; } int last_payload_size_byte = (int) bsr.readBits(8); payloadSize += last_payload_size_byte; System.err.println("payloadType " + payloadType); //sei_payload(payloadType, payloadSize ); } }
@Override public void _parseDetails(ByteBuffer content) { BitReaderBuffer brb = new BitReaderBuffer(content); dataRate = brb.readBits(13); numIndSub = brb.readBits(3) + 1; // This field indicates the number of independent substreams that are present in the Enhanced AC-3 bitstream. The value // of this field is one less than the number of independent substreams present. for (int i = 0; i < numIndSub; i++) { Entry e = new Entry(); e.fscod = brb.readBits(2); e.bsid = brb.readBits(5); e.bsmod = brb.readBits(5); e.acmod = brb.readBits(3); e.lfeon = brb.readBits(1); e.reserved = brb.readBits(3); e.num_dep_sub = brb.readBits(4); if (e.num_dep_sub > 0) { e.chan_loc = brb.readBits(9); } else { e.reserved2 = brb.readBits(1); } entries.add(e); } }
public int readBits(int i) { byte b = buffer.get(initialPos + position / 8); int v = b < 0 ? b + 256 : b; int left = 8 - position % 8; int rc; if (i <= left) { rc = (v << (position % 8) & 0xFF) >> ((position % 8) + (left - i)); position += i; } else { int now = left; int then = i - left; rc = readBits(now); rc = rc << then; rc += readBits(then); } buffer.position(initialPos + (int) Math.ceil((double) position / 8)); return rc; }
@Override public void _parseDetails(ByteBuffer content) { DTSSamplingFrequency = IsoTypeReader.readUInt32(content); maxBitRate = IsoTypeReader.readUInt32(content); avgBitRate = IsoTypeReader.readUInt32(content); pcmSampleDepth = IsoTypeReader.readUInt8(content); BitReaderBuffer brb = new BitReaderBuffer(content); frameDuration = brb.readBits(2); streamConstruction = brb.readBits(5); coreLFEPresent = brb.readBits(1); coreLayout = brb.readBits(6); coreSize = brb.readBits(14); stereoDownmix = brb.readBits(1); representationType = brb.readBits(3); channelLayout = brb.readBits(16); multiAssetFlag = brb.readBits(1); LBRDurationMod = brb.readBits(1); reservedBoxPresent = brb.readBits(1); reserved = brb.readBits(5); }
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; }
frameLengthFlag = in.readBits(1); dependsOnCoreCoder = in.readBits(1); if (dependsOnCoreCoder == 1) { coreCoderDelay = in.readBits(14); extensionFlag = in.readBits(1); if (channelConfiguration == 0) { throw new UnsupportedOperationException("can't parse program_config_element yet"); layerNr = in.readBits(3); numOfSubFrame = in.readBits(5); layer_length = in.readBits(11); aacSpectralDataResilienceFlag = in.readBool(); extensionFlag3 = in.readBits(1); if (extensionFlag3 == 1) { throw new RuntimeException("not yet implemented");
public sbr_header(BitReaderBuffer b) { bs_amp_res = b.readBool(); bs_start_freq = b.readBits(4); bs_stop_freq = b.readBits(4); bs_xover_band = b.readBits(3); bs_reserved = b.readBits(2); bs_header_extra_1 = b.readBool(); bs_header_extra_2 = b.readBool(); if (bs_header_extra_1) { bs_freq_scale = b.readBits(2); bs_alter_scale = b.readBool(); bs_noise_bands = b.readBits(2); } if (bs_header_extra_2) { bs_limiter_bands = b.readBits(2); bs_limiter_gains = b.readBits(2); bs_interpol_freq = b.readBool(); } bs_smoothing_mode = b.readBool(); } }
int sync = brb.readBits(11); // A if (sync != 0x7ff) throw new IOException("Expected Start Word 0x7ff"); hdr.mpegVersion = brb.readBits(2); // B hdr.layer = brb.readBits(2); // C hdr.protectionAbsent = brb.readBits(1); // D hdr.bitRateIndex = brb.readBits(4); // E hdr.bitRate = BIT_RATE[hdr.bitRateIndex]; if (hdr.bitRate == 0) throw new IOException("Unexpected (free/bad) bit rate"); hdr.sampleFrequencyIndex = brb.readBits(2); hdr.padding = brb.readBits(1); // G padding brb.readBits(1); // H private hdr.channelMode = brb.readBits(2); // H hdr.channelCount = hdr.channelMode == 3 ? 1 : 2; return hdr;
private void parseParaConfig(int samplingFrequencyIndex, int channelConfiguration, int audioObjectType, BitReaderBuffer in) throws IOException { /* PARAconfig() { PARAmode; 2 uimsbf if (PARAmode != 1) { ErHVXCconfig(); } if (PARAmode != 0) { HILNconfig(); } PARAextensionFlag; 1 uimsbf if (PARAextensionFlag) { // to be defined in MPEG-4 Phase 3 } } */ paraMode = in.readBits(2); if (paraMode != 1) { parseErHvxcConfig(samplingFrequencyIndex, channelConfiguration, audioObjectType, in); } if (paraMode != 0) { parseHilnConfig(samplingFrequencyIndex, channelConfiguration, audioObjectType, in); } paraExtensionFlag = in.readBits(1); parametricSpecificConfig = true; }
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); } }
while ((eldExtType = bitReaderBuffer.readBits(4)) != ELDEXT_TERM) { int eldExtLen = bitReaderBuffer.readBits(4); int len = eldExtLen; int eldExtLenAdd = 0; if (eldExtLen == 15) { eldExtLenAdd = bitReaderBuffer.readBits(8); len += eldExtLenAdd; int eldExtLenAddAdd = bitReaderBuffer.readBits(16); len += eldExtLenAddAdd; int other_byte = bitReaderBuffer.readBits(8);
@Override protected void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); referenceId = IsoTypeReader.readUInt32(content); timeScale = IsoTypeReader.readUInt32(content); if (getVersion() == 0) { earliestPresentationTime = IsoTypeReader.readUInt32(content); firstOffset = IsoTypeReader.readUInt32(content); } else { earliestPresentationTime = IsoTypeReader.readUInt64(content); firstOffset = IsoTypeReader.readUInt64(content); } reserved = IsoTypeReader.readUInt16(content); int numEntries = IsoTypeReader.readUInt16(content); for (int i = 0; i < numEntries; i++) { BitReaderBuffer b = new BitReaderBuffer(content); Entry e = new Entry(); e.setReferenceType((byte) b.readBits(1)); e.setReferencedSize(b.readBits(31)); e.setSubsegmentDuration(IsoTypeReader.readUInt32(content)); b = new BitReaderBuffer(content); e.setStartsWithSap((byte) b.readBits(1)); e.setSapType((byte) b.readBits(3)); e.setSapDeltaTime(b.readBits(28)); entries.add(e); } }