@Override public void run() { // wait for start while (!started) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } started = player.getState() == Controller.Started; if (started) { break; } } // try to grab single image (wait 10 seconds) for (int i = 0; i < 100; i++) { Buffer buffer = grabber.grabFrame(); if (buffer.getLength() == 0) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } semaphore.release(); }
/** * Replaces the media data contained in a specific <tt>Buffer</tt> with a * compatible representation of silence. * * @param buffer the <tt>Buffer</tt> the data contained in which is to be * replaced with silence */ public static void mute(Buffer buffer) { Object data = buffer.getData(); if (data != null) { Class<?> dataClass = data.getClass(); final int fromIndex = buffer.getOffset(); final int toIndex = fromIndex + buffer.getLength(); if (Format.byteArray.equals(dataClass)) Arrays.fill((byte[]) data, fromIndex, toIndex, (byte) 0); else if (Format.intArray.equals(dataClass)) Arrays.fill((int[]) data, fromIndex, toIndex, 0); else if (Format.shortArray.equals(dataClass)) Arrays.fill((short[]) data, fromIndex, toIndex, (short) 0); buffer.setData(data); } }
/** * {@inheritDoc} */ @Override public int process(Buffer buffer) { if (buffer.isDiscard()) return BUFFER_PROCESSED_OK; if (buffer.getLength() <= 0) return BUFFER_PROCESSED_OK; int ret; audioSystem.lockMainloop(); try { ret = processWithMainloopLock(buffer); } finally { audioSystem.unlockMainloop(); } if ((ret != BUFFER_PROCESSED_FAILED) && (buffer.getLength() > 0)) ret |= INPUT_BUFFER_NOT_CONSUMED; return ret; }
/** * Resets the states of this <tt>DePacketizer</tt> and a specific output * <tt>Buffer</tt> so that they are ready to have this <tt>DePacketizer</tt> * process input RTP payloads. * * @param outBuffer the output <tt>Buffer</tt> to be reset * @return the flags such as <tt>BUFFER_PROCESSED_OK</tt> and * <tt>OUTPUT_BUFFER_NOT_FILLED</tt> to be returned by * {@link #process(Buffer, Buffer)} */ private int reset(Buffer outBuffer) { if (OUTPUT_INCOMPLETE_BUFFER && outBuffer.getLength() > 0) { Object outData = outBuffer.getData(); if (outData instanceof byte[]) { return (BUFFER_PROCESSED_OK | INPUT_BUFFER_NOT_CONSUMED); } } outBuffer.setLength(0); return OUTPUT_BUFFER_NOT_FILLED; } }
return; dataLength = buffer.getLength(); if (dataLength > 0)
= read(cacheBuffer, buffer, bufferOffset); if ((cacheBuffer.getLength() <= 0) || (cacheBuffer.getData() == null)) cache.remove(0);
/** * Gets the length in milliseconds of the media in a specific * <tt>Buffer</tt> (often referred to as duration). * * @param buffer the <tt>Buffer</tt> which contains media the length in * milliseconds of which is to be calculated * @return the length in milliseconds of the media in <tt>buffer</tt> if * there actually is media in <tt>buffer</tt> and its length in milliseconds * can be calculated; otherwise, <tt>0</tt> */ private long getLengthInMillis(Buffer buffer) { int length = buffer.getLength(); if (length < 1) return 0; Format format = buffer.getFormat(); if (format == null) { format = getFormat(); if (format == null) return 0; } if (!(format instanceof AudioFormat)) return 0; AudioFormat audioFormat = (AudioFormat) format; long duration = audioFormat.computeDuration(length); return (duration < 1) ? 0 : (duration / 1000000); }
&& (outBuffer.getLength() >= (NAL_PREFIX.length + 1 + 1)))
int inputLength = inputBuffer.getLength(); int inputOffset = inputBuffer.getOffset(); processed = BUFFER_PROCESSED_FAILED; inputBuffer.setLength(inputBuffer.getLength() - inputLength); inputBuffer.setOffset(inputBuffer.getOffset() + inputLength); getOutputFormat(), outputBuffer.getLength(), outputBuffer.getOffset()); outputBuffer.setDuration(duration); if (inputBuffer.getLength() > 0) processed |= INPUT_BUFFER_NOT_CONSUMED;
public int process(Buffer inputBuffer, Buffer outputBuffer) { if (!checkInputBuffer(inputBuffer)) return BUFFER_PROCESSED_FAILED; if (isEOM(inputBuffer)) { propagateEOM(outputBuffer); return BUFFER_PROCESSED_OK; } Format newFormat = inputBuffer.getFormat(); if (lastFormat != newFormat) initConverter((AudioFormat) newFormat); int inpLength = inputBuffer.getLength(); int outLength = calculateOutputSize(inputBuffer.getLength()); byte[] inpData = (byte[]) inputBuffer.getData(); byte[] outData = validateByteArraySize(outputBuffer, outLength); convert(inpData, inputBuffer.getOffset(), inpLength, outData, 0); updateOutput(outputBuffer, outputFormat, outLength, 0); return BUFFER_PROCESSED_OK; } }
int srcLen = buf.getLength(); int srcOff = buf.getOffset();
/** * @see AbstractCodec2#doProcess(Buffer, Buffer) */ @Override protected int doProcess(Buffer inputBuffer, Buffer outputBuffer) { byte[] input = (byte[]) inputBuffer.getData(); int outputOffset = outputBuffer.getOffset(); int outputLength = inputBuffer.getLength() * 4; byte[] output = validateByteArraySize( outputBuffer, outputOffset + outputLength, true); JNIDecoder.g722_decoder_process( decoder, input, inputBuffer.getOffset(), output, outputOffset, outputLength); outputBuffer.setDuration( (outputLength * 1000000L) / (16L /* kHz */ * 2L /* sampleSizeInBits / 8 */)); outputBuffer.setFormat(getOutputFormat()); outputBuffer.setLength(outputLength); return BUFFER_PROCESSED_OK; } }
if(inputBuffer.isDiscard() || ((inLen = inputBuffer.getLength()) == 0))
byte[] outData = validateByteArraySize(outputBuffer, inData.length * 2); int inpLength = inputBuffer.getLength(); int outLength = 2 * inpLength;
int bufferLength = buffer.getLength(); if (bufferLength == 0)
/** * @see AbstractCodec2#doProcess(Buffer, Buffer) */ @Override protected int doProcess(Buffer inputBuffer, Buffer outputBuffer) { int inputOffset = inputBuffer.getOffset(); int inputLength = inputBuffer.getLength(); byte[] input = (byte[]) inputBuffer.getData(); int outputOffset = outputBuffer.getOffset(); int outputLength = inputLength / 4; byte[] output = validateByteArraySize( outputBuffer, outputOffset + outputLength, true); JNIEncoder.g722_encoder_process( encoder, input, inputOffset, output, outputOffset, outputLength); outputBuffer.setDuration(computeDuration(outputLength)); outputBuffer.setFormat(getOutputFormat()); outputBuffer.setLength(outputLength); return BUFFER_PROCESSED_OK; }
/** * 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; } }
@Override protected int doProcess(Buffer inBuffer, Buffer outBuffer) int inLength = inBuffer.getLength();