PCM converter header file.
More...
Go to the source code of this file.
|
| 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.
|
|
| 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) |
|
| 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.
|
◆ DUMMY_CHMAP
| #define DUMMY_CHMAP 0x76543210 |
◆ PCM_CONVERTER_GENERIC
| #define PCM_CONVERTER_GENERIC |
◆ 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
-
| source | circular-buffer source descriptor, read pointer is not modified |
| src_channels | number of channels in the source stream |
| sink | circular-buffer sink descriptor, write pointer is not modified |
| sink_channels | number of channels in the sink stream |
| source_samples | number of samples to convert, for remapping – number of source samples |
| chmap | channel 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
-
| psrc | linear memory region with samples to process |
| pdst | linear memory region for output |
| samples | number of samples to convert |
◆ 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
-
| source | circular-buffer source descriptor, read pointer is not modified |
| s_size_in | source sample size in bytes |
| sink | circular-buffer sink descriptor, write pointer is not modified |
| s_size_out | sink sample size in bytes |
| samples | number of samples to convert |
| converter | core 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] | in | Source frame format. |
| [in] | out | Sink 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_bits | is source container format. |
| valid_in_bits | is source valid sample format. |
| out_bits | is sink container format. |
| valid_out_bits | is sink valid sample format. |
| type | is gateway type |
| dir | is playback or capture |
◆ 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.