public Id3Reader(TrackOutput output) { super(output); output.format(MediaFormat.createFormatForMimeType(MimeTypes.APPLICATION_ID3, MediaFormat.NO_VALUE)); }
public SeiReader(TrackOutput output) { super(output); output.format(MediaFormat.createTextFormat(MimeTypes.APPLICATION_EIA608, MediaFormat.NO_VALUE, null)); }
private void parseMediaFormat(NalUnitTargetBuffer sps, NalUnitTargetBuffer pps) { byte[] spsData = new byte[sps.nalLength]; byte[] ppsData = new byte[pps.nalLength]; System.arraycopy(sps.nalData, 0, spsData, 0, sps.nalLength); System.arraycopy(pps.nalData, 0, ppsData, 0, pps.nalLength); List<byte[]> initializationData = new ArrayList<>(); initializationData.add(spsData); initializationData.add(ppsData); // Unescape and parse the SPS unit. NalUnitUtil.unescapeStream(sps.nalData, sps.nalLength); ParsableBitArray bitArray = new ParsableBitArray(sps.nalData); bitArray.skipBits(32); // NAL header SpsData parsedSpsData = CodecSpecificDataUtil.parseSpsNalUnit(bitArray); // Construct and output the format. output.format(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, MediaFormat.NO_VALUE, C.UNKNOWN_TIME_US, parsedSpsData.width, parsedSpsData.height, 0, parsedSpsData.pixelWidthAspectRatio, initializationData)); hasOutputFormat = true; }
/** * Parses the sample header. */ private void parseHeader() { headerScratchBits.setPosition(0); sampleSize = Ac3Util.parseFrameSize(headerScratchBits); if (mediaFormat == null) { headerScratchBits.setPosition(0); mediaFormat = Ac3Util.parseFrameAc3Format(headerScratchBits); output.format(mediaFormat); bitrate = Ac3Util.getBitrate(sampleSize, mediaFormat.sampleRate); } frameDurationUs = (int) (1000L * 8 * sampleSize / bitrate); }
this.output.format(format);
mp4Track.trackOutput.format(track.mediaFormat); tracks.add(mp4Track);
private void onMoovContainerAtomRead(ContainerAtom moov) { List<Atom.LeafAtom> moovChildren = moov.leafChildren; int moovChildrenSize = moovChildren.size(); DrmInitData.Mapped drmInitData = null; for (int i = 0; i < moovChildrenSize; i++) { LeafAtom child = moovChildren.get(i); if (child.type == Atom.TYPE_pssh) { if (drmInitData == null) { drmInitData = new DrmInitData.Mapped(MimeTypes.VIDEO_MP4); } byte[] psshData = child.data.data; drmInitData.put(PsshAtomUtil.parseUuid(psshData), psshData); } } if (drmInitData != null) { extractorOutput.drmInitData(drmInitData); } ContainerAtom mvex = moov.getContainerAtomOfType(Atom.TYPE_mvex); extendsDefaults = parseTrex(mvex.getLeafAtomOfType(Atom.TYPE_trex).data); track = AtomParsers.parseTrak(moov.getContainerAtomOfType(Atom.TYPE_trak), moov.getLeafAtomOfType(Atom.TYPE_mvhd)); Assertions.checkState(track != null); trackOutput.format(track.mediaFormat); }
MediaFormat.NO_VALUE, MpegAudioHeader.MAX_FRAME_SIZE_BYTES, C.UNKNOWN_TIME_US, header.channels, header.sampleRate, null); output.format(mediaFormat); hasOutputFormat = true;
/** * Parses the sample header. */ private void parseHeader() { adtsScratch.setPosition(0); if (!hasOutputFormat) { int audioObjectType = adtsScratch.readBits(2) + 1; int sampleRateIndex = adtsScratch.readBits(4); adtsScratch.skipBits(1); int channelConfig = adtsScratch.readBits(3); byte[] audioSpecificConfig = CodecSpecificDataUtil.buildAacAudioSpecificConfig( audioObjectType, sampleRateIndex, channelConfig); Pair<Integer, Integer> audioParams = CodecSpecificDataUtil.parseAacAudioSpecificConfig( audioSpecificConfig); MediaFormat mediaFormat = MediaFormat.createAudioFormat(MimeTypes.AUDIO_AAC, MediaFormat.NO_VALUE, MediaFormat.NO_VALUE, audioParams.second, audioParams.first, Collections.singletonList(audioSpecificConfig)); frameDurationUs = (C.MICROS_PER_SECOND * 1024L) / mediaFormat.sampleRate; output.format(mediaFormat); hasOutputFormat = true; } else { adtsScratch.skipBits(10); } adtsScratch.skipBits(4); sampleSize = adtsScratch.readBits(13) - 2 /* the sync word */ - HEADER_SIZE; if (hasCrc) { sampleSize -= CRC_SIZE; } }
output.format(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H265, MediaFormat.NO_VALUE, MediaFormat.NO_VALUE, C.UNKNOWN_TIME_US, picWidthInLumaSamples, picHeightInLumaSamples, 0, pixelWidthHeightRatio, Collections.singletonList(csd)));
setupSeeker(extractorInput, headerPosition); extractorOutput.seekMap(seeker); trackOutput.format(MediaFormat.createAudioFormat(synchronizedHeader.mimeType, MediaFormat.NO_VALUE, MpegAudioHeader.MAX_FRAME_SIZE_BYTES, seeker.getDurationUs(), synchronizedHeader.channels, synchronizedHeader.sampleRate, null));