Class AudioSink.AudioFormat

java.lang.Object
com.jogamp.opengl.util.av.AudioSink.AudioFormat
Enclosing interface:
AudioSink

public static class AudioSink.AudioFormat extends Object
Specifies the linear audio PCM format.
  • Field Details

    • sampleRate

      public final int sampleRate
      Sample rate in Hz (1/s).
    • sampleSize

      public final int sampleSize
      Sample size in bits.
    • channelCount

      public final int channelCount
      Number of channels.
    • signed

      public final boolean signed
    • fixedP

      public final boolean fixedP
      Fixed or floating point values. Floating point 'float' has sampleSize 32, 'double' has sampleSize 64.
    • planar

      public final boolean planar
      Planar or packed samples. If planar, each channel has their own data buffer. If packed, channel data is interleaved in one buffer.
    • littleEndian

      public final boolean littleEndian
  • Constructor Details

    • AudioFormat

      public AudioFormat(int sampleRate, int sampleSize, int channelCount, boolean signed, boolean fixedP, boolean planar, boolean littleEndian)
      Parameters:
      sampleRate - sample rate in Hz (1/s)
      sampleSize - sample size in bits
      channelCount - number of channels
      signed - true if signed number, false for unsigned
      fixedP - true for fixed point value, false for unsigned floating point value with a sampleSize of 32 (float) or 64 (double)
      planar - true for planar data package (each channel in own data buffer), false for packed data channels interleaved in one buffer.
      littleEndian - true for little-endian, false for big endian
  • Method Details

    • getDurationsByteSize

      public final int getDurationsByteSize(int millisecs)
      Returns the byte size of the given milliseconds according to sampleSize, channelCount and sampleRate.

      Time -> Byte Count

    • getBytesDuration

      public final int getBytesDuration(int byteCount)
      Returns the duration in milliseconds of the given byte count according to sampleSize, channelCount and sampleRate.

      Byte Count -> Time

    • getSamplesDuration

      public final float getSamplesDuration(int sampleCount)
      Returns the duration in milliseconds of the given sample count per frame and channel according to the sampleRate, i.e.
          ( 1000f * sampleCount ) / sampleRate
       

      Sample Count -> Time

      Parameters:
      sampleCount - sample count per frame and channel
    • getFrameCount

      public final int getFrameCount(int millisecs, float frameDuration)
      Returns the rounded frame count of the given milliseconds and frame duration.
           Math.max( 1, millisecs / frameDuration + 0.5f )
       

      Note: frameDuration can be derived by sample count per frame and channel via getSamplesDuration(int).

      Frame Time -> Frame Count

      Parameters:
      millisecs - time in milliseconds
      frameDuration - duration per frame in milliseconds.
    • getSamplesByteCount

      public final int getSamplesByteCount(int sampleCount)
      Returns the byte size of given sample count according to the sampleSize, i.e.:
        sampleCount * ( sampleSize / 8 )
       

      Note: To retrieve the byte size for all channels, you need to pre-multiply sampleCount with channelCount.

      Sample Count -> Byte Count

      Parameters:
      sampleCount - sample count
    • getBytesSampleCount

      public final int getBytesSampleCount(int byteCount)
      Returns the sample count of given byte count according to the sampleSize, i.e.:
        ( byteCount * 8 ) / sampleSize
       

      Note: If byteCount covers all channels and you request the sample size per channel, you need to divide the result by sampleCount by channelCount.

      Byte Count -> Sample Count

      Parameters:
      byteCount - number of bytes
    • toString

      public String toString()
      Overrides:
      toString in class Object