当前位置: 首页>>代码示例>>Java>>正文


Java DecoderInputBuffer.isEncrypted方法代码示例

本文整理汇总了Java中com.google.android.exoplayer2.decoder.DecoderInputBuffer.isEncrypted方法的典型用法代码示例。如果您正苦于以下问题:Java DecoderInputBuffer.isEncrypted方法的具体用法?Java DecoderInputBuffer.isEncrypted怎么用?Java DecoderInputBuffer.isEncrypted使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.google.android.exoplayer2.decoder.DecoderInputBuffer的用法示例。


在下文中一共展示了DecoderInputBuffer.isEncrypted方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: readData

import com.google.android.exoplayer2.decoder.DecoderInputBuffer; //导入方法依赖的package包/类
/**
 * Attempts to read from the queue.
 *
 * @param formatHolder A {@link FormatHolder} to populate in the case of reading a format.
 * @param buffer A {@link DecoderInputBuffer} to populate in the case of reading a sample or the
 *     end of the stream. If the end of the stream has been reached, the
 *     {@link C#BUFFER_FLAG_END_OF_STREAM} flag will be set on the buffer.
 * @param formatRequired Whether the caller requires that the format of the stream be read even if
 *     it's not changing. A sample will never be read if set to true, however it is still possible
 *     for the end of stream or nothing to be read.
 * @param loadingFinished True if an empty queue should be considered the end of the stream.
 * @param decodeOnlyUntilUs If a buffer is read, the {@link C#BUFFER_FLAG_DECODE_ONLY} flag will
 *     be set if the buffer's timestamp is less than this value.
 * @return The result, which can be {@link C#RESULT_NOTHING_READ}, {@link C#RESULT_FORMAT_READ} or
 *     {@link C#RESULT_BUFFER_READ}.
 */
public int readData(FormatHolder formatHolder, DecoderInputBuffer buffer, boolean formatRequired,
    boolean loadingFinished, long decodeOnlyUntilUs) {
  int result = infoQueue.readData(formatHolder, buffer, formatRequired, loadingFinished,
      downstreamFormat, extrasHolder);
  switch (result) {
    case C.RESULT_FORMAT_READ:
      downstreamFormat = formatHolder.format;
      return C.RESULT_FORMAT_READ;
    case C.RESULT_BUFFER_READ:
      if (!buffer.isEndOfStream()) {
        if (buffer.timeUs < decodeOnlyUntilUs) {
          buffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY);
        }
        // Read encryption data if the sample is encrypted.
        if (buffer.isEncrypted()) {
          readEncryptionData(buffer, extrasHolder);
        }
        // Write the sample data into the holder.
        buffer.ensureSpaceForWrite(extrasHolder.size);
        readData(extrasHolder.offset, buffer.data, extrasHolder.size);
        // Advance the read head.
        dropDownstreamTo(extrasHolder.nextOffset);
      }
      return C.RESULT_BUFFER_READ;
    case C.RESULT_NOTHING_READ:
      return C.RESULT_NOTHING_READ;
    default:
      throw new IllegalStateException();
  }
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:47,代码来源:DefaultTrackOutput.java

示例2: readData

import com.google.android.exoplayer2.decoder.DecoderInputBuffer; //导入方法依赖的package包/类
/**
 * Attempts to read from the queue.
 *
 * @param formatHolder A {@link FormatHolder} to populate in the case of reading a format.
 * @param buffer A {@link DecoderInputBuffer} to populate in the case of reading a sample or the
 *     end of the stream. If the end of the stream has been reached, the
 *     {@link C#BUFFER_FLAG_END_OF_STREAM} flag will be set on the buffer.
 * @param loadingFinished True if an empty queue should be considered the end of the stream.
 * @param decodeOnlyUntilUs If a buffer is read, the {@link C#BUFFER_FLAG_DECODE_ONLY} flag will
 *     be set if the buffer's timestamp is less than this value.
 * @return The result, which can be {@link C#RESULT_NOTHING_READ}, {@link C#RESULT_FORMAT_READ} or
 *     {@link C#RESULT_BUFFER_READ}.
 */
public int readData(FormatHolder formatHolder, DecoderInputBuffer buffer, boolean loadingFinished,
    long decodeOnlyUntilUs) {
  switch (infoQueue.readData(formatHolder, buffer, downstreamFormat, extrasHolder)) {
    case C.RESULT_NOTHING_READ:
      if (loadingFinished) {
        buffer.setFlags(C.BUFFER_FLAG_END_OF_STREAM);
        return C.RESULT_BUFFER_READ;
      }
      return C.RESULT_NOTHING_READ;
    case C.RESULT_FORMAT_READ:
      downstreamFormat = formatHolder.format;
      return C.RESULT_FORMAT_READ;
    case C.RESULT_BUFFER_READ:
      if (buffer.timeUs < decodeOnlyUntilUs) {
        buffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY);
      }
      // Read encryption data if the sample is encrypted.
      if (buffer.isEncrypted()) {
        readEncryptionData(buffer, extrasHolder);
      }
      // Write the sample data into the holder.
      buffer.ensureSpaceForWrite(extrasHolder.size);
      readData(extrasHolder.offset, buffer.data, extrasHolder.size);
      // Advance the read head.
      dropDownstreamTo(extrasHolder.nextOffset);
      return C.RESULT_BUFFER_READ;
    default:
      throw new IllegalStateException();
  }
}
 
