當前位置: 首頁>>代碼示例>>Java>>正文


Java AudioFormat.CHANNEL_OUT_7POINT1屬性代碼示例

本文整理匯總了Java中android.media.AudioFormat.CHANNEL_OUT_7POINT1屬性的典型用法代碼示例。如果您正苦於以下問題:Java AudioFormat.CHANNEL_OUT_7POINT1屬性的具體用法?Java AudioFormat.CHANNEL_OUT_7POINT1怎麽用?Java AudioFormat.CHANNEL_OUT_7POINT1使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在android.media.AudioFormat的用法示例。


在下文中一共展示了AudioFormat.CHANNEL_OUT_7POINT1屬性的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: reconfigure

/**
 * Reconfigures the audio track to play back media in {@code format}.
 *
 * @param format Specifies the channel count and sample rate to play back.
 * @param specifiedBufferSize A specific size for the playback buffer in bytes, or 0 to use a
 *          size inferred from the format.
 */
public void reconfigure(MediaFormat format, int specifiedBufferSize) {
  int channelCount = format.getInteger(MediaFormat.KEY_CHANNEL_COUNT);
  int channelConfig;
  switch (channelCount) {
    case 1:
      channelConfig = AudioFormat.CHANNEL_OUT_MONO;
      break;
    case 2:
      channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
      break;
    case 6:
      channelConfig = AudioFormat.CHANNEL_OUT_5POINT1;
      break;
    case 8:
      channelConfig = AudioFormat.CHANNEL_OUT_7POINT1;
      break;
    default:
      throw new IllegalArgumentException("Unsupported channel count: " + channelCount);
  }

  int sampleRate = format.getInteger(MediaFormat.KEY_SAMPLE_RATE);
  String mimeType = format.getString(MediaFormat.KEY_MIME);

  // TODO: Does channelConfig determine channelCount?
  int encoding = MimeTypes.getEncodingForMimeType(mimeType);
  boolean isAc3 = encoding == C.ENCODING_AC3 || encoding == C.ENCODING_E_AC3;
  if (isInitialized() && this.sampleRate == sampleRate && this.channelConfig == channelConfig
      && !this.isAc3 && !isAc3) {
    // We already have an existing audio track with the correct sample rate and channel config.
    return;
  }

  reset();

  this.encoding = encoding;
  this.sampleRate = sampleRate;
  this.channelConfig = channelConfig;
  this.isAc3 = isAc3;
  ac3Bitrate = UNKNOWN_AC3_BITRATE; // Calculated on receiving the first buffer if isAc3 is true.
  frameSize = 2 * channelCount; // 2 bytes per 16 bit sample * number of channels.
  minBufferSize = android.media.AudioTrack.getMinBufferSize(sampleRate, channelConfig, encoding);
  Assertions.checkState(minBufferSize != android.media.AudioTrack.ERROR_BAD_VALUE);

  if (specifiedBufferSize != 0) {
    bufferSize = specifiedBufferSize;
  } else {
    int multipliedBufferSize = minBufferSize * BUFFER_MULTIPLICATION_FACTOR;
    int minAppBufferSize = (int) durationUsToFrames(MIN_BUFFER_DURATION_US) * frameSize;
    int maxAppBufferSize = (int) Math.max(minBufferSize,
        durationUsToFrames(MAX_BUFFER_DURATION_US) * frameSize);
    bufferSize = multipliedBufferSize < minAppBufferSize
        ? minAppBufferSize
        : multipliedBufferSize > maxAppBufferSize
            ? maxAppBufferSize
            : multipliedBufferSize;
  }
}
 
開發者ID:XueyanLiu,項目名稱:miku,代碼行數:64,代碼來源:AudioTrack.java


注:本文中的android.media.AudioFormat.CHANNEL_OUT_7POINT1屬性示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。