Java 类com.google.android.exoplayer.upstream.Allocation 实例源码

项目:miku    文件:RollingSampleBuffer.java   
/**
 * Reads data from the front of the rolling buffer.
 *
 * @param absolutePosition The absolute position from which data should be read.
 * @param target The buffer into which data should be written.
 * @param length The number of bytes to read.
 */
private void readData(long absolutePosition, ByteBuffer target, int length,String mimeType) {
  int remaining = length;
  while (remaining > 0) {
    dropDownstreamTo(absolutePosition);
    int positionInAllocation = (int) (absolutePosition - totalBytesDropped);
    int toCopy = Math.min(remaining, allocationLength - positionInAllocation);
    Allocation allocation = dataQueue.peek();
    if (mimeType.contains("video")){
      target.put(allocation.data, allocation.translateOffset(positionInAllocation), toCopy);
    }else {
      target.put(allocation.data, allocation.translateOffset(positionInAllocation), toCopy);
    }
    absolutePosition += toCopy;
    remaining -= toCopy;
  }
}
项目:miku    文件:RollingSampleBuffer.java   
/**
 * Reads data from the front of the rolling buffer.
 *
 * @param absolutePosition The absolute position from which data should be read.
 * @param target The array into which data should be written.
 * @param length The number of bytes to read.
 */
// TODO: Consider reducing duplication of this method and the one above.
private void readData(long absolutePosition, byte[] target, int length) {
  int bytesRead = 0;
  while (bytesRead < length) {
    dropDownstreamTo(absolutePosition);
    int positionInAllocation = (int) (absolutePosition - totalBytesDropped);
    int toCopy = Math.min(length - bytesRead, allocationLength - positionInAllocation);
    Allocation allocation = dataQueue.peek();
    System.arraycopy(allocation.data, allocation.translateOffset(positionInAllocation), target,
        bytesRead, toCopy);
    absolutePosition += toCopy;
    bytesRead += toCopy;
  }
}
项目:ExoPlayer-Demo    文件:RollingSampleBuffer.java   
/**
 * Reads data from the front of the rolling buffer.
 *
 * @param absolutePosition The absolute position from which data should be read.
 * @param target The buffer into which data should be written.
 * @param length The number of bytes to read.
 */
private void readData(long absolutePosition, ByteBuffer target, int length) {
  int remaining = length;
  while (remaining > 0) {
    dropDownstreamTo(absolutePosition);
    int positionInAllocation = (int) (absolutePosition - totalBytesDropped);
    int toCopy = Math.min(remaining, allocationLength - positionInAllocation);
    Allocation allocation = dataQueue.peek();
    target.put(allocation.data, allocation.translateOffset(positionInAllocation), toCopy);
    absolutePosition += toCopy;
    remaining -= toCopy;
  }
}
项目:ExoPlayer-Demo    文件:RollingSampleBuffer.java   
/**
 * Reads data from the front of the rolling buffer.
 *
 * @param absolutePosition The absolute position from which data should be read.
 * @param target The array into which data should be written.
 * @param length The number of bytes to read.
 */
// TODO: Consider reducing duplication of this method and the one above.
private void readData(long absolutePosition, byte[] target, int length) {
  int bytesRead = 0;
  while (bytesRead < length) {
    dropDownstreamTo(absolutePosition);
    int positionInAllocation = (int) (absolutePosition - totalBytesDropped);
    int toCopy = Math.min(length - bytesRead, allocationLength - positionInAllocation);
    Allocation allocation = dataQueue.peek();
    System.arraycopy(allocation.data, allocation.translateOffset(positionInAllocation), target,
        bytesRead, toCopy);
    absolutePosition += toCopy;
    bytesRead += toCopy;
  }
}
项目:ExoPlayer    文件:RollingSampleBuffer.java   
/**
 * Reads data from the front of the rolling buffer.
 *
 * @param absolutePosition The absolute position from which data should be read.
 * @param target The buffer into which data should be written.
 * @param length The number of bytes to read.
 */
private void readData(long absolutePosition, ByteBuffer target, int length) {
  int remaining = length;
  while (remaining > 0) {
    dropDownstreamTo(absolutePosition);
    int positionInAllocation = (int) (absolutePosition - totalBytesDropped);
    int toCopy = Math.min(remaining, allocationLength - positionInAllocation);
    Allocation allocation = dataQueue.peek();
    target.put(allocation.data, allocation.translateOffset(positionInAllocation), toCopy);
    absolutePosition += toCopy;
    remaining -= toCopy;
  }
}
项目:ExoPlayer    文件:RollingSampleBuffer.java   
/**
 * Reads data from the front of the rolling buffer.
 *
 * @param absolutePosition The absolute position from which data should be read.
 * @param target The array into which data should be written.
 * @param length The number of bytes to read.
 */
// TODO: Consider reducing duplication of this method and the one above.
private void readData(long absolutePosition, byte[] target, int length) {
  int bytesRead = 0;
  while (bytesRead < length) {
    dropDownstreamTo(absolutePosition);
    int positionInAllocation = (int) (absolutePosition - totalBytesDropped);
    int toCopy = Math.min(length - bytesRead, allocationLength - positionInAllocation);
    Allocation allocation = dataQueue.peek();
    System.arraycopy(allocation.data, allocation.translateOffset(positionInAllocation), target,
        bytesRead, toCopy);
    absolutePosition += toCopy;
    bytesRead += toCopy;
  }
}