/* * Java port of ffmpeg VOB demultiplexer. * Contains some liba52 and Xine code (GPL) * Copyright (c) 2003 Jonathan Hueber. * * Copyright (c) 2000, 2001, 2002 Fabrice Bellard. * * vobdemux is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * vobdemux is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package net.sourceforge.jffmpeg.demux.vob; import java.io.IOException; import java.io.InputStream; import net.sourceforge.jffmpeg.GPLLicense; class DataBuffer implements GPLLicense { protected byte[] buffer = new byte[ 10000 ]; protected int size = 0; public final byte[] getBuffer() { return buffer; } public final int getCurrentSize() { return size; } public void readData( long timeStamp, InputStream in, int length ) throws IOException { if ( buffer.length < length + size ) { byte[] temp = new byte[ (length + size) * 2 ]; System.arraycopy( buffer, 0, temp, 0, size ); buffer = temp; } int p = size; int read = 0; while ( length > 0 ) { read = in.read( buffer, size, length ); if ( read < 0 ) throw new IOException( "End of Stream" ); length -= read; size += read; } } public void resetBuffer( byte[] buffer ) { this.buffer = buffer; size = 0; } /* public int getFrameEnd() { return frameEnd; } public void drop() { size = 0; frameEnd = 0; } */ public void setBuffer( byte[] buffer, int existingSize ) { this.buffer = buffer; size = existingSize; } public void bufferData() throws IOException { } /** * Discard all data (pending seek) */ public void drop() { size = 0; } }