@Override public void outputVideoPacket(Packet packet, VideoCodecMeta codecMeta) throws IOException { if (!outputFormat.isVideo()) return; if (videoOutputTrack == null) { videoOutputTrack = muxer.addVideoTrack(outputVideoCodec, codecMeta); } videoOutputTrack.addFrame(packet); framesOutput = true; }
@Override public void outputAudioPacket(Packet audioPkt, AudioCodecMeta audioCodecMeta) throws IOException { if (!outputFormat.isAudio()) return; if (audioOutputTrack == null) { audioOutputTrack = muxer.addAudioTrack(outputAudioCodec, audioCodecMeta); } audioOutputTrack.addFrame(audioPkt); framesOutput = true; }
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; }
private static Codec detectVideoDecoder(DemuxerTrack track) throws IOException { DemuxerTrackMeta meta = track.getMeta(); if (meta != null) { Codec codec = meta.getCodec(); if (codec != null) return codec; } Packet packet = track.nextFrame(); if (packet == null) return null; return JCodecUtil.detectDecoder(packet.getData()); }
public static RunLength.Long parse(ByteBuffer bb) { RunLength.Long rl = new RunLength.Long(); int recCount = bb.getInt(); for (int i = 0; i < recCount; i++) { int count = (bb.get() & 0xff) + 1; long value = bb.getLong(); rl.counts.add(count); rl.values.add(value); } return rl; }
@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); }
private int detectKeyFrame(int start) throws IOException { int[] seekFrames = videoTrack.getMeta().getSeekFrames(); if (seekFrames == null) return start; int prev = seekFrames[0]; for (int i = 1; i < seekFrames.length; i++) { if (seekFrames[i] > start) break; prev = seekFrames[i]; } return prev; }
@Override public AudioCodecMeta getAudioCodecMeta() { if (audioInputTrack != null && audioInputTrack.getMeta() != null && audioInputTrack.getMeta().getAudioCodecMeta() != null) { return audioInputTrack.getMeta().getAudioCodecMeta(); } return audioCodecMeta; }
public VLCBuilder() { this.forward = new IntIntMap(); this.inverse = new IntIntMap(); this.codes = IntArrayList.createIntArrayList(); this.codesSizes = IntArrayList.createIntArrayList(); }
protected EncodedFrame encodeVideo(Picture frame, ByteBuffer _out) { if (!outputFormat.isVideo()) return null; return videoEncoder.encodeFrame(frame, _out); }
@Override public AudioCodecMeta getCodecMeta(ByteBuffer data) throws IOException { return org.jcodec.common.AudioCodecMeta.fromAudioFormat(format); } }
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; } }