开发者ID:zhanglibin123488,项目名称:videoPickPlayer,代码行数:44,代码来源:DefaultTrackOutput.java

示例3: decode

import com.google.android.exoplayer2.decoder.DecoderInputBuffer; //导入方法依赖的package包/类
@Override
protected VpxDecoderException decode(DecoderInputBuffer inputBuffer, VpxOutputBuffer outputBuffer,
    boolean reset) {
  ByteBuffer inputData = inputBuffer.data;
  int inputSize = inputData.limit();
  CryptoInfo cryptoInfo = inputBuffer.cryptoInfo;
  final long result = inputBuffer.isEncrypted()
      ? vpxSecureDecode(vpxDecContext, inputData, inputSize, exoMediaCrypto,
      cryptoInfo.mode, cryptoInfo.key, cryptoInfo.iv, cryptoInfo.numSubSamples,
      cryptoInfo.numBytesOfClearData, cryptoInfo.numBytesOfEncryptedData)
      : vpxDecode(vpxDecContext, inputData, inputSize);
  if (result != NO_ERROR) {
    if (result == DRM_ERROR) {
      String message = "Drm error: " + vpxGetErrorMessage(vpxDecContext);
      DecryptionException cause = new DecryptionException(
          vpxGetErrorCode(vpxDecContext), message);
      return new VpxDecoderException(message, cause);
    } else {
      return new VpxDecoderException("Decode error: " + vpxGetErrorMessage(vpxDecContext));
    }
  }

  outputBuffer.init(inputBuffer.timeUs, outputMode);
  int getFrameResult = vpxGetFrame(vpxDecContext, outputBuffer);
  if (getFrameResult == 1) {
    outputBuffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY);
  } else if (getFrameResult == -1) {
    return new VpxDecoderException("Buffer initialization failed.");
  }
  return null;
}
 
开发者ID:TakumaMochizuki,项目名称:Komica,代码行数:32,代码来源:VpxDecoder.java

示例4: read

import com.google.android.exoplayer2.decoder.DecoderInputBuffer; //导入方法依赖的package包/类
/**
 * Attempts to read from the queue.
 *
 * @param formatHolder A {@link FormatHolder} to populate in the case of reading a format.
 * @param buffer A {@link DecoderInputBuffer} to populate in the case of reading a sample or the
 *     end of the stream. If the end of the stream has been reached, the
 *     {@link C#BUFFER_FLAG_END_OF_STREAM} flag will be set on the buffer.
 * @param formatRequired Whether the caller requires that the format of the stream be read even if
 *     it's not changing. A sample will never be read if set to true, however it is still possible
 *     for the end of stream or nothing to be read.
 * @param loadingFinished True if an empty queue should be considered the end of the stream.
 * @param decodeOnlyUntilUs If a buffer is read, the {@link C#BUFFER_FLAG_DECODE_ONLY} flag will
 *     be set if the buffer's timestamp is less than this value.
 * @return The result, which can be {@link C#RESULT_NOTHING_READ}, {@link C#RESULT_FORMAT_READ} or
 *     {@link C#RESULT_BUFFER_READ}.
 */
public int read(FormatHolder formatHolder, DecoderInputBuffer buffer, boolean formatRequired,
    boolean loadingFinished, long decodeOnlyUntilUs) {
  int result = metadataQueue.read(formatHolder, buffer, formatRequired, loadingFinished,
      downstreamFormat, extrasHolder);
  switch (result) {
    case C.RESULT_FORMAT_READ:
      downstreamFormat = formatHolder.format;
      return C.RESULT_FORMAT_READ;
    case C.RESULT_BUFFER_READ:
      if (!buffer.isEndOfStream()) {
        if (buffer.timeUs < decodeOnlyUntilUs) {
          buffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY);
        }
        // Read encryption data if the sample is encrypted.
        if (buffer.isEncrypted()) {
          readEncryptionData(buffer, extrasHolder);
        }
        // Write the sample data into the holder.
        buffer.ensureSpaceForWrite(extrasHolder.size);
        readData(extrasHolder.offset, buffer.data, extrasHolder.size);
      }
      return C.RESULT_BUFFER_READ;
    case C.RESULT_NOTHING_READ:
      return C.RESULT_NOTHING_READ;
    default:
      throw new IllegalStateException();
  }
}
 
开发者ID:y20k,项目名称:transistor,代码行数:45,代码来源:SampleQueue.java

