Helper Functions

Overview

See the PCM (digital audio) interface page for more details. Moreā€¦

// global functions

int
snd_pcm_format_signed(snd_pcm_format_t format);

int
snd_pcm_format_unsigned(snd_pcm_format_t format);

int
snd_pcm_format_linear(snd_pcm_format_t format);

int
snd_pcm_format_float(snd_pcm_format_t format);

int
snd_pcm_format_little_endian(snd_pcm_format_t format);

int
snd_pcm_format_big_endian(snd_pcm_format_t format);

int
snd_pcm_format_cpu_endian(snd_pcm_format_t format);

int
snd_pcm_format_width(snd_pcm_format_t format);

int
snd_pcm_format_physical_width(snd_pcm_format_t format);

snd_pcm_format_t
snd_pcm_build_linear_format(
    int width,
    int pwidth,
    int unsignd,
    int big_endian
);

ssize_t
snd_pcm_format_size(
    snd_pcm_format_t format,
    size_t samples
);

u_int8_t
snd_pcm_format_silence(snd_pcm_format_t format);

u_int16_t
snd_pcm_format_silence_16(snd_pcm_format_t format);

u_int32_t
snd_pcm_format_silence_32(snd_pcm_format_t format);

u_int64_t
snd_pcm_format_silence_64(snd_pcm_format_t format);

int
snd_pcm_format_set_silence(
    snd_pcm_format_t format,
    void* buf,
    unsigned int samples
);

snd_pcm_sframes_t
snd_pcm_bytes_to_frames(
    snd_pcm_t* pcm,
    ssize_t bytes
);

ssize_t
snd_pcm_frames_to_bytes(
    snd_pcm_t* pcm,
    snd_pcm_sframes_t frames
);

long
snd_pcm_bytes_to_samples(
    snd_pcm_t* pcm,
    ssize_t bytes
);

ssize_t
snd_pcm_samples_to_bytes(
    snd_pcm_t* pcm,
    long samples
);

int
snd_pcm_area_silence(
    const snd_pcm_channel_area_t* dst_channel,
    snd_pcm_uframes_t dst_offset,
    unsigned int samples,
    snd_pcm_format_t format
);

int
snd_pcm_areas_silence(
    const snd_pcm_channel_area_t* dst_channels,
    snd_pcm_uframes_t dst_offset,
    unsigned int channels,
    snd_pcm_uframes_t frames,
    snd_pcm_format_t format
);

int
snd_pcm_area_copy(
    const snd_pcm_channel_area_t* dst_channel,
    snd_pcm_uframes_t dst_offset,
    const snd_pcm_channel_area_t* src_channel,
    snd_pcm_uframes_t src_offset,
    unsigned int samples,
    snd_pcm_format_t format
);

int
snd_pcm_areas_copy(
    const snd_pcm_channel_area_t* dst_channels,
    snd_pcm_uframes_t dst_offset,
    const snd_pcm_channel_area_t* src_channels,
    snd_pcm_uframes_t src_offset,
    unsigned int channels,
    snd_pcm_uframes_t frames,
    snd_pcm_format_t format
);

Detailed Documentation

See the PCM (digital audio) interface page for more details.

Global Functions

int
snd_pcm_format_signed(snd_pcm_format_t format)

Return sign info for a PCM sample linear format.

Parameters:

format

Format

Returns:

0 unsigned, 1 signed, a negative error code if format is not linear

int
snd_pcm_format_unsigned(snd_pcm_format_t format)

Return sign info for a PCM sample linear format.

Parameters:

format

Format

Returns:

0 signed, 1 unsigned, a negative error code if format is not linear

int
snd_pcm_format_linear(snd_pcm_format_t format)

Return linear info for a PCM sample format.

Parameters:

format

Format

Returns:

0 non linear, 1 linear

int
snd_pcm_format_float(snd_pcm_format_t format)

Return float info for a PCM sample format.

Parameters:

format

Format

Returns:

0 non float, 1 float

int
snd_pcm_format_little_endian(snd_pcm_format_t format)

Return endian info for a PCM sample format.

Parameters:

format

Format

Returns:

0 big endian, 1 little endian, a negative error code if endian independent

int
snd_pcm_format_big_endian(snd_pcm_format_t format)

Return endian info for a PCM sample format.

Parameters:

format

Format

Returns:

0 little endian, 1 big endian, a negative error code if endian independent

int
snd_pcm_format_cpu_endian(snd_pcm_format_t format)

Return endian info for a PCM sample format.

Parameters:

format

Format

Returns:

0 swapped, 1 CPU endian, a negative error code if endian independent

int
snd_pcm_format_width(snd_pcm_format_t format)

Return nominal bits per a PCM sample.

Parameters:

format

Sample format

Returns:

bits per sample, a negative error code if not applicable

int
snd_pcm_format_physical_width(snd_pcm_format_t format)

Return bits needed to store a PCM sample.

Parameters:

format

Sample format

Returns:

bits per sample, a negative error code if not applicable

snd_pcm_format_t
snd_pcm_build_linear_format(
    int width,
    int pwidth,
    int unsignd,
    int big_endian
)

Compose a PCM sample linear format.

Parameters:

width

Nominal bits per sample

pwidth

Physical bit width of the format

unsignd

Sign: 0 signed, 1 unsigned

big_endian

Endian: 0 little endian, 1 big endian

Returns:

The matching format type, or SND_PCM_FORMAT_UNKNOWN if no match

ssize_t
snd_pcm_format_size(
    snd_pcm_format_t format,
    size_t samples
)

Return bytes needed to store a quantity of PCM sample.

Parameters:

format

Sample format

samples

Samples count

Returns:

bytes needed, a negative error code if not integer or unknown

u_int8_t
snd_pcm_format_silence(snd_pcm_format_t format)

Return 8 bit expressing silence for a PCM sample format.

Parameters:

format

Sample format

Returns:

silence 8 bit word

u_int16_t
snd_pcm_format_silence_16(snd_pcm_format_t format)

Return 16 bit expressing silence for a PCM sample format.

Parameters:

format

Sample format

Returns:

silence 16 bit word

u_int32_t
snd_pcm_format_silence_32(snd_pcm_format_t format)

Return 32 bit expressing silence for a PCM sample format.

Parameters:

format

Sample format

Returns:

silence 32 bit word

u_int64_t
snd_pcm_format_silence_64(snd_pcm_format_t format)

Return 64 bit expressing silence for a PCM sample format.

Parameters:

format

Sample format

Returns:

silence 64 bit word

int
snd_pcm_format_set_silence(
    snd_pcm_format_t format,
    void* buf,
    unsigned int samples
)

Silence a PCM samples buffer.

Parameters:

format

Sample format

data

Buffer

samples

Samples count

Returns:

0 if successful or a negative error code

snd_pcm_sframes_t
snd_pcm_bytes_to_frames(
    snd_pcm_t* pcm,
    ssize_t bytes
)

Convert bytes in frames for a PCM.

Parameters:

pcm

PCM handle

bytes

quantity in bytes

Returns:

quantity expressed in frames

ssize_t
snd_pcm_frames_to_bytes(
    snd_pcm_t* pcm,
    snd_pcm_sframes_t frames
)

Convert frames in bytes for a PCM.

Parameters:

pcm

PCM handle

frames

quantity in frames

Returns:

quantity expressed in bytes

long
snd_pcm_bytes_to_samples(
    snd_pcm_t* pcm,
    ssize_t bytes
)

Convert bytes in samples for a PCM.

Parameters:

pcm

PCM handle

bytes

quantity in bytes

Returns:

quantity expressed in samples

ssize_t
snd_pcm_samples_to_bytes(
    snd_pcm_t* pcm,
    long samples
)

Convert samples in bytes for a PCM.

Parameters:

pcm

PCM handle

samples

quantity in samples

Returns:

quantity expressed in bytes

int
snd_pcm_area_silence(
    const snd_pcm_channel_area_t* dst_channel,
    snd_pcm_uframes_t dst_offset,
    unsigned int samples,
    snd_pcm_format_t format
)

Silence an area.

Parameters:

dst_area

area specification

dst_offset

offset in frames inside area

samples

samples to silence

format

PCM sample format

Returns:

0 on success otherwise a negative error code

int
snd_pcm_areas_silence(
    const snd_pcm_channel_area_t* dst_channels,
    snd_pcm_uframes_t dst_offset,
    unsigned int channels,
    snd_pcm_uframes_t frames,
    snd_pcm_format_t format
)

Silence one or more areas.

Parameters:

dst_areas

areas specification (one for each channel)

dst_offset

offset in frames inside area

channels

channels count

frames

frames to silence

format

PCM sample format

Returns:

0 on success otherwise a negative error code

int
snd_pcm_area_copy(
    const snd_pcm_channel_area_t* dst_channel,
    snd_pcm_uframes_t dst_offset,
    const snd_pcm_channel_area_t* src_channel,
    snd_pcm_uframes_t src_offset,
    unsigned int samples,
    snd_pcm_format_t format
)

Copy an area.

Parameters:

dst_area

destination area specification

dst_offset

offset in frames inside destination area

src_area

source area specification

src_offset

offset in frames inside source area

samples

samples to copy

format

PCM sample format

Returns:

0 on success otherwise a negative error code

int
snd_pcm_areas_copy(
    const snd_pcm_channel_area_t* dst_channels,
    snd_pcm_uframes_t dst_offset,
    const snd_pcm_channel_area_t* src_channels,
    snd_pcm_uframes_t src_offset,
    unsigned int channels,
    snd_pcm_uframes_t frames,
    snd_pcm_format_t format
)

Copy one or more areas.

Parameters:

dst_areas

destination areas specification (one for each channel)

dst_offset

offset in frames inside destination area

src_areas

source areas specification (one for each channel)

src_offset

offset in frames inside source area

channels

channels count

frames

frames to copy

format

PCM sample format

Returns:

0 on success otherwise a negative error code