GstDsdInfo

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, reversed_bytes is set to TRUE.

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

Members

format (GstDsdFormat) –

DSD grouping format

rate (gint) –

DSD rate

channels (gint) –

number of channels (must be at least 1)

layout (GstAudioLayout) –

audio layout

reversed_bytes (gboolean) –

true if the DSD bits in the data bytes are reversed, that is, the least significant bit comes first

positions (GstAudioChannelPosition *) –

positions for each channel

flags (GstAudioFlags) –
No description available

Since : 1.24


GstAudio.DsdInfo

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". GstAudio.DsdFormat 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 (not introspectable) can be used for specifying DSD-44x rates, *and GST_DSD_MAKE_DSD_RATE_48x (not introspectable) 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, reversed_bytes is set to TRUE.

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

Members

format (GstAudio.DsdFormat) –

DSD grouping format

rate (Number) –

DSD rate

channels (Number) –

number of channels (must be at least 1)

layout (GstAudio.AudioLayout) –

audio layout

reversed_bytes (Number) –

true if the DSD bits in the data bytes are reversed, that is, the least significant bit comes first

positions ([ GstAudio.AudioChannelPosition ]) –

positions for each channel

flags (GstAudio.AudioFlags) –
No description available

Since : 1.24


GstAudio.DsdInfo

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". GstAudio.DsdFormat 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 (not introspectable) can be used for specifying DSD-44x rates, *and GST_DSD_MAKE_DSD_RATE_48x (not introspectable) 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, reversed_bytes is set to TRUE.

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

Members

format (GstAudio.DsdFormat) –

DSD grouping format

rate (int) –

DSD rate

channels (int) –

number of channels (must be at least 1)

layout (GstAudio.AudioLayout) –

audio layout

reversed_bytes (bool) –

true if the DSD bits in the data bytes are reversed, that is, the least significant bit comes first

positions ([ GstAudio.AudioChannelPosition ]) –

positions for each channel

flags (GstAudio.AudioFlags) –
No description available

Since : 1.24


Constructors

gst_dsd_info_new

GstDsdInfo *
gst_dsd_info_new ()

Allocate a new GstDsdInfo that is also initialized with gst_dsd_info_init.

Returns

a new GstDsdInfo. free with gst_dsd_info_free.

Since : 1.24


GstAudio.DsdInfo.prototype.new

function GstAudio.DsdInfo.prototype.new(): {
    // javascript wrapper for 'gst_dsd_info_new'
}

Allocate a new GstAudio.DsdInfo that is also initialized with GstAudio.prototype.dsd_info_init.

Since : 1.24


GstAudio.DsdInfo.new

def GstAudio.DsdInfo.new ():
    #python wrapper for 'gst_dsd_info_new'

Allocate a new GstAudio.DsdInfo that is also initialized with GstAudio.dsd_info_init.

Returns (GstAudio.DsdInfo)

a new GstAudio.DsdInfo. free with GstAudio.DsdInfo.free.

Since : 1.24


gst_dsd_info_new_from_caps

