@Override public void skipFrame(Packet frame) throws IOException { updateState(frame); List<ByteBuffer> buffers = splitMOVPacket(frame.getData(), avcCBox); for (int i = 0; i < buffers.size(); i++) { decoder.skipFrame(buffers.get(i)); } }
private void updateState(Packet packet) throws IOException { int eNo = ((MP4Packet) packet).getEntryNo(); if (eNo != curENo) { curENo = eNo; avcCBox = parseAVCC((VideoSampleEntry) sampleEntries[curENo]); if (decoder != null) { decoder.delete(); } decoder = new OpenH264Decoder(); for (ByteBuffer sps : avcCBox.getSpsList()) { decoder.decodeFrame(toDirectByteBuffer(sps, SPS_HEADER)); } for (ByteBuffer pps : avcCBox.getPpsList()) { decoder.decodeFrame(toDirectByteBuffer(pps, PPS_HEADER)); } } }
demuxerHelper = new AVCDemuxerHelper(videoTrack.getSampleEntries());
private void updateState(Packet packet) throws IOException { int eNo = ((MP4Packet) packet).getEntryNo(); if (eNo != curENo) { curENo = eNo; avcCBox = parseAVCC((VideoSampleEntry) sampleEntries[curENo]); if (decoder != null) { decoder.delete(); } decoder = new OpenH264Decoder(); for (ByteBuffer sps : avcCBox.getSpsList()) { decoder.decodeFrame(toDirectByteBuffer(sps, SPS_HEADER)); } for (ByteBuffer pps : avcCBox.getPpsList()) { decoder.decodeFrame(toDirectByteBuffer(pps, PPS_HEADER)); } } }
demuxerHelper = new AVCDemuxerHelper(videoTrack.getSampleEntries());
@Override public void skipFrame(Packet frame) throws IOException { updateState(frame); List<ByteBuffer> buffers = splitMOVPacket(frame.getData(), avcCBox); for (int i = 0; i < buffers.size(); i++) { decoder.skipFrame(buffers.get(i)); } }
/* package-private */public YUVPicture getFrame(Packet frame) throws IOException { updateState(frame); List<ByteBuffer> buffers = splitMOVPacket(frame.getData(), avcCBox); YUVPicture picture = null; for (int i = 0; i < buffers.size(); i++) { YUVPicture decode = decoder.decodeFrame(buffers.get(i)); if (decode != null) { picture = decode; } } return picture; }
/* package-private */public YUVPicture getFrame(Packet frame) throws IOException { updateState(frame); List<ByteBuffer> buffers = splitMOVPacket(frame.getData(), avcCBox); YUVPicture picture = null; for (int i = 0; i < buffers.size(); i++) { YUVPicture decode = decoder.decodeFrame(buffers.get(i)); if (decode != null) { picture = decode; } } return picture; }