public static AudioCodecMeta createAudioCodecMeta(String fourcc, int sampleSize, int channelCount, int sampleRate, ByteOrder endian, boolean pcm, Label[] labels, ByteBuffer codecPrivate) { AudioCodecMeta self = new AudioCodecMeta(fourcc, codecPrivate); self.sampleSize = sampleSize; self.channelCount = channelCount; self.sampleRate = sampleRate; self.endian = endian; self.pcm = pcm; self.labels = labels; return self; }
@Override public AudioCodecMeta getCodecMeta(ByteBuffer data) throws IOException { return org.jcodec.common.AudioCodecMeta.fromAudioFormat(format); } }
private void extractMeta() { if (!validHeader(runningFour)) return; int layer = 3 - getField(runningFour, LAYER); int channelCount = getField(runningFour, CHANNELS) == 3 ? 1 : 2; int version = getField(runningFour, VERSION); sampleRate = freqTab[getField(runningFour, SAMPLE_RATE)] >> rateReductTab[version]; AudioCodecMeta codecMeta = AudioCodecMeta.createAudioCodecMeta(".mp3", 16, channelCount, sampleRate, ByteOrder.LITTLE_ENDIAN, false, null, null); Codec codec = layer == 2 ? Codec.MP3 : (layer == 1 ? Codec.MP2 : Codec.MP1); meta = new DemuxerTrackMeta(TrackType.AUDIO, codec, 0, null, 0, null, null, codecMeta); }
@Override public AudioCodecMeta getCodecMeta(ByteBuffer _data) throws IOException { ByteBuffer frame = _data.duplicate(); frame.order(ByteOrder.BIG_ENDIAN); int h = frame.getInt(); int frameSize = (h >> 16) & 0xffff; if (frame.remaining() != frameSize) throw new IllegalArgumentException("Wrong s302m frame"); int channels = ((h >> 14) & 0x0003) * 2 + 2; int sampleSizeInBits = ((h >> 4) & 0x0003) * 4 + 16; return org.jcodec.common.AudioCodecMeta.fromAudioFormat(new AudioFormat(SAMPLE_RATE, sampleSizeInBits, channels, true, true)); } }
@Override public MuxerTrack addAudioTrack(Codec codec, AudioCodecMeta meta) { AudioFormat format = meta.getFormat(); if (codec == Codec.PCM) { return addPCMAudioTrack(format); } else { return addCompressedAudioTrack(codec, format); } } }
public static AudioCodecMeta createAudioCodecMeta2(String fourcc, int sampleSize, int channelCount, int sampleRate, ByteOrder endian, boolean pcm, Label[] labels, int samplesPerPacket, int bytesPerPacket, int bytesPerFrame, ByteBuffer codecPrivate) { AudioCodecMeta self = new AudioCodecMeta(fourcc, codecPrivate); self.sampleSize = sampleSize; self.channelCount = channelCount; self.sampleRate = sampleRate; self.endian = endian; self.samplesPerPacket = samplesPerPacket; self.bytesPerPacket = bytesPerPacket; self.bytesPerFrame = bytesPerFrame; self.pcm = pcm; self.labels = labels; return self; }
@Override public AudioCodecMeta getCodecMeta(ByteBuffer data) throws IOException { MpaHeader header = MpaHeader.read_header(data.duplicate()); AudioFormat format = new AudioFormat(frequencies[header.version][header.sampleFreq], 16, header.mode == SINGLE_CHANNEL ? 1 : 2, true, false); return AudioCodecMeta.fromAudioFormat(format); }; }
private AudioDecoder createAudioDecoder(ByteBuffer codecPrivate) throws AACException { switch (inputAudioCodec.v2) { case AAC: return new AACDecoder(codecPrivate); case PCM: return new RawAudioDecoder(getAudioMeta().getAudioCodecMeta().getFormat()); } return null; }
public static AudioCodecMeta createAudioCodecMeta3(String fourcc, ByteBuffer codecPrivate, AudioFormat format, boolean pcm, Label[] labels) { AudioCodecMeta self = new AudioCodecMeta(fourcc, codecPrivate); self.sampleSize = format.getSampleSizeInBits() >> 3; self.channelCount = format.getChannels(); self.sampleRate = format.getSampleRate(); self.endian = format.isBigEndian() ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN; self.pcm = pcm; self.labels = labels; return self; }
int channelCount = 1 + (b1 & 7); int sampleSizeInBits = 16 + ((b1 >> 6) & 3) * 4; return org.jcodec.common.AudioCodecMeta.fromAudioFormat(new AudioFormat(sampleRate, sampleSizeInBits, channelCount, true, false));
@Override public AudioFrameWithPacket getNextAudioFrame() throws IOException { Packet audioPkt = inputAudioPacket(); if (audioPkt == null) return null; AudioBuffer audioBuffer; if (inputAudioCodec.v2 == Codec.PCM) { DemuxerTrackMeta audioMeta = getAudioMeta(); audioBuffer = new AudioBuffer(audioPkt.getData(), audioMeta.getAudioCodecMeta().getFormat(), audioMeta.getTotalFrames()); } else { audioBuffer = audioDecoder.decodeFrame(audioPkt.getData(), null); } return new AudioFrameWithPacket(audioBuffer, audioPkt); }
public static AudioCodecMeta fromAudioFormat(AudioFormat format) { AudioCodecMeta self = new AudioCodecMeta(null, null); self.sampleSize = format.getSampleSizeInBits() >> 3; self.channelCount = format.getChannels(); self.sampleRate = format.getSampleRate(); self.endian = format.isBigEndian() ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN; self.pcm = false; return self; } }
@Override public DemuxerTrackMeta getMeta() { AudioFormat format = header.getFormat(); AudioCodecMeta audioCodecMeta = org.jcodec.common.AudioCodecMeta.fromAudioFormat(format); long totalFrames = dataSize / format.getFrameSize(); return new DemuxerTrackMeta(TrackType.AUDIO, Codec.PCM, (double) totalFrames / format.getFrameRate(), null, (int) totalFrames, null, null, audioCodecMeta); }
@Override public AudioCodecMeta getCodecMeta(ByteBuffer data) throws IOException { SampleBuffer sampleBuffer = new SampleBuffer(); decoder.decodeFrame(NIOUtils.toArray(data), sampleBuffer); sampleBuffer.setBigEndian(false); return org.jcodec.common.AudioCodecMeta.fromAudioFormat(toAudioFormat(sampleBuffer)); }
@Override public DemuxerTrackMeta getMeta() { AudioSampleEntry ase = (AudioSampleEntry) getSampleEntries()[0]; AudioCodecMeta audioCodecMeta = org.jcodec.common.AudioCodecMeta.fromAudioFormat(ase.getFormat()); return new DemuxerTrackMeta(TrackType.AUDIO, Codec.codecByFourcc(getFourcc()), (double) duration / timescale, null, totalFrames, null, null, audioCodecMeta); } }
@Override public void outputAudioFrame(AudioFrameWithPacket audioFrame) throws IOException { if (!outputFormat.isAudio() || outputAudioCodec == null) return; outputAudioPacket(Packet.createPacketWithData(audioFrame.getPacket(), encodeAudio(audioFrame.getAudio())), org.jcodec.common.AudioCodecMeta.fromAudioFormat(audioFrame.getAudio().getFormat())); }
} else if (type == MP4TrackType.SOUND) { AudioSampleEntry ase = (AudioSampleEntry) track.getSampleEntries()[0]; audioCodecMeta = AudioCodecMeta.fromAudioFormat(ase.getFormat());