/** * Fills the data of <tt>buf</tt> to at most <tt>samples</tt> samples of * silence. Returns the actual number of samples used. * @param buf the <tt>Buffer</tt> to fill with silence * @param samples the number of samples of silence to fill. * @return the number of samples of silence added in <tt>buf</tt>. */ private int setSilence(Buffer buf, int samples) { int samplesToFill = Math.min(samples, MAX_SAMPLES_PER_PACKET); int len = samplesToFill * sampleSizeInBits / 8; byte[] data = validateByteArraySize(buf, len, false); Arrays.fill(data, (byte)0); buf.setOffset(0); buf.setLength(len); return samplesToFill; }
/** * Updates the <tt>format</tt>, <tt>length</tt> and <tt>offset</tt> of a * specific output <tt>Buffer</tt> to specific values. * * @param outputBuffer the output <tt>Buffer</tt> to update the properties * of * @param format the <tt>Format</tt> to set on <tt>outputBuffer</tt> * @param length the length to set on <tt>outputBuffer</tt> * @param offset the offset to set on <tt>outputBuffer</tt> */ protected void updateOutput( Buffer outputBuffer, Format format, int length, int offset) { outputBuffer.setFormat(format); outputBuffer.setLength(length); outputBuffer.setOffset(offset); }
protected short[] validateShortArraySize(Buffer buffer, int newSize) { Object data = buffer.getData(); short[] newShorts; if (data instanceof short[]) { short[] shorts = (short[]) data; if (shorts.length >= newSize) return shorts; newShorts = new short[newSize]; System.arraycopy(shorts, 0, newShorts, 0, shorts.length); } else { newShorts = new short[newSize]; buffer.setLength(0); buffer.setOffset(0); } buffer.setData(newShorts); return newShorts; } }
@Override public void transferData(PushBufferStream stream) { buffer.setDiscard(false); buffer.setFlags(0); buffer.setLength(0); buffer.setOffset(0); AudioMixerPushBufferStream.this.transferData(buffer); } };
/** * Implements PushBufferStream#read(Buffer). Delegates to the wrapped * PushSourceStream by allocating a new byte[] buffer of size equal to * PushSourceStream#getMinimumTransferSize(). * * @param buffer the <tt>Buffer</tt> to read * @throws IOException if I/O related errors occurred during read operation */ public void read(Buffer buffer) throws IOException { byte[] data = (byte[]) buffer.getData(); int minimumTransferSize = stream.getMinimumTransferSize(); if ((data == null) || (data.length < minimumTransferSize)) { data = new byte[minimumTransferSize]; buffer.setData(data); } buffer.setOffset(0); read(buffer, data, 0, minimumTransferSize); }
buffer.setOffset(0);
buffer.setOffset(0);
buf.setOffset(0);
/** * Reads byte data from this stream into a specific <tt>Buffer</tt> * which is to use a specific array of bytes for its data. * * @param buffer the <tt>Buffer</tt> to read byte data into from this * instance * @param data the array of <tt>byte</tt>s to read data into from this * instance and to be set as the data of the specified <tt>buffer</tt> * @throws IOException if I/O related errors occurred during read operation */ protected void read(Buffer buffer, byte[] data, int offset, int length) throws IOException { int numberOfBytesRead = doRead(buffer, data, offset, length); buffer.setData(data); if (numberOfBytesRead >= 0) { buffer.setLength(numberOfBytesRead); } else { buffer.setLength(0); if (numberOfBytesRead == -1) buffer.setEOM(true); } buffer.setOffset(offset); Format format = getFormat(); if (format != null) buffer.setFormat(format); }
buf.setOffset(0);
/** * decode the buffer * @param inputBuffer Buffer * @param outputBuffer Buffer * @return int */ public int process(Buffer inputBuffer, Buffer outputBuffer) { if (!checkInputBuffer(inputBuffer)) { return BUFFER_PROCESSED_FAILED; } if (isEOM(inputBuffer)) { propagateEOM(outputBuffer); return BUFFER_PROCESSED_OK; } Object outData = outputBuffer.getData(); outputBuffer.setData(inputBuffer.getData()); inputBuffer.setData(outData); outputBuffer.setLength(inputBuffer.getLength()); outputBuffer.setFormat(outputFormat); outputBuffer.setOffset(inputBuffer.getOffset()); return BUFFER_PROCESSED_OK; } }
buffer.setOffset(offset + writtenSize);
inBuffer.setOffset(inOffset); outBuffer.setLength(outLength);
buffer.setOffset(rtpPacket.getOffset()); buffer.setLength(rtpPacket.getPayloadLength());
resamplerOutBuffer.setData(resamplerData); resamplerOutBuffer.setLength(0); resamplerOutBuffer.setOffset(0);
outBuffer.setOffset(0); outBuffer.setTimeStamp(inBuffer.getTimeStamp()); return BUFFER_PROCESSED_OK;