Class AudioSink.AudioFormat

  • Enclosing interface:
    AudioSink

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

      • 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 Detail

      • 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 Detail

      • 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