| /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ | |
| /* | |
| * This file is provided under a dual BSD/GPLv2 license. When using or | |
| * redistributing this file, you may do so under either license. | |
| * | |
| * Copyright(c) 2019 Intel Corporation. All rights reserved. | |
| */ | |
| #ifndef __IPC_CHANNEL_MAP_H__ | |
| #define __IPC_CHANNEL_MAP_H__ | |
| #include <uapi/sound/sof/header.h> | |
| #include <sound/sof/header.h> | |
| /** | |
| * \brief Channel map, specifies transformation of one-to-many or many-to-one. | |
| * | |
| * In case of one-to-many specifies how the output channels are computed out of | |
| * a single source channel, | |
| * in case of many-to-one specifies how a single target channel is computed | |
| * from a multichannel input stream. | |
| * | |
| * Channel index specifies position of the channel in the stream on the 'one' | |
| * side. | |
| * | |
| * Ext ID is the identifier of external part of the transformation. Depending | |
| * on the context, it may be pipeline ID, dai ID, ... | |
| * | |
| * Channel mask describes which channels are taken into account on the "many" | |
| * side. Bit[i] set to 1 means that i-th channel is used for computation | |
| * (either as source or as a target). | |
| * | |
| * Channel mask is followed by array of coefficients in Q2.30 format, | |
| * one per each channel set in the mask (left to right, LS bit set in the | |
| * mask corresponds to ch_coeffs[0]). | |
| */ | |
| struct sof_ipc_channel_map { | |
| uint32_t ch_index; | |
| uint32_t ext_id; | |
| uint32_t ch_mask; | |
| uint32_t reserved; | |
| int32_t ch_coeffs[0]; | |
| } __packed; | |
| /** | |
| * \brief Complete map for each channel of a multichannel stream. | |
| * | |
| * num_ch_map Specifies number of items in the ch_map. | |
| * More than one transformation per a single channel is allowed (in case | |
| * multiple external entities are transformed). | |
| * A channel may be skipped in the transformation list, then it is filled | |
| * with 0's by the transformation function. | |
| */ | |
| struct sof_ipc_stream_map { | |
| struct sof_ipc_cmd_hdr hdr; | |
| uint32_t num_ch_map; | |
| uint32_t reserved[3]; | |
| struct sof_ipc_channel_map ch_map[0]; | |
| } __packed; | |
| #endif /* __IPC_CHANNEL_MAP_H__ */ |