示例5: decode

import com.google.android.exoplayer2.decoder.DecoderInputBuffer; //导入方法依赖的package包/类
@Override
public OpusDecoderException decode(DecoderInputBuffer inputBuffer,
    SimpleOutputBuffer outputBuffer, boolean reset) {
  if (reset) {
    opusReset(nativeDecoderContext);
    // When seeking to 0, skip number of samples as specified in opus header. When seeking to
    // any other time, skip number of samples as specified by seek preroll.
    skipSamples = (inputBuffer.timeUs == 0) ? headerSkipSamples : headerSeekPreRollSamples;
  }
  ByteBuffer inputData = inputBuffer.data;
  CryptoInfo cryptoInfo = inputBuffer.cryptoInfo;
  int result = inputBuffer.isEncrypted()
      ? opusSecureDecode(nativeDecoderContext, inputBuffer.timeUs, inputData, inputData.limit(),
          outputBuffer, SAMPLE_RATE, exoMediaCrypto, cryptoInfo.mode,
          cryptoInfo.key, cryptoInfo.iv, cryptoInfo.numSubSamples,
          cryptoInfo.numBytesOfClearData, cryptoInfo.numBytesOfEncryptedData)
      : opusDecode(nativeDecoderContext, inputBuffer.timeUs, inputData, inputData.limit(),
          outputBuffer, SAMPLE_RATE);
  if (result < 0) {
    if (result == DRM_ERROR) {
      String message = "Drm error: " + opusGetErrorMessage(nativeDecoderContext);
      DecryptionException cause = new DecryptionException(
          opusGetErrorCode(nativeDecoderContext), message);
      return new OpusDecoderException(message, cause);
    } else {
      return new OpusDecoderException("Decode error: " + opusGetErrorMessage(result));
    }
  }

  ByteBuffer outputData = outputBuffer.data;
  outputData.position(0);
  outputData.limit(result);
  if (skipSamples > 0) {
    int bytesPerSample = channelCount * 2;
    int skipBytes = skipSamples * bytesPerSample;
    if (result <= skipBytes) {
      skipSamples -= result / bytesPerSample;
      outputBuffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY);
      outputData.position(result);
    } else {
      skipSamples = 0;
      outputData.position(skipBytes);
    }
  }
  return null;
}
 
开发者ID:TakumaMochizuki,项目名称:Komica,代码行数:47,代码来源:OpusDecoder.java

示例6: decode

import com.google.android.exoplayer2.decoder.DecoderInputBuffer; //导入方法依赖的package包/类
@Override
public OpusDecoderException decode(DecoderInputBuffer inputBuffer,
    SimpleOutputBuffer outputBuffer, boolean reset) {
  if (reset) {
    opusReset(nativeDecoderContext);
    // When seeking to 0, skip number of samples as specified in opus header. When seeking to
    // any other time, skip number of samples as specified by seek preroll.
    skipSamples = (inputBuffer.timeUs == 0) ? headerSkipSamples : headerSeekPreRollSamples;
  }
  ByteBuffer inputData = inputBuffer.data;
  CryptoInfo cryptoInfo = inputBuffer.cryptoInfo;
  int result = inputBuffer.isEncrypted()
      ? opusSecureDecode(nativeDecoderContext, inputBuffer.timeUs, inputData, inputData.limit(),
          outputBuffer, SAMPLE_RATE, exoMediaCrypto, cryptoInfo.mode,
          cryptoInfo.key, cryptoInfo.iv, cryptoInfo.numSubSamples,
          cryptoInfo.numBytesOfClearData, cryptoInfo.numBytesOfEncryptedData)
      : opusDecode(nativeDecoderContext, inputBuffer.timeUs, inputData, inputData.limit(),
          outputBuffer);
  if (result < 0) {
    if (result == DRM_ERROR) {
      String message = "Drm error: " + opusGetErrorMessage(nativeDecoderContext);
      DecryptionException cause = new DecryptionException(
          opusGetErrorCode(nativeDecoderContext), message);
      return new OpusDecoderException(message, cause);
    } else {
      return new OpusDecoderException("Decode error: " + opusGetErrorMessage(result));
    }
  }

  ByteBuffer outputData = outputBuffer.data;
  outputData.position(0);
  outputData.limit(result);
  if (skipSamples > 0) {
    int bytesPerSample = channelCount * 2;
    int skipBytes = skipSamples * bytesPerSample;
    if (result <= skipBytes) {
      skipSamples -= result / bytesPerSample;
      outputBuffer.addFlag(C.BUFFER_FLAG_DECODE_ONLY);
      outputData.position(result);
    } else {
      skipSamples = 0;
      outputData.position(skipBytes);
    }
  }
  return null;
}
 
开发者ID:y20k,项目名称:transistor,代码行数:47,代码来源:OpusDecoder.java


注:本文中的com.google.android.exoplayer2.decoder.DecoderInputBuffer.isEncrypted方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。