14#ifndef __SOF_AUDIO_PCM_CONVERTER_H__
15#define __SOF_AUDIO_PCM_CONVERTER_H__
17#include <ipc/stream.h>
30#include <xtensa/config/core-isa.h>
34#if __XCC__ && XCHAL_HAVE_HIFI3 && CONFIG_FORMAT_CONVERT_HIFI3
35#define PCM_CONVERTER_HIFI3
36#elif defined(CONFIG_FORMAT_CONVERT_ARM_SIMD)
37#define PCM_CONVERTER_ARM_SIMD
39#define PCM_CONVERTER_GENERIC
58#define DUMMY_CHMAP 0x76543210
82#if CONFIG_PCM_REMAPPING_CONVERTERS
87extern const size_t pcm_remap_func_count;
113#if CONFIG_PCM_REMAPPING_CONVERTERS
124 for (i = 0; i < pcm_remap_func_count; i++) {
125 if (in != pcm_remap_func_map[i].
source)
127 if (out != pcm_remap_func_map[i].
sink)
130 return pcm_remap_func_map[i].func;
215 size_t samples, uint32_t chmap);
229 size_t samples, uint32_t chmap);
243 size_t samples, uint32_t chmap);
257 size_t samples, uint32_t chmap);
IPC4 audio gateway attributes, ALH, HDA, and SoundWire gateway definitions.
ipc4_gateway_type
Gateway peripheral category bitmask.
Definition gateway.h:171
ipc4_direction_type
Audio data stream direction flags.
Definition gateway.h:185
sof_ipc_frame
Definition stream.h:16
static pcm_converter_func pcm_get_conversion_function(enum sof_ipc_frame in, enum sof_ipc_frame out)
Retrieves PCM conversion function.
Definition pcm_converter.h:96
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)
Copy 3-byte PCM stream without conversion (24-bit samples in 3 bytes).
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.
Definition pcm_converter.h:53
const size_t pcm_func_vc_count
Number of conversion functions.
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)
Copy 4-byte PCM stream without conversion (32-bit samples or 24-bit in 4 bytes).
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)
Copy 2-byte PCM stream without conversion (16-bit samples).
const size_t pcm_func_count
Number of conversion functions.
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.
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.
Definition pcm_converter.h:163
void(* pcm_converter_lin_func)(const void *psrc, void *pdst, size_t samples)
PCM conversion function interface for data in linear buffer.
Definition pcm_converter.h:66
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)
Copy 1-byte PCM stream without conversion (8-bit samples).
Audio stream is a circular buffer aware of audio format of the data in the buffer so provides API for...
Definition audio_stream.h:51
Writable view of sink data in a circular buffer.
Definition audio_stream.h:128
void * ptr
Current write pointer within the buffer.
Definition audio_stream.h:131
Read-only view of source data in a circular buffer.
Definition audio_stream.h:116
const void * ptr
Current read pointer within the buffer.
Definition audio_stream.h:119
PCM conversion functions map.
Definition pcm_converter.h:70
enum sof_ipc_frame source
source frame format
Definition pcm_converter.h:71
pcm_converter_func func
PCM conversion function.
Definition pcm_converter.h:73
enum sof_ipc_frame sink
sink frame format
Definition pcm_converter.h:72
PCM conversion functions mapfor different size of valid bit and container.
Definition pcm_converter.h:138
enum sof_ipc_frame source
source frame container format
Definition pcm_converter.h:139
enum sof_ipc_frame valid_sink_bits
sink frame format
Definition pcm_converter.h:142
enum sof_ipc_frame valid_src_bits
source frame format
Definition pcm_converter.h:140
pcm_converter_func func
PCM conversion function.
Definition pcm_converter.h:144
enum sof_ipc_frame sink
sink frame container format
Definition pcm_converter.h:141