Sound Open Firmware
Loading...
Searching...
No Matches
pcm_converter.h File Reference

PCM converter header file. More...

Include dependency graph for pcm_converter.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  pcm_func_map
 PCM conversion functions map. More...
struct  pcm_func_vc_map
 PCM conversion functions mapfor different size of valid bit and container. More...

Macros

#define PCM_CONVERTER_GENERIC
#define DUMMY_CHMAP   0x76543210

Typedefs

typedef int(* pcm_converter_func) (const struct cir_buf_source *source, uint32_t src_channels, struct cir_buf_sink *sink, uint32_t sink_channels, size_t source_samples, uint32_t chmap)
 PCM conversion function interface for data in circular buffer.
typedef void(* pcm_converter_lin_func) (const void *psrc, void *pdst, size_t samples)
 PCM conversion function interface for data in linear buffer.

Functions

static pcm_converter_func pcm_get_conversion_function (enum sof_ipc_frame in, enum sof_ipc_frame out)
 Retrieves PCM conversion function.
static pcm_converter_func pcm_get_conversion_vc_function (enum sof_ipc_frame in_bits, enum sof_ipc_frame valid_in_bits, enum sof_ipc_frame out_bits, enum sof_ipc_frame valid_out_bits, enum ipc4_gateway_type type, enum ipc4_direction_type dir)
 Retrieves PCM conversion function for different container size.
int pcm_convert_as_linear (const struct cir_buf_source *source, size_t s_size_in, struct cir_buf_sink *sink, size_t s_size_out, size_t samples, pcm_converter_lin_func converter)
 Convert data from circular buffer using converter working on linear memory space.
int just_copy_1b (const struct cir_buf_source *source, uint32_t src_channels, struct cir_buf_sink *sink, uint32_t sink_channels, size_t samples, uint32_t chmap)
int just_copy_2b (const struct cir_buf_source *source, uint32_t src_channels, struct cir_buf_sink *sink, uint32_t sink_channels, size_t samples, uint32_t chmap)
int just_copy_3b (const struct cir_buf_source *source, uint32_t src_channels, struct cir_buf_sink *sink, uint32_t sink_channels, size_t samples, uint32_t chmap)
int just_copy_4b (const struct cir_buf_source *source, uint32_t src_channels, struct cir_buf_sink *sink, uint32_t sink_channels, size_t samples, uint32_t chmap)

Variables

const struct pcm_func_map pcm_func_map []
 Map of formats with dedicated conversion functions.
const size_t pcm_func_count
 Number of conversion functions.
const struct pcm_func_vc_map pcm_func_vc_map []
 Map of formats with dedicated conversion functions.
const size_t pcm_func_vc_count
 Number of conversion functions.

Detailed Description

Macro Definition Documentation

◆ DUMMY_CHMAP

#define DUMMY_CHMAP   0x76543210

◆ PCM_CONVERTER_GENERIC

#define PCM_CONVERTER_GENERIC

Typedef Documentation

◆ pcm_converter_func

typedef int(* pcm_converter_func) (const struct cir_buf_source *source, uint32_t src_channels, struct cir_buf_sink *sink, uint32_t sink_channels, size_t source_samples, uint32_t chmap)

PCM conversion function interface for data in circular buffer.

Parameters
sourcecircular-buffer source descriptor, read pointer is not modified
src_channelsnumber of channels in the source stream
sinkcircular-buffer sink descriptor, write pointer is not modified
sink_channelsnumber of channels in the sink stream
source_samplesnumber of samples to convert, for remapping – number of source samples
chmapchannel map for remapping, ignored by non-remapping conversion func
Returns
error code or number of processed samples (source samples in case of remapping).

◆ pcm_converter_lin_func

typedef void(* pcm_converter_lin_func) (const void *psrc, void *pdst, size_t samples)

PCM conversion function interface for data in linear buffer.

Parameters
psrclinear memory region with samples to process
pdstlinear memory region for output
samplesnumber of samples to convert

Function Documentation

◆ just_copy_1b()

int just_copy_1b ( const struct cir_buf_source * source,
uint32_t src_channels,
struct cir_buf_sink * sink,
uint32_t sink_channels,
size_t samples,
uint32_t chmap )

◆ just_copy_2b()

int just_copy_2b ( const struct cir_buf_source * source,
uint32_t src_channels,
struct cir_buf_sink * sink,
uint32_t sink_channels,
size_t samples,
uint32_t chmap )

◆ just_copy_3b()

int just_copy_3b ( const struct cir_buf_source * source,
uint32_t src_channels,
struct cir_buf_sink * sink,
uint32_t sink_channels,
size_t samples,
uint32_t chmap )

◆ just_copy_4b()

int just_copy_4b ( const struct cir_buf_source * source,
uint32_t src_channels,
struct cir_buf_sink * sink,
uint32_t sink_channels,
size_t samples,
uint32_t chmap )

◆ pcm_convert_as_linear()

int pcm_convert_as_linear ( const struct cir_buf_source * source,
size_t s_size_in,
struct cir_buf_sink * sink,
size_t s_size_out,
size_t samples,
pcm_converter_lin_func converter )

Convert data from circular buffer using converter working on linear memory space.

Parameters
sourcecircular-buffer source descriptor, read pointer is not modified
s_size_insource sample size in bytes
sinkcircular-buffer sink descriptor, write pointer is not modified
s_size_outsink sample size in bytes
samplesnumber of samples to convert
convertercore conversion function working on linear memory regions
Returns
error code or number of processed samples

◆ pcm_get_conversion_function()

pcm_converter_func pcm_get_conversion_function ( enum sof_ipc_frame in,
enum sof_ipc_frame out )
inlinestatic

Retrieves PCM conversion function.

Parameters
[in]inSource frame format.
[in]outSink frame format.

◆ pcm_get_conversion_vc_function()

pcm_converter_func pcm_get_conversion_vc_function ( enum sof_ipc_frame in_bits,
enum sof_ipc_frame valid_in_bits,
enum sof_ipc_frame out_bits,
enum sof_ipc_frame valid_out_bits,
enum ipc4_gateway_type type,
enum ipc4_direction_type dir )
inlinestatic

Retrieves PCM conversion function for different container size.

Parameters
in_bitsis source container format.
valid_in_bitsis source valid sample format.
out_bitsis sink container format.
valid_out_bitsis sink valid sample format.
typeis gateway type
diris playback or capture

Variable Documentation

◆ pcm_func_count

const size_t pcm_func_count
extern

Number of conversion functions.

◆ pcm_func_map

const struct pcm_func_map pcm_func_map[]
extern

Map of formats with dedicated conversion functions.

◆ pcm_func_vc_count

const size_t pcm_func_vc_count
extern

Number of conversion functions.

◆ pcm_func_vc_map

const struct pcm_func_vc_map pcm_func_vc_map[]
extern

Map of formats with dedicated conversion functions.