GstDsdInfo *
gst_dsd_info_new_from_caps (const GstCaps * 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


GstAudio.DsdInfo.prototype.new_from_caps

function GstAudio.DsdInfo.prototype.new_from_caps(caps: Gst.Caps): {
    // javascript wrapper for 'gst_dsd_info_new_from_caps'
}

Parse caps to generate a GstAudio.DsdInfo.

Parameters:

caps (Gst.Caps)

a Gst.Caps

Returns (GstAudio.DsdInfo)

A GstAudio.DsdInfo, or null if caps couldn't be parsed

Since : 1.24


GstAudio.DsdInfo.new_from_caps

def GstAudio.DsdInfo.new_from_caps (caps):
    #python wrapper for 'gst_dsd_info_new_from_caps'

Parse caps to generate a GstAudio.DsdInfo.

Parameters:

caps (Gst.Caps)

a Gst.Caps

Returns (GstAudio.DsdInfo)

A GstAudio.DsdInfo, or None if caps couldn't be parsed

Since : 1.24


Methods

gst_dsd_info_copy

GstDsdInfo *
gst_dsd_info_copy (const GstDsdInfo * info)

Copy a GstDsdInfo structure.

Parameters:

info

a GstDsdInfo

Returns

a new GstDsdInfo. free with gst_dsd_info_free.

Since : 1.24


GstAudio.DsdInfo.prototype.copy

function GstAudio.DsdInfo.prototype.copy(): {
    // javascript wrapper for 'gst_dsd_info_copy'
}

Copy a GstDsdInfo structure.

Parameters:

Returns (GstAudio.DsdInfo)

a new GstAudio.DsdInfo. free with gst_dsd_info_free.

Since : 1.24


GstAudio.DsdInfo.copy

def GstAudio.DsdInfo.copy (self):
    #python wrapper for 'gst_dsd_info_copy'

Copy a GstDsdInfo structure.

Parameters:

Returns (GstAudio.DsdInfo)

a new GstAudio.DsdInfo. free with gst_dsd_info_free.

Since : 1.24


gst_dsd_info_free

gst_dsd_info_free (GstDsdInfo * info)

Free a GstDsdInfo structure previously allocated with gst_dsd_info_new or gst_dsd_info_copy.

Parameters:

info

a GstDsdInfo

Since : 1.24


GstAudio.DsdInfo.prototype.free

function GstAudio.DsdInfo.prototype.free(): {
    // javascript wrapper for 'gst_dsd_info_free'
}

Free a GstDsdInfo structure previously allocated with GstAudio.DsdInfo.prototype.new or GstAudio.DsdInfo.prototype.copy.

Parameters:

Since : 1.24


GstAudio.DsdInfo.free

def GstAudio.DsdInfo.free (self):
    #python wrapper for 'gst_dsd_info_free'

Free a GstDsdInfo structure previously allocated with GstAudio.DsdInfo.new or GstAudio.DsdInfo.copy.

Parameters:

Since : 1.24


gst_dsd_info_is_equal

gboolean
gst_dsd_info_is_equal (const GstDsdInfo * info,
                       const GstDsdInfo * other)

Compares two GstDsdInfo and returns whether they are equal or not

Parameters:

info

a GstDsdInfo

other

a GstDsdInfo

Returns

TRUE if info and other are equal, else FALSE.

Since : 1.24


GstAudio.DsdInfo.prototype.is_equal

function GstAudio.DsdInfo.prototype.is_equal(other: GstAudio.DsdInfo): {
    // javascript wrapper for 'gst_dsd_info_is_equal'
}

Compares two GstAudio.DsdInfo and returns whether they are equal or not

Parameters:

Returns (Number)

true if info and other are equal, else false.

Since : 1.24


GstAudio.DsdInfo.is_equal

def GstAudio.DsdInfo.is_equal (self, other):
    #python wrapper for 'gst_dsd_info_is_equal'

Compares two GstAudio.DsdInfo and returns whether they are equal or not

Parameters:

Returns (bool)

True if info and other are equal, else False.

Since : 1.24


gst_dsd_info_set_format

gst_dsd_info_set_format (GstDsdInfo * info,
                         GstDsdFormat format,
                         gint rate,
                         gint channels,
                         const GstAudioChannelPosition * positions)

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

Note: This initializes info first, no values are preserved.

Parameters:

info

a GstDsdInfo

format

the format

rate

the DSD rate

channels

the number of channels

positions ( [arrayfixed-size=64][nullable])

the channel positions

Since : 1.24


GstAudio.DsdInfo.prototype.set_format

function GstAudio.DsdInfo.prototype.set_format(format: GstAudio.DsdFormat, rate: Number, channels: Number, positions: [ GstAudio.AudioChannelPosition ]): {
    // javascript wrapper for 'gst_dsd_info_set_format'
}

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

Note: This initializes info first, no values are preserved.

Parameters:

format (GstAudio.DsdFormat)

the format

rate (Number)

the DSD rate

channels (Number)

the number of channels

positions ([ GstAudio.AudioChannelPosition ])

the channel positions

Since : 1.24


GstAudio.DsdInfo.set_format

def GstAudio.DsdInfo.set_format (self, format, rate, channels, positions):
    #python wrapper for 'gst_dsd_info_set_format'

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

Note: This initializes info first, no values are preserved.

Parameters:

format (GstAudio.DsdFormat)

the format

rate (int)

the DSD rate

channels (int)

the number of channels

positions ([ GstAudio.AudioChannelPosition ])

the channel positions

Since : 1.24


gst_dsd_info_to_caps

GstCaps *
gst_dsd_info_to_caps (const GstDsdInfo * info)

Convert the values of info into a GstCaps.

Parameters:

info

a GstDsdInfo

Returns ( [transfer: full])

the new GstCaps containing the info of info.

Since : 1.24


GstAudio.DsdInfo.prototype.to_caps

function GstAudio.DsdInfo.prototype.to_caps(): {
    // javascript wrapper for 'gst_dsd_info_to_caps'
}

Convert the values of info into a Gst.Caps.

Parameters:

Returns (Gst.Caps)

the new Gst.Caps containing the info of info.

Since : 1.24


GstAudio.DsdInfo.to_caps

def GstAudio.DsdInfo.to_caps (self):
    #python wrapper for 'gst_dsd_info_to_caps'

Convert the values of info into a Gst.Caps.

Parameters:

Returns (Gst.Caps)

the new Gst.Caps containing the info of info.

Since : 1.24


Functions

gst_dsd_info_from_caps

gboolean
gst_dsd_info_from_caps (GstDsdInfo * info,
                        const GstCaps * caps)

Parse caps and update info.

Parameters:

info ( [out])

a GstDsdInfo

caps

a GstCaps

Returns

TRUE if caps could be parsed

Since : 1.24


GstAudio.prototype.dsd_info_from_caps

function GstAudio.prototype.dsd_info_from_caps(caps: Gst.Caps): {
    // javascript wrapper for 'gst_dsd_info_from_caps'
}

Parse caps and update info.

Parameters:

caps (Gst.Caps)

a Gst.Caps

Returns a tuple made of:

(Number )

TRUE if caps could be parsed

info (GstAudio.DsdInfo )

TRUE if caps could be parsed

Since : 1.24


GstAudio.dsd_info_from_caps

def GstAudio.dsd_info_from_caps (caps):
    #python wrapper for 'gst_dsd_info_from_caps'

Parse caps and update info.

Parameters:

caps (Gst.Caps)

a Gst.Caps

Returns a tuple made of:

(bool )

TRUE if caps could be parsed

info (GstAudio.DsdInfo )

TRUE if caps could be parsed

Since : 1.24


gst_dsd_info_init

gst_dsd_info_init (GstDsdInfo * info)

Initialize info with default values.

Parameters:

info ( [out])

a GstDsdInfo

Since : 1.24


GstAudio.prototype.dsd_info_init

function GstAudio.prototype.dsd_info_init(): {
    // javascript wrapper for 'gst_dsd_info_init'
}

Initialize info with default values.

Since : 1.24


GstAudio.dsd_info_init

def GstAudio.dsd_info_init ():
    #python wrapper for 'gst_dsd_info_init'

Initialize info with default values.

Since : 1.24


GstDsdPlaneOffsetMeta

Buffer metadata describing planar DSD contents in the buffer. This is not needed for interleaved DSD data, and is required for non-interleaved (= planar) data.

The different channels in offsets are always in the GStreamer channel order. Zero-copy channel reordering can be implemented by swapping the values in offsets.

It is not allowed for channels to overlap in memory, i.e. for each i in [0, channels), the range [@offsets[i], offsets[i] + num_bytes_per_channel) must not overlap with any other such range.

It is, however, allowed to have parts of the buffer memory unused, by using offsets and num_bytes_per_channel in such a way that leave gaps on it. This is used to implement zero-copy clipping in non-interleaved buffers.

Obviously, due to the above, it is not safe to infer the number of valid bytes from the size of the buffer. You should always use the num_bytes_per_channel variable of this metadata.

Members

meta (GstMeta) –

parent GstMeta

num_channels (gint) –

number of channels in the DSD data

num_bytes_per_channel (gsize) –

the number of valid bytes per channel in the buffer

offsets (gsize *) –

the offsets (in bytes) where each channel plane starts in the buffer

Since : 1.24


GstAudio.DsdPlaneOffsetMeta

Buffer metadata describing planar DSD contents in the buffer. This is not needed for interleaved DSD data, and is required for non-interleaved (= planar) data.

The different channels in offsets are always in the GStreamer channel order. Zero-copy channel reordering can be implemented by swapping the values in offsets.

It is not allowed for channels to overlap in memory, i.e. for each i in [0, channels), the range [@offsets[i], offsets[i] + num_bytes_per_channel) must not overlap with any other such range.

It is, however, allowed to have parts of the buffer memory unused, by using offsets and num_bytes_per_channel in such a way that leave gaps on it. This is used to implement zero-copy clipping in non-interleaved buffers.

Obviously, due to the above, it is not safe to infer the number of valid bytes from the size of the buffer. You should always use the num_bytes_per_channel variable of this metadata.

Members

meta (Gst.Meta) –

parent Gst.Meta

num_channels (Number) –

number of channels in the DSD data

num_bytes_per_channel (Number) –

the number of valid bytes per channel in the buffer

offsets (Number) –

the offsets (in bytes) where each channel plane starts in the buffer

Since : 1.24


GstAudio.DsdPlaneOffsetMeta

Buffer metadata describing planar DSD contents in the buffer. This is not needed for interleaved DSD data, and is required for non-interleaved (= planar) data.

The different channels in offsets are always in the GStreamer channel order. Zero-copy channel reordering can be implemented by swapping the values in offsets.

It is not allowed for channels to overlap in memory, i.e. for each i in [0, channels), the range [@offsets[i], offsets[i] + num_bytes_per_channel) must not overlap with any other such range.

It is, however, allowed to have parts of the buffer memory unused, by using offsets and num_bytes_per_channel in such a way that leave gaps on it. This is used to implement zero-copy clipping in non-interleaved buffers.

Obviously, due to the above, it is not safe to infer the number of valid bytes from the size of the buffer. You should always use the num_bytes_per_channel variable of this metadata.

Members

meta (Gst.Meta) –

parent Gst.Meta

num_channels (int) –

number of channels in the DSD data

num_bytes_per_channel (int) –

the number of valid bytes per channel in the buffer

offsets (int) –

the offsets (in bytes) where each channel plane starts in the buffer

Since : 1.24


Functions

gst_dsd_plane_offset_meta_get_info

const GstMetaInfo *
gst_dsd_plane_offset_meta_get_info ()
Returns
No description available

GstAudio.prototype.dsd_plane_offset_meta_get_info

function GstAudio.prototype.dsd_plane_offset_meta_get_info(): {
    // javascript wrapper for 'gst_dsd_plane_offset_meta_get_info'
}
Returns (Gst.MetaInfo)
No description available

GstAudio.dsd_plane_offset_meta_get_info

def GstAudio.dsd_plane_offset_meta_get_info ():
    #python wrapper for 'gst_dsd_plane_offset_meta_get_info'
Returns (Gst.MetaInfo)
No description available

Functions

gst_buffer_add_dsd_plane_offset_meta

GstDsdPlaneOffsetMeta *
gst_buffer_add_dsd_plane_offset_meta (GstBuffer * buffer,
                                      gint num_channels,
                                      gsize num_bytes_per_channel,
                                      gsize * offsets)

Allocates and attaches a GstDsdPlaneOffsetMeta on buffer, which must be writable for that purpose. The fields of the GstDsdPlaneOffsetMeta are directly populated from the arguments of this function.

If offsets is NULL, then the meta's offsets field is left uninitialized. This is useful if for example offset values are to be calculated in the meta's offsets field in-place. Similarly, num_bytes_per_channel can be set to 0, but only if offsets is NULL. This is useful if the number of bytes per channel is known only later.

It is not allowed for channels to overlap in memory, i.e. for each i in [0, channels), the range [@offsets[i], offsets[i] + num_bytes_per_channel) must not overlap with any other such range. This function will assert if the parameters specified cause this restriction to be violated.

It is, obviously, also not allowed to specify parameters that would cause out-of-bounds memory access on buffer. This is also checked, which means that you must add enough memory on the buffer before adding this meta.

This meta is only needed for non-interleaved (= planar) DSD data.

Parameters:

buffer

a GstBuffer

num_channels

Number of channels in the DSD data

num_bytes_per_channel

Number of bytes per channel

offsets ( [nullable])

the offsets (in bytes) where each channel plane starts in the buffer

Returns ( [transfer: none])

the GstDsdPlaneOffsetMeta that was attached on the buffer

Since : 1.24


GstAudio.prototype.buffer_add_dsd_plane_offset_meta

function GstAudio.prototype.buffer_add_dsd_plane_offset_meta(buffer: Gst.Buffer, num_channels: Number, num_bytes_per_channel: Number, offsets: Number): {
    // javascript wrapper for 'gst_buffer_add_dsd_plane_offset_meta'
}

Allocates and attaches a GstAudio.DsdPlaneOffsetMeta on buffer, which must be writable for that purpose. The fields of the GstAudio.DsdPlaneOffsetMeta are directly populated from the arguments of this function.

If offsets is NULL, then the meta's offsets field is left uninitialized. This is useful if for example offset values are to be calculated in the meta's offsets field in-place. Similarly, num_bytes_per_channel can be set to 0, but only if offsets is NULL. This is useful if the number of bytes per channel is known only later.

It is not allowed for channels to overlap in memory, i.e. for each i in [0, channels), the range [@offsets[i], offsets[i] + num_bytes_per_channel) must not overlap with any other such range. This function will assert if the parameters specified cause this restriction to be violated.

It is, obviously, also not allowed to specify parameters that would cause out-of-bounds memory access on buffer. This is also checked, which means that you must add enough memory on the buffer before adding this meta.

This meta is only needed for non-interleaved (= planar) DSD data.

Parameters:

buffer (Gst.Buffer)

a Gst.Buffer

num_channels (Number)

Number of channels in the DSD data

num_bytes_per_channel (Number)

Number of bytes per channel

offsets (Number)

the offsets (in bytes) where each channel plane starts in the buffer

the GstAudio.DsdPlaneOffsetMeta that was attached on the buffer

Since : 1.24


GstAudio.buffer_add_dsd_plane_offset_meta

def GstAudio.buffer_add_dsd_plane_offset_meta (buffer, num_channels, num_bytes_per_channel, offsets):
    #python wrapper for 'gst_buffer_add_dsd_plane_offset_meta'

Allocates and attaches a GstAudio.DsdPlaneOffsetMeta on buffer, which must be writable for that purpose. The fields of the GstAudio.DsdPlaneOffsetMeta are directly populated from the arguments of this function.

If offsets is NULL, then the meta's offsets field is left uninitialized. This is useful if for example offset values are to be calculated in the meta's offsets field in-place. Similarly, num_bytes_per_channel can be set to 0, but only if offsets is NULL. This is useful if the number of bytes per channel is known only later.

It is not allowed for channels to overlap in memory, i.e. for each i in [0, channels), the range [@offsets[i], offsets[i] + num_bytes_per_channel) must not overlap with any other such range. This function will assert if the parameters specified cause this restriction to be violated.

It is, obviously, also not allowed to specify parameters that would cause out-of-bounds memory access on buffer. This is also checked, which means that you must add enough memory on the buffer before adding this meta.

This meta is only needed for non-interleaved (= planar) DSD data.

Parameters:

buffer (Gst.Buffer)

a Gst.Buffer

num_channels (int)

Number of channels in the DSD data

num_bytes_per_channel (int)

Number of bytes per channel

offsets (int)

the offsets (in bytes) where each channel plane starts in the buffer

the GstAudio.DsdPlaneOffsetMeta that was attached on the buffer

Since : 1.24


gst_dsd_convert

gst_dsd_convert (const guint8 * input_data,
                 guint8 * output_data,
                 GstDsdFormat input_format,
                 GstDsdFormat output_format,
                 GstAudioLayout input_layout,
                 GstAudioLayout output_layout,
                 const gsize * input_plane_offsets,
                 const gsize * output_plane_offsets,
                 gsize num_dsd_bytes,
                 gint num_channels,
                 gboolean reverse_byte_bits)

Converts DSD data from one layout and grouping format to another. num_bytes must be an integer multiple of the width of both input and output format. For example, if the input format is GST_DSD_FORMAT_U32LE, and the output format is GST_DSD_FORMAT_U16BE, then num_bytes must be an integer multiple of both 4 (U32LE width) and 2 (U16BE width).

reverse_byte_bits is necessary if the bit order within the DSD bytes needs to be reversed. This is rarely necessary, and is not to be confused with the endianness of formats (which determines the ordering of bytes).

input_plane_offsets must not be NULL if input_layout is set to GST_AUDIO_LAYOUT_NON_INTERLEAVED. The same applies to output_plane_offsets. These plane offsets define the starting offset of the planes (there is exactly one plane per channel) within input_data and output_data respectively. If GST_AUDIO_LAYOUT_INTERLEAVED is used, the plane offsets are ignored.

Parameters:

input_data

the DSD format conversion's input source

output_data

the DSD format conversion's output destination

input_format

DSD format of the input data to convert from

output_format

DSD format of the output data to convert to

input_layout

Input data layout

output_layout

Output data layout

input_plane_offsets

Plane offsets for non-interleaved input data

output_plane_offsets

Plane offsets for non-interleaved output data

num_dsd_bytes

How many bytes with DSD data to convert

num_channels

Number of channels (must be at least 1)

reverse_byte_bits

If TRUE, reverse the bits in each DSD byte

Since : 1.24


GstAudio.prototype.dsd_convert

function GstAudio.prototype.dsd_convert(input_data: Number, output_data: Number, input_format: GstAudio.DsdFormat, output_format: GstAudio.DsdFormat, input_layout: GstAudio.AudioLayout, output_layout: GstAudio.AudioLayout, input_plane_offsets: Number, output_plane_offsets: Number, num_dsd_bytes: Number, num_channels: Number, reverse_byte_bits: Number): {
    // javascript wrapper for 'gst_dsd_convert'
}

Converts DSD data from one layout and grouping format to another. num_bytes must be an integer multiple of the width of both input and output format. For example, if the input format is GST_DSD_FORMAT_U32LE, and the output format is GST_DSD_FORMAT_U16BE, then num_bytes must be an integer multiple of both 4 (U32LE width) and 2 (U16BE width).

reverse_byte_bits is necessary if the bit order within the DSD bytes needs to be reversed. This is rarely necessary, and is not to be confused with the endianness of formats (which determines the ordering of bytes).

input_plane_offsets must not be NULL if input_layout is set to GstAudio.AudioLayout.NON_INTERLEAVED. The same applies to output_plane_offsets. These plane offsets define the starting offset of the planes (there is exactly one plane per channel) within input_data and output_data respectively. If GST_AUDIO_LAYOUT_INTERLEAVED is used, the plane offsets are ignored.

Parameters:

input_data (Number)

the DSD format conversion's input source

output_data (Number)

the DSD format conversion's output destination

input_format (GstAudio.DsdFormat)

DSD format of the input data to convert from

output_format (GstAudio.DsdFormat)

DSD format of the output data to convert to

input_layout (GstAudio.AudioLayout)

Input data layout

output_layout (GstAudio.AudioLayout)

Output data layout

input_plane_offsets (Number)

Plane offsets for non-interleaved input data

output_plane_offsets (Number)

Plane offsets for non-interleaved output data

num_dsd_bytes (Number)

How many bytes with DSD data to convert

num_channels (Number)

Number of channels (must be at least 1)

reverse_byte_bits (Number)

If TRUE, reverse the bits in each DSD byte

Since : 1.24


GstAudio.dsd_convert

def GstAudio.dsd_convert (input_data, output_data, input_format, output_format, input_layout, output_layout, input_plane_offsets, output_plane_offsets, num_dsd_bytes, num_channels, reverse_byte_bits):
    #python wrapper for 'gst_dsd_convert'

Converts DSD data from one layout and grouping format to another. num_bytes must be an integer multiple of the width of both input and output format. For example, if the input format is GST_DSD_FORMAT_U32LE, and the output format is GST_DSD_FORMAT_U16BE, then num_bytes must be an integer multiple of both 4 (U32LE width) and 2 (U16BE width).

reverse_byte_bits is necessary if the bit order within the DSD bytes needs to be reversed. This is rarely necessary, and is not to be confused with the endianness of formats (which determines the ordering of bytes).

input_plane_offsets must not be NULL if input_layout is set to GstAudio.AudioLayout.NON_INTERLEAVED. The same applies to output_plane_offsets. These plane offsets define the starting offset of the planes (there is exactly one plane per channel) within input_data and output_data respectively. If GST_AUDIO_LAYOUT_INTERLEAVED is used, the plane offsets are ignored.

Parameters:

input_data (int)

the DSD format conversion's input source

output_data (int)

the DSD format conversion's output destination

input_format (GstAudio.DsdFormat)

DSD format of the input data to convert from

output_format (GstAudio.DsdFormat)

DSD format of the output data to convert to

input_layout (GstAudio.AudioLayout)

Input data layout

output_layout (GstAudio.AudioLayout)

Output data layout

input_plane_offsets (int)

Plane offsets for non-interleaved input data

output_plane_offsets (int)

Plane offsets for non-interleaved output data

num_dsd_bytes (int)

How many bytes with DSD data to convert

num_channels (int)

Number of channels (must be at least 1)

reverse_byte_bits (bool)

If TRUE, reverse the bits in each DSD byte

Since : 1.24


gst_dsd_plane_offset_meta_api_get_type

GType
gst_dsd_plane_offset_meta_api_get_type ()
Returns
No description available

GstAudio.prototype.dsd_plane_offset_meta_api_get_type

function GstAudio.prototype.dsd_plane_offset_meta_api_get_type(): {
    // javascript wrapper for 'gst_dsd_plane_offset_meta_api_get_type'
}
Returns (GObject.Type)
No description available

GstAudio.dsd_plane_offset_meta_api_get_type

def GstAudio.dsd_plane_offset_meta_api_get_type ():
    #python wrapper for 'gst_dsd_plane_offset_meta_api_get_type'
Returns (GObject.Type)
No description available

Function Macros

GST_DSD_CAPS_MAKE

#define GST_DSD_CAPS_MAKE(format)                          \
  GST_DSD_MEDIA_TYPE ", "                                  \
  "format = (string) " format ", "                         \
  "rate = " GST_AUDIO_RATE_RANGE ", "                      \
  "layout = (string) { interleaved, non-interleaved }, "   \
  "reversed-bytes = (gboolean) { false, true }, "          \
  "channels = " GST_AUDIO_CHANNELS_RANGE

Generic caps string for DSD audio, for use in pad templates.

Parameters:

format

string format that describes the DSD bits grouping, as string (e.g. "DSDU32BE", "DSDU8", etc.)

Since : 1.24


GST_DSD_INFO_CHANNELS

#define GST_DSD_INFO_CHANNELS(info)        ((info)->channels)

GST_DSD_INFO_FORMAT

#define GST_DSD_INFO_FORMAT(info)          ((info)->format)

GST_DSD_INFO_IS_VALID

#define GST_DSD_INFO_IS_VALID(i)           ((i)->format < GST_NUM_DSD_FORMATS && (i)->rate > 0 && (i)->channels > 0)

GST_DSD_INFO_LAYOUT

#define GST_DSD_INFO_LAYOUT(info)          ((info)->layout)

GST_DSD_INFO_POSITION

#define GST_DSD_INFO_POSITION(info,c)      ((info)->position[c])

GST_DSD_INFO_RATE

#define GST_DSD_INFO_RATE(info)            ((info)->rate)

GST_DSD_INFO_REVERSED_BYTES

#define GST_DSD_INFO_REVERSED_BYTES(info)  ((info)->reversed_bytes)

GST_DSD_INFO_STRIDE

#define GST_DSD_INFO_STRIDE(info)          (gst_dsd_format_get_width((info)->format) * (info)->channels)

Calculates the stride for a given GstDsdInfo.

Note that this is only useful if the info's audio layout is GST_AUDIO_LAYOUT_INTERLEAVED.

Since : 1.24


GST_DSD_MAKE_DSD_RATE_44x

#define GST_DSD_MAKE_DSD_RATE_44x(multiplier) \
    ((gint) ((gint64) multiplier) * 44100 / 8)

Calculates a valid DSD-44x rate (in bytes) from commonly used rate multiplier specifications like DSD64, DSD128 etc.

For example, to get the rate for DSD64-44x, use 64 as the multiplier argument.

Since : 1.24


GST_DSD_MAKE_DSD_RATE_48x

#define GST_DSD_MAKE_DSD_RATE_48x(multiplier) \
    ((gint) ((gint64) multiplier) * 48000 / 8)

Calculates a valid DSD-48x rate (in bytes) from commonly used rate multiplier specifications like DSD64, DSD128 etc.

For example, to get the rate for DSD64-48x, use 64 as the multiplier argument.

Since : 1.24


gst_buffer_get_dsd_plane_offset_meta

#define gst_buffer_get_dsd_plane_offset_meta(b) \
    ((GstDsdPlaneOffsetMeta*)gst_buffer_get_meta((b), GST_DSD_PLANE_OFFSET_META_API_TYPE))

Constants

GST_DSD_MEDIA_TYPE

#define GST_DSD_MEDIA_TYPE    "audio/x-dsd"

The GStreamer media type for DSD.

Since : 1.24


GstAudio.DSD_MEDIA_TYPE

The GStreamer media type for DSD.

Since : 1.24


GstAudio.DSD_MEDIA_TYPE

The GStreamer media type for DSD.

Since : 1.24


GST_DSD_PLANE_OFFSET_META_API_TYPE

#define GST_DSD_PLANE_OFFSET_META_API_TYPE (gst_dsd_plane_offset_meta_api_get_type())

GST_DSD_PLANE_OFFSET_META_INFO

#define GST_DSD_PLANE_OFFSET_META_INFO (gst_dsd_plane_offset_meta_get_info())

GST_DSD_SILENCE_PATTERN_BYTE

#define GST_DSD_SILENCE_PATTERN_BYTE       (0x69)

Silence pattern for DSD data.

In DSD, a nullbyte does not correspond to silence. To fill memory regions with "DSD silence", these regions must be filled with byte 0x69 instead (this is the DSD silence pattern). This constant provides that pattern in a more readable fashion.

Since : 1.24


GstAudio.DSD_SILENCE_PATTERN_BYTE

Silence pattern for DSD data.

In DSD, a nullbyte does not correspond to silence. To fill memory regions with "DSD silence", these regions must be filled with byte 0x69 instead (this is the DSD silence pattern). This constant provides that pattern in a more readable fashion.

Since : 1.24


GstAudio.DSD_SILENCE_PATTERN_BYTE

Silence pattern for DSD data.

In DSD, a nullbyte does not correspond to silence. To fill memory regions with "DSD silence", these regions must be filled with byte 0x69 instead (this is the DSD silence pattern). This constant provides that pattern in a more readable fashion.

Since : 1.24


GST_META_TAG_DSD_PLANE_OFFSETS_STR

#define GST_META_TAG_DSD_PLANE_OFFSETS_STR "dsdplaneoffsets"

This metadata stays relevant as long as the DSD plane offsets are unchanged.

Since : 1.24


GstAudio.META_TAG_DSD_PLANE_OFFSETS_STR

This metadata stays relevant as long as the DSD plane offsets are unchanged.

Since : 1.24


GstAudio.META_TAG_DSD_PLANE_OFFSETS_STR

This metadata stays relevant as long as the DSD plane offsets are unchanged.

Since : 1.24


The results of the search are