コード例 #1
0
ファイル: MP3Stream.java プロジェクト: Red5/red5-io
 /**
  * Creates an {@code AudioFrame} object based on the given header field. If the header field
  * contains invalid values, result is <b>null</b>.
  *
  * @param bits the header bit field
  * @return the {@code AudioFrame}
  */
 private static AudioFrame createHeader(HeaderBitField bits) {
   if (bits.get(21, 23) != 7) {
     return null;
   }
   int mpegVer = bits.get(19, 20);
   int layer = bits.get(17, 18);
   int bitRateCode = bits.get(12, 15);
   int sampleRateCode = bits.get(10, 11);
   int padding = bits.get(9);
   if (mpegVer == 1
       || layer == 0
       || bitRateCode == 0
       || bitRateCode == 15
       || sampleRateCode == 3) {
     // invalid header values
     return null;
   }
   int bitRate = calculateBitRate(mpegVer, layer, bitRateCode);
   int sampleRate = calculateSampleRate(mpegVer, sampleRateCode);
   int length = calculateFrameLength(layer, bitRate, sampleRate, padding);
   float duration = calculateDuration(layer, sampleRate);
   int channels = calculateChannels(bits.get(6, 7));
   return new AudioFrame(mpegVer, layer, bitRate, sampleRate, channels, length, duration);
 }