Class DsdInfo

java.lang.Object
org.javagi.base.ProxyInstance
org.freedesktop.gstreamer.audio.DsdInfo
All Implemented Interfaces:
Proxy

@Generated("org.javagi.JavaGI") public class DsdInfo extends ProxyInstance

Information describing DSD audio properties.

In DSD, the "sample format" is the bit. Unlike PCM, there are no further "sample formats" in DSD. However, in software, DSD bits are grouped into bytes (since dealing with individual bits is impractical), and these bytes in turn are grouped into words. This becomes relevant when interleaving channels and transmitting DSD data through audio APIs. The different types of grouping DSD bytes are referred to as the "DSD grouping forma" or just "DSD format". GstDsdFormat has a list of valid ways of grouping DSD bytes into words.

DSD rates are equivalent to PCM sample rates, except that they specify how many DSD bytes are consumed per second. This refers to the bytes per second per channel; the rate does not change when the number of channel changes. (Strictly speaking, it would be more correct to measure the bits per second, since the bit is the DSD "sample format", but it is more practical to use bytes.) In DSD, bit rates are always an integer multiple of the CD audio rate (44100) or the DAT rate (48000). DSD64-44x is 44100 * 64 = 2822400 bits per second, or 352800 bytes per second (the latter would be used in this info structure). DSD64-48x is 48000 * 64 = 3072000 bits per second, or 384000 bytes per second. GST_DSD_MAKE_DSD_RATE_44x can be used for specifying DSD-44x rates, *and GST_DSD_MAKE_DSD_RATE_48x can be used for specifying DSD-48x ones. Also, since DSD-48x is less well known, when the multiplier is given without the 44x/48x specifier, 44x is typically implied.

It is important to know that in DSD, different format widths correspond to different playtimes. That is, a word with 32 DSD bits covers two times as much playtime as a word with 16 DSD bits. This is in contrast to PCM, where one word (= one PCM sample) always covers a time period of 1/samplerate, no matter how many bits a PCM sample is made of. For this reason, DSD and PCM widths and strides cannot be used the same way.

Multiple channels are arranged in DSD data either interleaved or non- interleaved. This is similar to PCM. Interleaved layouts rotate between channels and words. First, word 0 of channel 0 is present. Then word 0 of channel 1 follows. Then word 0 of channel 2 etc. until all channels are through, then comes word 1 of channel 0 etc.

Non-interleaved data is planar. First, all words of channel 0 are present, then all words of channel 1 etc. Unlike interleaved data, non-interleaved data can be sparse, that is, there can be space in between the planes. the positions array specifies the plane offsets.

In uncommon cases, the DSD bits in the data bytes can be stored in reverse order. For example, normally, in DSDU8, the first byte contains DSD bits 0 to 7, and the most significant bit of that byte is DSD bit 0. If this order is reversed, then bit 7 is the first one instead. In that ase, reversedBytes is set to TRUE.

Use the provided macros to access the info in this structure.

Since:
1.24
  • Constructor Details

    • DsdInfo

      public DsdInfo(MemorySegment address)
      Create a DsdInfo proxy instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • DsdInfo

      public DsdInfo()
      Allocate a new GstDsdInfo that is also initialized with gst_dsd_info_init().
      Since:
      1.24
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the DsdInfo class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • readFormat

      public DsdFormat readFormat()
      Read the value of the field format.
      Returns:
      The value of the field format
    • writeFormat

      public void writeFormat(DsdFormat format)
      Write a value in the field format.
      Parameters:
      format - The new value for the field format
    • readRate

      public int readRate()
      Read the value of the field rate.
      Returns:
      The value of the field rate
    • writeRate

      public void writeRate(int rate)
      Write a value in the field rate.
      Parameters:
      rate - The new value for the field rate
    • readChannels

      public int readChannels()
      Read the value of the field channels.
      Returns:
      The value of the field channels
    • writeChannels

      public void writeChannels(int channels)
      Write a value in the field channels.
      Parameters:
      channels - The new value for the field channels
    • readLayout

      public AudioLayout readLayout()
      Read the value of the field layout.
      Returns:
      The value of the field layout
    • writeLayout

      public void writeLayout(AudioLayout layout)
      Write a value in the field layout.
      Parameters:
      layout - The new value for the field layout
    • readReversedBytes

      public boolean readReversedBytes()
      Read the value of the field reversed_bytes.
      Returns:
      The value of the field reversed_bytes
    • writeReversedBytes

      public void writeReversedBytes(boolean reversedBytes)
      Write a value in the field reversed_bytes.
      Parameters:
      reversedBytes - The new value for the field reversed_bytes
    • readPositions

      public @Nullable AudioChannelPosition @Nullable [] readPositions()
      Read the value of the field positions.
      Returns:
      The value of the field positions
    • writePositions

      public void writePositions(@Nullable AudioChannelPosition @Nullable [] positions, Arena _arena)
      Write a value in the field positions.
      Parameters:
      positions - The new value for the field positions
    • readFlags

      public Set<AudioFlags> readFlags()
      Read the value of the field flags.
      Returns:
      The value of the field flags
    • writeFlags

      public void writeFlags(Set<AudioFlags> flags)
      Write a value in the field flags.
      Parameters:
      flags - The new value for the field flags
    • fromCaps

      public static DsdInfo fromCaps(Caps caps)
      Parse caps to generate a GstDsdInfo.
      Parameters:
      caps - a GstCaps
      Returns:
      A GstDsdInfo, or null if caps couldn't be parsed
      Since:
      1.24
    • withCaps

      public static boolean withCaps(DsdInfo info, Caps caps)
      Parse caps and update info.
      Parameters:
      info - a GstDsdInfo
      caps - a GstCaps
      Returns:
      TRUE if caps could be parsed
      Since:
      1.24
    • init

      public static void init(DsdInfo info)
      Initialize info with default values.
      Parameters:
      info - a GstDsdInfo
      Since:
      1.24
    • copy

      public DsdInfo copy()
      Copy a GstDsdInfo structure.
      Returns:
      a new GstDsdInfo. free with gst_dsd_info_free.
      Since:
      1.24
    • free

      public void free()
      Free a GstDsdInfo structure previously allocated with gst_dsd_info_new() or gst_dsd_info_copy().
      Since:
      1.24
    • isEqual

      public boolean isEqual(DsdInfo other)
      Compares two GstDsdInfo and returns whether they are equal or not
      Parameters:
      other - a GstDsdInfo
      Returns:
      true if this DsdInfo and other are equal, else false.
      Since:
      1.24
    • setFormat

      public void setFormat(DsdFormat format, int rate, int channels, @Nullable AudioChannelPosition @Nullable [] positions)

      Set the default info for the DSD info of format and rate and channels.

      Note: This initializes this DsdInfo first, no values are preserved.

      Parameters:
      format - the format
      rate - the DSD rate
      channels - the number of channels
      positions - the channel positions
      Throws:
      IllegalArgumentException - when length of positions is less than 64
      Since:
      1.24
    • toCaps

      public Caps toCaps()
      Convert the values of this DsdInfo into a GstCaps.
      Returns:
      the new GstCaps containing the info of info.
      Since:
      1.24