14#ifndef __SOF_AUDIO_PCM_CONVERTER_H__
15#define __SOF_AUDIO_PCM_CONVERTER_H__
18#include <ipc4/gateway.h>
20#include <sof/compiler_attributes.h>
30#include <xtensa/config/core-isa.h>
34#if __XCC__ && XCHAL_HAVE_HIFI3 && CONFIG_FORMAT_CONVERT_HIFI3
35#define PCM_CONVERTER_HIFI3
37#define PCM_CONVERTER_GENERIC
52 uint32_t src_channels,
struct cir_buf_sink *sink,
53 uint32_t sink_channels,
size_t source_samples, uint32_t chmap);
56#define DUMMY_CHMAP 0x76543210
80#if CONFIG_PCM_REMAPPING_CONVERTERS
85extern const size_t pcm_remap_func_count;
95 enum sof_ipc_frame out)
111#if CONFIG_PCM_REMAPPING_CONVERTERS
118pcm_get_remap_function(
enum sof_ipc_frame in,
enum sof_ipc_frame out)
122 for (i = 0; i < pcm_remap_func_count; i++) {
123 if (in != pcm_remap_func_map[i].
source)
125 if (out != pcm_remap_func_map[i].
sink)
128 return pcm_remap_func_map[i].func;
162 enum sof_ipc_frame valid_in_bits,
163 enum sof_ipc_frame out_bits,
164 enum sof_ipc_frame valid_out_bits,
165 enum ipc4_gateway_type
type,
166 enum ipc4_direction_type dir)
198 struct cir_buf_sink *
sink,
size_t s_size_out,
203 struct cir_buf_sink *
sink, uint32_t sink_channels,
204 size_t samples, uint32_t chmap);
206 struct cir_buf_sink *
sink, uint32_t sink_channels,
207 size_t samples, uint32_t chmap);
209 struct cir_buf_sink *
sink, uint32_t sink_channels,
210 size_t samples, uint32_t chmap);
212 struct cir_buf_sink *
sink, uint32_t sink_channels,
213 size_t samples, uint32_t chmap);
IPC definitions for streams.
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:94
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(* 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:51
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)
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)
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:161
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:64
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)
Audio stream is a circular buffer aware of audio format of the data in the buffer so provides API for...
Definition audio_stream.h:52
PCM conversion functions map.
Definition pcm_converter.h:68
enum sof_ipc_frame source
source frame format
Definition pcm_converter.h:69
pcm_converter_func func
PCM conversion function.
Definition pcm_converter.h:71
enum sof_ipc_frame sink
sink frame format
Definition pcm_converter.h:70
PCM conversion functions mapfor different size of valid bit and container.
Definition pcm_converter.h:136
enum sof_ipc_frame source
source frame container format
Definition pcm_converter.h:137
enum sof_ipc_frame valid_sink_bits
sink frame format
Definition pcm_converter.h:140
enum sof_ipc_frame valid_src_bits
source frame format
Definition pcm_converter.h:138
pcm_converter_func func
PCM conversion function.
Definition pcm_converter.h:142
enum sof_ipc_frame sink
sink frame container format
Definition pcm_converter.h:139
uint32_t type
Definition tlv.h:0