mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-10 13:30:05 -05:00
More work on multichannel
Reorder channels to a more common default order. Only add channel layout when channels > 1 Don't try to link to a session that is still starting Small sse fixes.
This commit is contained in:
parent
5196f7f053
commit
fcd90b25d3
12 changed files with 262 additions and 124 deletions
|
|
@ -62,8 +62,10 @@ spa_format_audio_raw_build(struct spa_pod_builder *builder, uint32_t id, struct
|
|||
SPA_FORMAT_AUDIO_channels, &SPA_POD_Int(info->channels),
|
||||
0);
|
||||
|
||||
spa_pod_builder_prop(builder, SPA_FORMAT_AUDIO_position, 0);
|
||||
spa_pod_builder_array(builder, sizeof(uint32_t), SPA_TYPE_Id, info->channels, info->position);
|
||||
if (info->channels > 1) {
|
||||
spa_pod_builder_prop(builder, SPA_FORMAT_AUDIO_position, 0);
|
||||
spa_pod_builder_array(builder, sizeof(uint32_t), SPA_TYPE_Id, info->channels, info->position);
|
||||
}
|
||||
return spa_pod_builder_pop(builder);
|
||||
}
|
||||
|
||||
|
|
|
|||
170
spa/include/spa/param/audio/layout.h
Normal file
170
spa/include/spa/param/audio/layout.h
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
/* Simple Plugin API
|
||||
* Copyright (C) 2016 Wim Taymans <wim.taymans@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __SPA_AUDIO_LAYOUT_H__
|
||||
#define __SPA_AUDIO_LAYOUT_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <endian.h>
|
||||
|
||||
#define SPA_AUDIO_LAYOUT_Mono 1, SPA_AUDIO_CHANNEL_MONO
|
||||
#define SPA_AUDIO_LAYOUT_Stereo 2, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR
|
||||
#define SPA_AUDIO_LAYOUT_Quad 4, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR
|
||||
#define SPA_AUDIO_LAYOUT_Pentagonal 5, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_FC
|
||||
#define SPA_AUDIO_LAYOUT_Hexagonal 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_Octagonal 8, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_RC, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR,
|
||||
#define SPA_AUDIO_LAYOUT_Cube 8, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_TFL, SPA_AUDIO_CHANNEL_TFR, \
|
||||
SPA_AUDIO_CHANNEL_TRL, SPA_AUDIO_CHANNEL_TRR,
|
||||
|
||||
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_1_0 SPA_AUDIO_LAYOUT_MONO
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_2_0 SPA_AUDIO_LAYOUT_STEREO
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_3_0A 3, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_3_0B 3, SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_FL, \
|
||||
SPA_AUDIO_CHANNEL_FR
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_4_0A 4, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_4_0B 4, SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_FL, \
|
||||
SPA_AUDIO_CHANNEL_FR, SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_0A 5, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_0B 5, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR, \
|
||||
SPA_AUDIO_CHANNEL_FC
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_0C 5, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FC, \
|
||||
SPA_AUDIO_CHANNEL_FR, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_0D 5, SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_FL, \
|
||||
SPA_AUDIO_CHANNEL_FR, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_1A 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_1B 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_1C 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FC, \
|
||||
SPA_AUDIO_CHANNEL_FR, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR, SPA_AUDIO_CHANNEL_LFE
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_5_1D 6, SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_FL, \
|
||||
SPA_AUDIO_CHANNEL_FR, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR, SPA_AUDIO_CHANNEL_LFE
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_6_1A 7, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR, \
|
||||
SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_7_1A 8, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_7_1B 8, SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR, SPA_AUDIO_CHANNEL_FL, \
|
||||
SPA_AUDIO_CHANNEL_FR, SPA_AUDIO_CHANNEL_RL, \
|
||||
SPA_AUDIO_CHANNEL_RR, SPA_AUDIO_CHANNEL_LFE
|
||||
#define SPA_AUDIO_LAYOUT_MPEG_7_1C 8, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR
|
||||
|
||||
|
||||
#define SPA_AUDIO_LAYOUT_2_1 3, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_LFE
|
||||
|
||||
#define SPA_AUDIO_LAYOUT_2RC 3, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_2FC 3, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC
|
||||
|
||||
#define SPA_AUDIO_LAYOUT_3_1 4, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE
|
||||
#define SPA_AUDIO_LAYOUT_4_0 4, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_2_2 4, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
|
||||
#define SPA_AUDIO_LAYOUT_4_1 5, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_5_0 5, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_5_0R 5, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_RL, \
|
||||
SPA_AUDIO_CHANNEL_RR
|
||||
#define SPA_AUDIO_LAYOUT_5_1 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_5_1R 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR
|
||||
#define SPA_AUDIO_LAYOUT_6_0 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_RC, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_6_0F 6, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FLC, SPA_AUDIO_CHANNEL_FRC, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_6_1 7, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_RC, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_6_1F 7, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_RC
|
||||
#define SPA_AUDIO_LAYOUT_7_0 7, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_RL, \
|
||||
SPA_AUDIO_CHANNEL_RR, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_7_0F 7, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_FLC, \
|
||||
SPA_AUDIO_CHANNEL_FRC, SPA_AUDIO_CHANNEL_SL, \
|
||||
SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_7_1 8, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_7_1W 8, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_FLC, SPA_AUDIO_CHANNEL_FRC, \
|
||||
SPA_AUDIO_CHANNEL_SL, SPA_AUDIO_CHANNEL_SR
|
||||
#define SPA_AUDIO_LAYOUT_7_1WR 8, SPA_AUDIO_CHANNEL_FL, SPA_AUDIO_CHANNEL_FR, \
|
||||
SPA_AUDIO_CHANNEL_FC, SPA_AUDIO_CHANNEL_LFE, \
|
||||
SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
|
||||
SPA_AUDIO_CHANNEL_FLC, SPA_AUDIO_CHANNEL_FRC
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* __SPA_AUDIO_LAYOUT_H__ */
|
||||
|
|
@ -144,32 +144,35 @@ enum spa_audio_format {
|
|||
enum spa_audio_channel {
|
||||
SPA_AUDIO_CHANNEL_UNKNOWN, /**< unspecified */
|
||||
SPA_AUDIO_CHANNEL_NA, /**< N/A, silent */
|
||||
|
||||
SPA_AUDIO_CHANNEL_MONO, /**< mono stream */
|
||||
|
||||
SPA_AUDIO_CHANNEL_FL, /**< front left */
|
||||
SPA_AUDIO_CHANNEL_FR, /**< front right */
|
||||
SPA_AUDIO_CHANNEL_RL, /**< rear left */
|
||||
SPA_AUDIO_CHANNEL_RR, /**< rear right */
|
||||
SPA_AUDIO_CHANNEL_FC, /**< front center */
|
||||
SPA_AUDIO_CHANNEL_LFE, /**< LFE */
|
||||
SPA_AUDIO_CHANNEL_SL, /**< side left */
|
||||
SPA_AUDIO_CHANNEL_SR, /**< side right */
|
||||
SPA_AUDIO_CHANNEL_RC, /**< rear center */
|
||||
SPA_AUDIO_CHANNEL_RL, /**< rear left */
|
||||
SPA_AUDIO_CHANNEL_RR, /**< rear right */
|
||||
SPA_AUDIO_CHANNEL_FLC, /**< front left center */
|
||||
SPA_AUDIO_CHANNEL_FRC, /**< front right center */
|
||||
SPA_AUDIO_CHANNEL_RC, /**< rear center */
|
||||
SPA_AUDIO_CHANNEL_SL, /**< side left */
|
||||
SPA_AUDIO_CHANNEL_SR, /**< side right */
|
||||
SPA_AUDIO_CHANNEL_TC, /**< top center */
|
||||
SPA_AUDIO_CHANNEL_TFL, /**< top front left */
|
||||
SPA_AUDIO_CHANNEL_TFC, /**< top front center */
|
||||
SPA_AUDIO_CHANNEL_TFR, /**< top front right */
|
||||
SPA_AUDIO_CHANNEL_TRL, /**< top rear left */
|
||||
SPA_AUDIO_CHANNEL_TRC, /**< top rear center */
|
||||
SPA_AUDIO_CHANNEL_TRR, /**< top rear right */
|
||||
SPA_AUDIO_CHANNEL_RLC, /**< rear left center */
|
||||
SPA_AUDIO_CHANNEL_RRC, /**< rear right center */
|
||||
SPA_AUDIO_CHANNEL_FLW, /**< front left wide */
|
||||
SPA_AUDIO_CHANNEL_FRW, /**< front right wide */
|
||||
SPA_AUDIO_CHANNEL_LFE2, /**< LFE 2 */
|
||||
SPA_AUDIO_CHANNEL_FLH, /**< front left high */
|
||||
SPA_AUDIO_CHANNEL_FCH, /**< front center high */
|
||||
SPA_AUDIO_CHANNEL_FRH, /**< front right high */
|
||||
SPA_AUDIO_CHANNEL_TC, /**< top center */
|
||||
SPA_AUDIO_CHANNEL_TFL, /**< top front left */
|
||||
SPA_AUDIO_CHANNEL_TFR, /**< top front right */
|
||||
SPA_AUDIO_CHANNEL_TFC, /**< top front center */
|
||||
SPA_AUDIO_CHANNEL_TRL, /**< top rear left */
|
||||
SPA_AUDIO_CHANNEL_TRR, /**< top rear right */
|
||||
SPA_AUDIO_CHANNEL_TRC, /**< top rear center */
|
||||
SPA_AUDIO_CHANNEL_TFLC, /**< top front left center */
|
||||
SPA_AUDIO_CHANNEL_TFRC, /**< top front right center */
|
||||
SPA_AUDIO_CHANNEL_TSL, /**< top side left */
|
||||
|
|
@ -183,41 +186,6 @@ enum spa_audio_channel {
|
|||
SPA_AUDIO_CHANNEL_CUSTOM_START = 0x10000,
|
||||
};
|
||||
|
||||
#define SPA_AUDIO_CHANNEL_MASK(ch) (1LL << SPA_AUDIO_CHANNEL_ ## ch)
|
||||
|
||||
enum spa_audio_layout {
|
||||
SPA_AUDIO_LAYOUT_DEFAULT, /**< default layout for the number of channels */
|
||||
SPA_AUDIO_LAYOUT_CUSTOM, /**< custom layout, either the order of the channels is
|
||||
* non-standard or the channel position array contains
|
||||
* custom channels. */
|
||||
SPA_AUDIO_LAYOUT_MONO, /**< MONO */
|
||||
SPA_AUDIO_LAYOUT_STEREO, /**< FL FR */
|
||||
SPA_AUDIO_LAYOUT_2_1, /**< FL FR LFE */
|
||||
SPA_AUDIO_LAYOUT_2RC, /**< FL FR RC */
|
||||
SPA_AUDIO_LAYOUT_2FC, /**< FL FR FC */
|
||||
SPA_AUDIO_LAYOUT_3_1, /**< FL FR FC LFE */
|
||||
SPA_AUDIO_LAYOUT_4_0, /**< FL FR FC RC */
|
||||
SPA_AUDIO_LAYOUT_4_1, /**< FL FR FC RC LFE */
|
||||
SPA_AUDIO_LAYOUT_2_2, /**< FL FR SL SR */
|
||||
SPA_AUDIO_LAYOUT_QUAD, /**< FL FR RL RR */
|
||||
SPA_AUDIO_LAYOUT_5_0, /**< FL FR FC SL SR */
|
||||
SPA_AUDIO_LAYOUT_5_1, /**< FL FR FC SL SR LFE */
|
||||
SPA_AUDIO_LAYOUT_5_0R, /**< FL FR FC RL RR */
|
||||
SPA_AUDIO_LAYOUT_5_1R, /**< FL FR FC RL RR LFE */
|
||||
SPA_AUDIO_LAYOUT_6_0, /**< FL FR FC SL SR RC */
|
||||
SPA_AUDIO_LAYOUT_6_0F, /**< FL FR SL SR FLC FRC */
|
||||
SPA_AUDIO_LAYOUT_HEXAGONAL, /**< FL FR FC RL RR RC */
|
||||
SPA_AUDIO_LAYOUT_6_1, /**< FL FR FC SL SR LFE RC */
|
||||
SPA_AUDIO_LAYOUT_6_1R, /**< FL FR FC RL RR LFE RC */
|
||||
SPA_AUDIO_LAYOUT_6_1F, /**< FL FR SL SR FLC FRC LFE */
|
||||
SPA_AUDIO_LAYOUT_7_0, /**< FL FR FC SL SR RL RR */
|
||||
SPA_AUDIO_LAYOUT_7_0F, /**< FL FR FC SL SR FLC FRC */
|
||||
SPA_AUDIO_LAYOUT_7_1, /**< FL FR FC SL SR LFE RL RR */
|
||||
SPA_AUDIO_LAYOUT_7_1W, /**< FL FR FC SL SR LFE FLC FRC */
|
||||
SPA_AUDIO_LAYOUT_7_1WR, /**< FL FR FC RL RR LFE FLC FRC */
|
||||
SPA_AUDIO_LAYOUT_OCTAGONAL, /**< FL FR FC SL SR RL RC RR */
|
||||
};
|
||||
|
||||
/** Extra audio flags */
|
||||
#define SPA_AUDIO_FLAG_NONE (0) /*< no valid flag */
|
||||
#define SPA_AUDIO_FLAG_UNPOSITIONED (1 << 0) /*< the position array explicitly
|
||||
|
|
|
|||
|
|
@ -92,29 +92,30 @@ static const struct spa_type_info spa_type_audio_channel[] = {
|
|||
{ SPA_AUDIO_CHANNEL_MONO, SPA_TYPE_AUDIO_CHANNEL_BASE "MONO", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FL, SPA_TYPE_AUDIO_CHANNEL_BASE "FL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FR, SPA_TYPE_AUDIO_CHANNEL_BASE "FR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RL, SPA_TYPE_AUDIO_CHANNEL_BASE "RL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RR, SPA_TYPE_AUDIO_CHANNEL_BASE "RR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FC, SPA_TYPE_AUDIO_CHANNEL_BASE "FC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_LFE, SPA_TYPE_AUDIO_CHANNEL_BASE "LFE", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_SL, SPA_TYPE_AUDIO_CHANNEL_BASE "SL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_SR, SPA_TYPE_AUDIO_CHANNEL_BASE "SR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RC, SPA_TYPE_AUDIO_CHANNEL_BASE "RC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RL, SPA_TYPE_AUDIO_CHANNEL_BASE "RL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RR, SPA_TYPE_AUDIO_CHANNEL_BASE "RR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FLC, SPA_TYPE_AUDIO_CHANNEL_BASE "FLC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FRC, SPA_TYPE_AUDIO_CHANNEL_BASE "FRC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RC, SPA_TYPE_AUDIO_CHANNEL_BASE "RC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_SL, SPA_TYPE_AUDIO_CHANNEL_BASE "SL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_SR, SPA_TYPE_AUDIO_CHANNEL_BASE "SR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TC, SPA_TYPE_AUDIO_CHANNEL_BASE "TC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFL, SPA_TYPE_AUDIO_CHANNEL_BASE "TFL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFC, SPA_TYPE_AUDIO_CHANNEL_BASE "TFC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFR, SPA_TYPE_AUDIO_CHANNEL_BASE "TFR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TRL, SPA_TYPE_AUDIO_CHANNEL_BASE "TRL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TRC, SPA_TYPE_AUDIO_CHANNEL_BASE "TRC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TRR, SPA_TYPE_AUDIO_CHANNEL_BASE "TRR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RLC, SPA_TYPE_AUDIO_CHANNEL_BASE "RLC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_RRC, SPA_TYPE_AUDIO_CHANNEL_BASE "RRC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FLW, SPA_TYPE_AUDIO_CHANNEL_BASE "FLW", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FRW, SPA_TYPE_AUDIO_CHANNEL_BASE "FRW", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_LFE2, SPA_TYPE_AUDIO_CHANNEL_BASE "LFE2", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FLH, SPA_TYPE_AUDIO_CHANNEL_BASE "FLH", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FCH, SPA_TYPE_AUDIO_CHANNEL_BASE "FCH", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_FRH, SPA_TYPE_AUDIO_CHANNEL_BASE "FRH", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TC, SPA_TYPE_AUDIO_CHANNEL_BASE "TC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFL, SPA_TYPE_AUDIO_CHANNEL_BASE "TFL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFR, SPA_TYPE_AUDIO_CHANNEL_BASE "TFR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFC, SPA_TYPE_AUDIO_CHANNEL_BASE "TFC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TRL, SPA_TYPE_AUDIO_CHANNEL_BASE "TRL", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TRR, SPA_TYPE_AUDIO_CHANNEL_BASE "TRR", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TRC, SPA_TYPE_AUDIO_CHANNEL_BASE "TRC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFLC, SPA_TYPE_AUDIO_CHANNEL_BASE "TFLC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TFRC, SPA_TYPE_AUDIO_CHANNEL_BASE "TFRC", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_CHANNEL_TSL, SPA_TYPE_AUDIO_CHANNEL_BASE "TSL", SPA_TYPE_Int, },
|
||||
|
|
@ -127,41 +128,6 @@ static const struct spa_type_info spa_type_audio_channel[] = {
|
|||
{ 0, NULL, },
|
||||
};
|
||||
|
||||
#define SPA_TYPE__AudioLayout SPA_TYPE_ENUM_BASE "AudioLayout"
|
||||
#define SPA_TYPE_AUDIO_LAYOUT_BASE SPA_TYPE__AudioLayout ":"
|
||||
|
||||
static const struct spa_type_info spa_type_audio_layout[] = {
|
||||
{ SPA_AUDIO_LAYOUT_DEFAULT, SPA_TYPE_AUDIO_LAYOUT_BASE "Default", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_CUSTOM, SPA_TYPE_AUDIO_LAYOUT_BASE "Custom", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_MONO, SPA_TYPE_AUDIO_LAYOUT_BASE "Mono", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_STEREO, SPA_TYPE_AUDIO_LAYOUT_BASE "Stereo", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_2_1, SPA_TYPE_AUDIO_LAYOUT_BASE "2.1", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_2RC, SPA_TYPE_AUDIO_LAYOUT_BASE "2.1 Rear", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_2FC, SPA_TYPE_AUDIO_LAYOUT_BASE "2.1 Front", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_3_1, SPA_TYPE_AUDIO_LAYOUT_BASE "3.1", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_4_0, SPA_TYPE_AUDIO_LAYOUT_BASE "4.0", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_4_1, SPA_TYPE_AUDIO_LAYOUT_BASE "4.1", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_2_2, SPA_TYPE_AUDIO_LAYOUT_BASE "2.2", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_QUAD, SPA_TYPE_AUDIO_LAYOUT_BASE "Quad", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_5_0, SPA_TYPE_AUDIO_LAYOUT_BASE "5.0", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_5_1, SPA_TYPE_AUDIO_LAYOUT_BASE "5.1", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_5_0R, SPA_TYPE_AUDIO_LAYOUT_BASE "5.0 Rear", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_5_1R, SPA_TYPE_AUDIO_LAYOUT_BASE "5.1 Rear", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_6_0, SPA_TYPE_AUDIO_LAYOUT_BASE "6.0", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_6_0F, SPA_TYPE_AUDIO_LAYOUT_BASE "6.0 Front", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_HEXAGONAL, SPA_TYPE_AUDIO_LAYOUT_BASE "Hexagonal", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_6_1, SPA_TYPE_AUDIO_LAYOUT_BASE "6.1", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_6_1R, SPA_TYPE_AUDIO_LAYOUT_BASE "6.1 Rear", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_6_1F, SPA_TYPE_AUDIO_LAYOUT_BASE "6.1 Front", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_7_0, SPA_TYPE_AUDIO_LAYOUT_BASE "7.0", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_7_0F, SPA_TYPE_AUDIO_LAYOUT_BASE "7.0 Front", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_7_1, SPA_TYPE_AUDIO_LAYOUT_BASE "7.1", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_7_1W, SPA_TYPE_AUDIO_LAYOUT_BASE "7.1 Wide", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_7_1WR, SPA_TYPE_AUDIO_LAYOUT_BASE "7.1 Wide Rear", SPA_TYPE_Int, },
|
||||
{ SPA_AUDIO_LAYOUT_OCTAGONAL, SPA_TYPE_AUDIO_LAYOUT_BASE "Octagonal", SPA_TYPE_Int, },
|
||||
{ 0, NULL, },
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -354,6 +354,11 @@ spa_pod_builder_fraction(struct spa_pod_builder *builder, uint32_t num, uint32_t
|
|||
return spa_pod_builder_primitive(builder, &p.pod);
|
||||
}
|
||||
|
||||
#define SPA_POD_Array(ctype, child_type, n_vals, ...) \
|
||||
(struct { struct spa_pod_array array; ctype vals[n_vals];}) \
|
||||
{ { { n_vals * sizeof(ctype) + sizeof(struct spa_pod_array_body), SPA_TYPE_Array }, \
|
||||
{ { sizeof(ctype), child_type } } }, { __VA_ARGS__ } }
|
||||
|
||||
static inline uint32_t
|
||||
spa_pod_builder_push_array(struct spa_pod_builder *builder)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue