mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	spa: reorganize params
Split files into separate files. Move type annotations to a matching -types.h files. Move helpers to matching -utils.h files. Add helpers to parse generic audio and video info.
This commit is contained in:
		
							parent
							
								
									4e9c3b26d9
								
							
						
					
					
						commit
						00ae289a14
					
				
					 41 changed files with 2768 additions and 1337 deletions
				
			
		
							
								
								
									
										100
									
								
								spa/include/spa/param/audio/dsd-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								spa/include/spa/param/audio/dsd-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,100 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_AUDIO_DSD_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_AUDIO_DSD_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
 | 
					#include <spa/param/format-utils.h>
 | 
				
			||||||
 | 
					#include <spa/param/audio/format.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_audio_dsd_parse(const struct spa_pod *format, struct spa_audio_info_dsd *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod *position = NULL;
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
 | 
						info->flags = 0;
 | 
				
			||||||
 | 
						res = spa_pod_parse_object(format,
 | 
				
			||||||
 | 
								SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_bitorder,	SPA_POD_OPT_Id(&info->bitorder),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_interleave,	SPA_POD_OPT_Int(&info->interleave),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_rate,		SPA_POD_OPT_Int(&info->rate),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_channels,	SPA_POD_OPT_Int(&info->channels),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_position,	SPA_POD_OPT_Pod(&position));
 | 
				
			||||||
 | 
						if (position == NULL ||
 | 
				
			||||||
 | 
						    !spa_pod_copy_array(position, SPA_TYPE_Id, info->position, SPA_AUDIO_MAX_CHANNELS))
 | 
				
			||||||
 | 
							SPA_FLAG_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_audio_dsd_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_dsd *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsd),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->bitorder != SPA_PARAM_BITORDER_unknown)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_bitorder,	SPA_POD_Id(info->bitorder), 0);
 | 
				
			||||||
 | 
						if (info->interleave != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_interleave,	SPA_POD_Int(info->interleave), 0);
 | 
				
			||||||
 | 
						if (info->rate != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_rate,		SPA_POD_Int(info->rate), 0);
 | 
				
			||||||
 | 
						if (info->channels != 0) {
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_channels,	SPA_POD_Int(info->channels), 0);
 | 
				
			||||||
 | 
							if (!SPA_FLAG_IS_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED)) {
 | 
				
			||||||
 | 
								spa_pod_builder_add(builder, SPA_FORMAT_AUDIO_position,
 | 
				
			||||||
 | 
									SPA_POD_Array(sizeof(uint32_t), SPA_TYPE_Id,
 | 
				
			||||||
 | 
										info->channels, info->position), 0);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_AUDIO_DSD_UTILS_H */
 | 
				
			||||||
							
								
								
									
										75
									
								
								spa/include/spa/param/audio/dsp-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								spa/include/spa/param/audio/dsp-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_AUDIO_DSP_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_AUDIO_DSP_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
 | 
					#include <spa/param/audio/format.h>
 | 
				
			||||||
 | 
					#include <spa/param/format-utils.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_audio_dsp_parse(const struct spa_pod *format, struct spa_audio_info_dsp *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
 | 
						res = spa_pod_parse_object(format,
 | 
				
			||||||
 | 
								SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_format,	SPA_POD_OPT_Id(&info->format));
 | 
				
			||||||
 | 
						return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_audio_dsp_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_dsp *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->format != SPA_AUDIO_FORMAT_UNKNOWN)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_format,	SPA_POD_Id(info->format), 0);
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_AUDIO_DSP_UTILS_H */
 | 
				
			||||||
							
								
								
									
										48
									
								
								spa/include/spa/param/audio/dsp.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								spa/include/spa/param/audio/dsp.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,48 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_AUDIO_DSP_H
 | 
				
			||||||
 | 
					#define SPA_AUDIO_DSP_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/audio/raw.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct spa_audio_info_dsp {
 | 
				
			||||||
 | 
						enum spa_audio_format format;		/*< format, one of the DSP formats in enum spa_audio_format_dsp */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_AUDIO_INFO_DSP_INIT(...)		((struct spa_audio_info_dsp) { __VA_ARGS__ })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_AUDIO_DSP_H */
 | 
				
			||||||
| 
						 | 
					@ -29,167 +29,62 @@
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \addtogroup spa_param
 | 
					 | 
				
			||||||
 * \{
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <spa/pod/parser.h>
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
#include <spa/pod/builder.h>
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
#include <spa/param/audio/format.h>
 | 
					#include <spa/param/audio/format.h>
 | 
				
			||||||
#include <spa/param/format-utils.h>
 | 
					#include <spa/param/format-utils.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int
 | 
					#include <spa/param/audio/raw-utils.h>
 | 
				
			||||||
spa_format_audio_raw_parse(const struct spa_pod *format, struct spa_audio_info_raw *info)
 | 
					#include <spa/param/audio/dsp-utils.h>
 | 
				
			||||||
{
 | 
					#include <spa/param/audio/iec958-utils.h>
 | 
				
			||||||
	struct spa_pod *position = NULL;
 | 
					#include <spa/param/audio/dsd-utils.h>
 | 
				
			||||||
	int res;
 | 
					 | 
				
			||||||
	info->flags = 0;
 | 
					 | 
				
			||||||
	res = spa_pod_parse_object(format,
 | 
					 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, NULL,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_format,	SPA_POD_OPT_Id(&info->format),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_rate,		SPA_POD_OPT_Int(&info->rate),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_channels,	SPA_POD_OPT_Int(&info->channels),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_position,	SPA_POD_OPT_Pod(&position));
 | 
					 | 
				
			||||||
	if (position == NULL ||
 | 
					 | 
				
			||||||
	    !spa_pod_copy_array(position, SPA_TYPE_Id, info->position, SPA_AUDIO_MAX_CHANNELS))
 | 
					 | 
				
			||||||
		SPA_FLAG_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_audio_parse(const struct spa_pod *format, struct spa_audio_info *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ((res = spa_format_parse(format, &info->media_type, &info->media_subtype)) < 0)
 | 
				
			||||||
		return res;
 | 
							return res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (info->media_type != SPA_MEDIA_TYPE_audio)
 | 
				
			||||||
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (info->media_type) {
 | 
				
			||||||
 | 
						case SPA_MEDIA_SUBTYPE_raw:
 | 
				
			||||||
 | 
							return spa_format_audio_raw_parse(format, &info->info.raw);
 | 
				
			||||||
 | 
						case SPA_MEDIA_SUBTYPE_dsp:
 | 
				
			||||||
 | 
							return spa_format_audio_dsp_parse(format, &info->info.dsp);
 | 
				
			||||||
 | 
						case SPA_MEDIA_SUBTYPE_iec958:
 | 
				
			||||||
 | 
							return spa_format_audio_iec958_parse(format, &info->info.iec958);
 | 
				
			||||||
 | 
						case SPA_MEDIA_SUBTYPE_dsd:
 | 
				
			||||||
 | 
							return spa_format_audio_dsd_parse(format, &info->info.dsd);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return -ENOTSUP;
 | 
				
			||||||
static inline int
 | 
					 | 
				
			||||||
spa_format_audio_dsp_parse(const struct spa_pod *format, struct spa_audio_info_dsp *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int res;
 | 
					 | 
				
			||||||
	res = spa_pod_parse_object(format,
 | 
					 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, NULL,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_format,	SPA_POD_OPT_Id(&info->format));
 | 
					 | 
				
			||||||
	return res;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline int
 | 
					 | 
				
			||||||
spa_format_audio_iec958_parse(const struct spa_pod *format, struct spa_audio_info_iec958 *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int res;
 | 
					 | 
				
			||||||
	res = spa_pod_parse_object(format,
 | 
					 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, NULL,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_iec958Codec,	SPA_POD_OPT_Id(&info->codec),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_rate,		SPA_POD_OPT_Int(&info->rate));
 | 
					 | 
				
			||||||
	return res;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline int
 | 
					 | 
				
			||||||
spa_format_audio_dsd_parse(const struct spa_pod *format, struct spa_audio_info_dsd *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct spa_pod *position = NULL;
 | 
					 | 
				
			||||||
	int res;
 | 
					 | 
				
			||||||
	info->flags = 0;
 | 
					 | 
				
			||||||
	res = spa_pod_parse_object(format,
 | 
					 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, NULL,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_bitorder,	SPA_POD_OPT_Id(&info->bitorder),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_interleave,	SPA_POD_OPT_Int(&info->interleave),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_rate,		SPA_POD_OPT_Int(&info->rate),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_channels,	SPA_POD_OPT_Int(&info->channels),
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_position,	SPA_POD_OPT_Pod(&position));
 | 
					 | 
				
			||||||
	if (position == NULL ||
 | 
					 | 
				
			||||||
	    !spa_pod_copy_array(position, SPA_TYPE_Id, info->position, SPA_AUDIO_MAX_CHANNELS))
 | 
					 | 
				
			||||||
		SPA_FLAG_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return res;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline struct spa_pod *
 | 
					static inline struct spa_pod *
 | 
				
			||||||
spa_format_audio_raw_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_raw *info)
 | 
					spa_format_audio_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info *info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct spa_pod_frame f;
 | 
						switch (info->media_type) {
 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
						case SPA_MEDIA_SUBTYPE_raw:
 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
							return spa_format_audio_raw_build(builder, id, &info->info.raw);
 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
						case SPA_MEDIA_SUBTYPE_dsp:
 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
 | 
							return spa_format_audio_dsp_build(builder, id, &info->info.dsp);
 | 
				
			||||||
			0);
 | 
						case SPA_MEDIA_SUBTYPE_iec958:
 | 
				
			||||||
	if (info->format != SPA_AUDIO_FORMAT_UNKNOWN)
 | 
							return spa_format_audio_iec958_build(builder, id, &info->info.iec958);
 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
						case SPA_MEDIA_SUBTYPE_dsd:
 | 
				
			||||||
			SPA_FORMAT_AUDIO_format,	SPA_POD_Id(info->format), 0);
 | 
							return spa_format_audio_dsd_build(builder, id, &info->info.dsd);
 | 
				
			||||||
	if (info->rate != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_rate,		SPA_POD_Int(info->rate), 0);
 | 
					 | 
				
			||||||
	if (info->channels != 0) {
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_channels,	SPA_POD_Int(info->channels), 0);
 | 
					 | 
				
			||||||
		if (!SPA_FLAG_IS_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED)) {
 | 
					 | 
				
			||||||
			spa_pod_builder_add(builder, SPA_FORMAT_AUDIO_position,
 | 
					 | 
				
			||||||
				SPA_POD_Array(sizeof(uint32_t), SPA_TYPE_Id,
 | 
					 | 
				
			||||||
					info->channels, info->position), 0);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						errno = ENOTSUP;
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline struct spa_pod *
 | 
					 | 
				
			||||||
spa_format_audio_dsp_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_dsp *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct spa_pod_frame f;
 | 
					 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
					 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
					 | 
				
			||||||
			0);
 | 
					 | 
				
			||||||
	if (info->format != SPA_AUDIO_FORMAT_UNKNOWN)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_format,	SPA_POD_Id(info->format), 0);
 | 
					 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline struct spa_pod *
 | 
					 | 
				
			||||||
spa_format_audio_iec958_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_iec958 *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct spa_pod_frame f;
 | 
					 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
					 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_iec958),
 | 
					 | 
				
			||||||
			0);
 | 
					 | 
				
			||||||
	if (info->codec != SPA_AUDIO_IEC958_CODEC_UNKNOWN)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_iec958Codec,	SPA_POD_Id(info->codec), 0);
 | 
					 | 
				
			||||||
	if (info->rate != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_rate,		SPA_POD_Int(info->rate), 0);
 | 
					 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline struct spa_pod *
 | 
					 | 
				
			||||||
spa_format_audio_dsd_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_dsd *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct spa_pod_frame f;
 | 
					 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
					 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsd),
 | 
					 | 
				
			||||||
			0);
 | 
					 | 
				
			||||||
	if (info->bitorder != SPA_PARAM_BITORDER_unknown)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_bitorder,	SPA_POD_Id(info->bitorder), 0);
 | 
					 | 
				
			||||||
	if (info->interleave != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_interleave,	SPA_POD_Int(info->interleave), 0);
 | 
					 | 
				
			||||||
	if (info->rate != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_rate,		SPA_POD_Int(info->rate), 0);
 | 
					 | 
				
			||||||
	if (info->channels != 0) {
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_AUDIO_channels,	SPA_POD_Int(info->channels), 0);
 | 
					 | 
				
			||||||
		if (!SPA_FLAG_IS_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED)) {
 | 
					 | 
				
			||||||
			spa_pod_builder_add(builder, SPA_FORMAT_AUDIO_position,
 | 
					 | 
				
			||||||
				SPA_POD_Array(sizeof(uint32_t), SPA_TYPE_Id,
 | 
					 | 
				
			||||||
					info->channels, info->position), 0);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,7 @@ extern "C" {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <spa/param/format.h>
 | 
					#include <spa/param/format.h>
 | 
				
			||||||
#include <spa/param/audio/raw.h>
 | 
					#include <spa/param/audio/raw.h>
 | 
				
			||||||
 | 
					#include <spa/param/audio/dsp.h>
 | 
				
			||||||
#include <spa/param/audio/iec958.h>
 | 
					#include <spa/param/audio/iec958.h>
 | 
				
			||||||
#include <spa/param/audio/dsd.h>
 | 
					#include <spa/param/audio/dsd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										58
									
								
								spa/include/spa/param/audio/iec958-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								spa/include/spa/param/audio/iec958-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,58 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_AUDIO_IEC958_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_AUDIO_IEC958_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/audio/iec958.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AudioIEC958Codec		SPA_TYPE_INFO_ENUM_BASE "AudioIEC958Codec"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE	SPA_TYPE_INFO_AudioIEC958Codec ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_audio_iec958_codec[] = {
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_UNKNOWN, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "UNKNOWN", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_PCM, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "PCM", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_DTS, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "DTS", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_AC3, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "AC3", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_MPEG, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "MPEG", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_MPEG2_AAC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "MPEG2-AAC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_EAC3, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "EAC3", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_TRUEHD, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "TrueHD", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_IEC958_CODEC_DTSHD, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "DTS-HD", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_AUDIO_RAW_IEC958_TYPES_H */
 | 
				
			||||||
							
								
								
									
										79
									
								
								spa/include/spa/param/audio/iec958-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								spa/include/spa/param/audio/iec958-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,79 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_AUDIO_IEC958_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_AUDIO_IEC958_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
 | 
					#include <spa/param/audio/format.h>
 | 
				
			||||||
 | 
					#include <spa/param/format-utils.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_audio_iec958_parse(const struct spa_pod *format, struct spa_audio_info_iec958 *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
 | 
						res = spa_pod_parse_object(format,
 | 
				
			||||||
 | 
								SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_iec958Codec,	SPA_POD_OPT_Id(&info->codec),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_rate,		SPA_POD_OPT_Int(&info->rate));
 | 
				
			||||||
 | 
						return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_audio_iec958_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_iec958 *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_iec958),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->codec != SPA_AUDIO_IEC958_CODEC_UNKNOWN)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_iec958Codec,	SPA_POD_Id(info->codec), 0);
 | 
				
			||||||
 | 
						if (info->rate != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_rate,		SPA_POD_Int(info->rate), 0);
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_AUDIO_IEC958_UTILS_H */
 | 
				
			||||||
							
								
								
									
										277
									
								
								spa/include/spa/param/audio/raw-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										277
									
								
								spa/include/spa/param/audio/raw-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,277 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_AUDIO_RAW_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_AUDIO_RAW_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/audio/raw.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AudioFormat		SPA_TYPE_INFO_ENUM_BASE "AudioFormat"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AUDIO_FORMAT_BASE		SPA_TYPE_INFO_AudioFormat ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_audio_format[] = {
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_UNKNOWN, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "UNKNOWN", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_ENCODED, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ENCODED", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S8, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S8", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U8, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U8", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S16_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S16_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U16_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U16_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S20_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S20_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U20_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U20_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S18_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S18_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U18_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U18_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F64_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F64_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64BE", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_ULAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ULAW", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_ALAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ALAW", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U8P", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S16P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16P", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32P", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32P", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24P", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32P", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F64P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64P", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S8P", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if __BYTE_ORDER == __BIG_ENDIAN
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F64_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F64, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64", NULL },
 | 
				
			||||||
 | 
					#elif __BYTE_ORDER == __LITTLE_ENDIAN
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_S18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_U18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32OE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F64, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FORMAT_F64_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64OE", NULL },
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AudioFlags	SPA_TYPE_INFO_FLAGS_BASE "AudioFlags"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AUDIO_FLAGS_BASE	SPA_TYPE_INFO_AudioFlags ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_audio_flags[] = {
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FLAG_NONE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FLAGS_BASE "none", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_FLAG_UNPOSITIONED, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FLAGS_BASE "unpositioned", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AudioChannel		SPA_TYPE_INFO_ENUM_BASE "AudioChannel"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_AUDIO_CHANNEL_BASE	SPA_TYPE_INFO_AudioChannel ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_audio_channel[] = {
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_UNKNOWN, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "UNK", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_NA,	SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "NA", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_MONO, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "MONO", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FL", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FR", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_LFE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "LFE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_SL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "SL", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_SR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "SR", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FLC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FRC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_RC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_RL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RL", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_RR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RR", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TFL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFL", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TFC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TFR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFR", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TRL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TRL", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TRC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TRR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TRR", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_RLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RLC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_RRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RRC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FLW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FLW", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FRW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FRW", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_LFE2, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "LFE2", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FLH, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FLH", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FCH, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FCH", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_FRH, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FRH", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TFLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFLC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TFRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFRC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TSL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TSL", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_TSR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TSR", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_LLFE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "LLFR", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_RLFE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RLFE", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_BC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "BC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_BLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "BLC", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_BRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "BRC", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX0, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX0", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX1, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX1", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX2, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX2", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX3, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX3", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX4, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX4", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX5, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX5", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX6, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX6", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX7, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX7", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX8, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX8", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX9, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX9", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX10, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX10", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX11, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX11", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX12, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX12", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX13, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX13", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX14, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX14", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX15, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX15", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX16", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX17, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX17", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX18", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX19, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX19", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX20", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX21, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX21", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX22, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX22", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX23, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX23", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX24", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX25, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX25", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX26, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX26", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX27, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX27", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX28, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX28", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX29, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX29", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX30, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX30", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX31, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX31", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX32", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX33, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX33", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX34, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX34", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX35, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX35", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX36, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX36", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX37, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX37", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX38, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX38", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX39, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX39", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX40, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX40", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX41, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX41", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX42, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX42", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX43, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX43", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX44, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX44", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX45, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX45", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX46, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX46", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX47, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX47", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX48, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX48", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX49, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX49", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX50, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX50", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX51, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX51", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX52, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX52", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX53, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX53", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX54, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX54", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX55, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX55", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX56, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX56", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX57, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX57", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX58, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX58", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX59, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX59", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX60, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX60", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX61, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX61", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX62, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX62", NULL },
 | 
				
			||||||
 | 
						{ SPA_AUDIO_CHANNEL_AUX63, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX63", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_AUDIO_RAW_RAW_TYPES_H */
 | 
				
			||||||
							
								
								
									
										96
									
								
								spa/include/spa/param/audio/raw-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								spa/include/spa/param/audio/raw-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,96 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_AUDIO_RAW_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_AUDIO_RAW_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
 | 
					#include <spa/param/audio/format.h>
 | 
				
			||||||
 | 
					#include <spa/param/format-utils.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_audio_raw_parse(const struct spa_pod *format, struct spa_audio_info_raw *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod *position = NULL;
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
 | 
						info->flags = 0;
 | 
				
			||||||
 | 
						res = spa_pod_parse_object(format,
 | 
				
			||||||
 | 
								SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_format,	SPA_POD_OPT_Id(&info->format),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_rate,		SPA_POD_OPT_Int(&info->rate),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_channels,	SPA_POD_OPT_Int(&info->channels),
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_position,	SPA_POD_OPT_Pod(&position));
 | 
				
			||||||
 | 
						if (position == NULL ||
 | 
				
			||||||
 | 
						    !spa_pod_copy_array(position, SPA_TYPE_Id, info->position, SPA_AUDIO_MAX_CHANNELS))
 | 
				
			||||||
 | 
							SPA_FLAG_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_audio_raw_build(struct spa_pod_builder *builder, uint32_t id, struct spa_audio_info_raw *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_audio),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->format != SPA_AUDIO_FORMAT_UNKNOWN)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_format,	SPA_POD_Id(info->format), 0);
 | 
				
			||||||
 | 
						if (info->rate != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_rate,		SPA_POD_Int(info->rate), 0);
 | 
				
			||||||
 | 
						if (info->channels != 0) {
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_AUDIO_channels,	SPA_POD_Int(info->channels), 0);
 | 
				
			||||||
 | 
							if (!SPA_FLAG_IS_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED)) {
 | 
				
			||||||
 | 
								spa_pod_builder_add(builder, SPA_FORMAT_AUDIO_position,
 | 
				
			||||||
 | 
									SPA_POD_Array(sizeof(uint32_t), SPA_TYPE_Id,
 | 
				
			||||||
 | 
										info->channels, info->position), 0);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_AUDIO_RAW_UTILS_H */
 | 
				
			||||||
| 
						 | 
					@ -306,13 +306,6 @@ struct spa_audio_info_raw {
 | 
				
			||||||
								  *  of channels ex. "FL,FR" */
 | 
													  *  of channels ex. "FL,FR" */
 | 
				
			||||||
#define SPA_KEY_AUDIO_ALLOWED_RATES	"audio.allowed-rates"	/**< a list of allowed samplerates
 | 
					#define SPA_KEY_AUDIO_ALLOWED_RATES	"audio.allowed-rates"	/**< a list of allowed samplerates
 | 
				
			||||||
								  *  ex. "[ 44100 48000 ]" */
 | 
													  *  ex. "[ 44100 48000 ]" */
 | 
				
			||||||
 | 
					 | 
				
			||||||
struct spa_audio_info_dsp {
 | 
					 | 
				
			||||||
	enum spa_audio_format format;		/*< format, one of the DSP formats in enum spa_audio_format_dsp */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_AUDIO_INFO_DSP_INIT(...)		((struct spa_audio_info_dsp) { __VA_ARGS__ })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,272 +25,7 @@
 | 
				
			||||||
#ifndef SPA_AUDIO_TYPES_H
 | 
					#ifndef SPA_AUDIO_TYPES_H
 | 
				
			||||||
#define SPA_AUDIO_TYPES_H
 | 
					#define SPA_AUDIO_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#include <spa/param/audio/raw-types.h>
 | 
				
			||||||
extern "C" {
 | 
					#include <spa/param/audio/iec958-types.h>
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					#endif /* SPA_AUDIO_TYPES_H */
 | 
				
			||||||
 * \addtogroup spa_param
 | 
					 | 
				
			||||||
 * \{
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <spa/param/audio/raw.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AudioFormat		SPA_TYPE_INFO_ENUM_BASE "AudioFormat"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AUDIO_FORMAT_BASE		SPA_TYPE_INFO_AudioFormat ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_audio_format[] = {
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_UNKNOWN, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "UNKNOWN", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_ENCODED, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ENCODED", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S8, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S8", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U8, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U8", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U16_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U16_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S20_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S20_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U20_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U20_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S18_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S18_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U18_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U18_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F32_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F32_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64_LE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64_BE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64BE", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_ULAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ULAW", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_ALAW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "ALAW", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U8P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F32P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S8P, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S8P", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if __BYTE_ORDER == __BIG_ENDIAN
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64", NULL },
 | 
					 | 
				
			||||||
#elif __BYTE_ORDER == __LITTLE_ENDIAN
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S16OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U16_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U16OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24_32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24_32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S24OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U24_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U24OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S20OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U20_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U20OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_S18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "S18OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_U18_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "U18OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F32_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F32OE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FORMAT_F64_OE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FORMAT_BASE "F64OE", NULL },
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AudioFlags		SPA_TYPE_INFO_FLAGS_BASE "AudioFlags"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AUDIO_FLAGS_BASE	SPA_TYPE_INFO_AudioFlags ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_audio_flags[] = {
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FLAG_NONE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FLAGS_BASE "none", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_FLAG_UNPOSITIONED, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_FLAGS_BASE "unpositioned", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AudioChannel		SPA_TYPE_INFO_ENUM_BASE "AudioChannel"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AUDIO_CHANNEL_BASE	SPA_TYPE_INFO_AudioChannel ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_audio_channel[] = {
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_UNKNOWN, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "UNK", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_NA,	SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "NA", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_MONO, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "MONO", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FL", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_LFE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "LFE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_SL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "SL", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_SR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "SR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FLC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FRC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_RC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_RL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RL", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_RR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TFL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFL", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TFC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TFR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TRL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TRL", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TRC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TRR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TRR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_RLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RLC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_RRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RRC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FLW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FLW", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FRW, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FRW", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_LFE2, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "LFE2", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FLH, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FLH", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FCH, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FCH", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_FRH, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "FRH", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TFLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFLC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TFRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TFRC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TSL, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TSL", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_TSR, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "TSR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_LLFE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "LLFR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_RLFE, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "RLFE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_BC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "BC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_BLC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "BLC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_BRC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "BRC", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX0, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX0", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX1, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX1", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX2, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX2", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX3, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX3", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX4, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX4", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX5, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX5", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX6, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX6", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX7, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX7", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX8, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX8", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX9, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX9", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX10, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX10", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX11, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX11", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX12, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX12", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX13, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX13", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX14, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX14", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX15, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX15", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX16, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX17, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX17", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX18, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX18", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX19, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX19", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX20, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX20", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX21, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX21", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX22, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX22", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX23, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX23", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX24, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX24", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX25, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX25", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX26, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX26", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX27, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX27", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX28, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX28", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX29, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX29", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX30, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX30", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX31, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX31", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX32, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX33, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX33", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX34, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX34", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX35, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX35", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX36, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX36", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX37, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX37", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX38, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX38", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX39, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX39", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX40, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX40", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX41, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX41", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX42, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX42", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX43, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX43", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX44, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX44", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX45, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX45", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX46, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX46", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX47, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX47", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX48, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX48", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX49, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX49", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX50, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX50", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX51, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX51", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX52, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX52", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX53, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX53", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX54, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX54", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX55, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX55", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX56, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX56", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX57, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX57", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX58, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX58", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX59, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX59", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX60, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX60", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX61, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX61", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX62, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX62", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_CHANNEL_AUX63, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_CHANNEL_BASE "AUX63", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <spa/param/audio/iec958.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AudioIEC958Codec		SPA_TYPE_INFO_ENUM_BASE "AudioIEC958Codec"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE	SPA_TYPE_INFO_AudioIEC958Codec ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_audio_iec958_codec[] = {
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_UNKNOWN, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "UNKNOWN", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_PCM, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "PCM", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_DTS, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "DTS", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_AC3, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "AC3", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_MPEG, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "MPEG", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_MPEG2_AAC, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "MPEG2-AAC", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_EAC3, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "EAC3", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_TRUEHD, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "TrueHD", NULL },
 | 
					 | 
				
			||||||
	{ SPA_AUDIO_IEC958_CODEC_DTSHD, SPA_TYPE_Int, SPA_TYPE_INFO_AUDIO_IEC958_CODEC_BASE "DTS-HD", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
}  /* extern "C" */
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* SPA_AUDIO_RAW_TYPES_H */
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										89
									
								
								spa/include/spa/param/buffers-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								spa/include/spa/param/buffers-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,89 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_BUFFERS_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_BUFFERS_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param-types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/buffers.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_Meta		SPA_TYPE_INFO_PARAM_BASE "Meta"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_META_BASE		SPA_TYPE_INFO_PARAM_Meta ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_meta[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_META_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_META_BASE, spa_type_param },
 | 
				
			||||||
 | 
						{ SPA_PARAM_META_type, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_META_BASE "type", spa_type_meta_type },
 | 
				
			||||||
 | 
						{ SPA_PARAM_META_size, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_META_BASE "size", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Base for parameters that describe IO areas to exchange data,
 | 
				
			||||||
 | 
					 * control and properties with a node.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_IO		SPA_TYPE_INFO_PARAM_BASE "IO"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_IO_BASE		SPA_TYPE_INFO_PARAM_IO ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_io[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_IO_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_IO_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_IO_id, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_IO_BASE "id", spa_type_io },
 | 
				
			||||||
 | 
						{ SPA_PARAM_IO_size, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_IO_BASE "size", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_Buffers			SPA_TYPE_INFO_PARAM_BASE "Buffers"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_BUFFERS_BASE		SPA_TYPE_INFO_PARAM_Buffers ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_BlockInfo			SPA_TYPE_INFO_PARAM_BUFFERS_BASE "BlockInfo"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE		SPA_TYPE_INFO_PARAM_BlockInfo ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_buffers[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_BUFFERS_START,    SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_BUFFERS_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BUFFERS_buffers,  SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BUFFERS_BASE "buffers", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BUFFERS_blocks,   SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BUFFERS_BASE "blocks", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BUFFERS_size,     SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "size", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BUFFERS_stride,   SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "stride", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BUFFERS_align,    SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "align", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BUFFERS_dataType, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "dataType", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_BUFFERS_TYPES_H */
 | 
				
			||||||
							
								
								
									
										72
									
								
								spa/include/spa/param/buffers.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								spa/include/spa/param/buffers.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,72 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_BUFFERS_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_BUFFERS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamBuffers */
 | 
				
			||||||
 | 
					enum spa_param_buffers {
 | 
				
			||||||
 | 
						SPA_PARAM_BUFFERS_START,
 | 
				
			||||||
 | 
						SPA_PARAM_BUFFERS_buffers,	/**< number of buffers (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_BUFFERS_blocks,	/**< number of data blocks per buffer (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_BUFFERS_size,		/**< size of a data block memory (Int)*/
 | 
				
			||||||
 | 
						SPA_PARAM_BUFFERS_stride,	/**< stride of data block memory (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_BUFFERS_align,	/**< alignment of data block memory (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_BUFFERS_dataType,	/**< possible memory types (Int, mask of enum spa_data_type) */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamMeta */
 | 
				
			||||||
 | 
					enum spa_param_meta {
 | 
				
			||||||
 | 
						SPA_PARAM_META_START,
 | 
				
			||||||
 | 
						SPA_PARAM_META_type,	/**< the metadata, one of enum spa_meta_type (Id enum spa_meta_type) */
 | 
				
			||||||
 | 
						SPA_PARAM_META_size,	/**< the expected maximum size the meta (Int) */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamIO */
 | 
				
			||||||
 | 
					enum spa_param_io {
 | 
				
			||||||
 | 
						SPA_PARAM_IO_START,
 | 
				
			||||||
 | 
						SPA_PARAM_IO_id,	/**< type ID, uniquely identifies the io area (Id enum spa_io_type) */
 | 
				
			||||||
 | 
						SPA_PARAM_IO_size,	/**< size of the io area (Int) */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_BUFFERS_H */
 | 
				
			||||||
							
								
								
									
										172
									
								
								spa/include/spa/param/format-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								spa/include/spa/param/format-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,172 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_FORMAT_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_FORMAT_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/format.h>
 | 
				
			||||||
 | 
					#include <spa/param/param-types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/audio/type-info.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/type-info.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_Format			SPA_TYPE_INFO_PARAM_BASE "Format"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_FORMAT_BASE		SPA_TYPE_INFO_Format ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_MediaType		SPA_TYPE_INFO_ENUM_BASE "MediaType"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_MEDIA_TYPE_BASE	SPA_TYPE_INFO_MediaType ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_media_type[] = {
 | 
				
			||||||
 | 
						{ SPA_MEDIA_TYPE_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "unknown", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_TYPE_audio,   SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "audio", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_TYPE_video,   SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "video", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_TYPE_image,   SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "image", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_TYPE_binary,  SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "binary", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_TYPE_stream,  SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "stream", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_TYPE_application,  SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "application", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_MediaSubtype		SPA_TYPE_INFO_ENUM_BASE "MediaSubtype"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE	SPA_TYPE_INFO_MediaSubtype ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_media_subtype[] = {
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "unknown", NULL },
 | 
				
			||||||
 | 
						/* generic subtypes */
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_raw, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "raw", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_dsp, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "dsp", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_iec958, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "iec958", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_dsd, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "dsd", NULL },
 | 
				
			||||||
 | 
						/* audio subtypes */
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_mp3, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mp3", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_aac, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "aac", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_vorbis, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vorbis", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_wma, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "wma", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_ra, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "ra", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_sbc, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "sbc", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_adpcm, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "adpcm", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_g723, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "g723", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_g726, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "g726", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_g729, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "g729", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_amr, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "amr", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_gsm, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "gsm", NULL },
 | 
				
			||||||
 | 
						/* video subtypes */
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_h264, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "h264", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_mjpg, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mjpg", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_dv, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "dv", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_mpegts, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpegts", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_h263, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "h263", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_mpeg1, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpeg1", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_mpeg2, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpeg2", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_mpeg4, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpeg4", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_xvid, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "xvid", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_vc1, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vc1", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_vp8, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vp8", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_vp9, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vp9", NULL },
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_bayer, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "bayer", NULL },
 | 
				
			||||||
 | 
						/* image subtypes */
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_jpeg, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "jpeg", NULL },
 | 
				
			||||||
 | 
						/* stream subtypes */
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_midi, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "midi", NULL },
 | 
				
			||||||
 | 
						/* application subtypes */
 | 
				
			||||||
 | 
						{ SPA_MEDIA_SUBTYPE_control, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "control", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_FormatAudio		SPA_TYPE_INFO_FORMAT_BASE "Audio"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_FORMAT_AUDIO_BASE		SPA_TYPE_INFO_FormatAudio ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_FormatVideo		SPA_TYPE_INFO_FORMAT_BASE "Video"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_FORMAT_VIDEO_BASE		SPA_TYPE_INFO_FormatVideo ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_FORMAT_VIDEO_H264		SPA_TYPE_INFO_FORMAT_VIDEO_BASE "H264"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_FORMAT_VIDEO_H264_BASE	SPA_TYPE_INFO_FORMAT_VIDEO_H264 ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_format[] = {
 | 
				
			||||||
 | 
						{ SPA_FORMAT_START, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_BASE, spa_type_param, },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_FORMAT_mediaType, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_BASE "mediaType",
 | 
				
			||||||
 | 
							spa_type_media_type, },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_mediaSubtype, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_BASE "mediaSubtype",
 | 
				
			||||||
 | 
							spa_type_media_subtype, },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_format, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "format",
 | 
				
			||||||
 | 
							spa_type_audio_format },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_flags, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "flags",
 | 
				
			||||||
 | 
							spa_type_audio_flags },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_rate, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "rate", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_channels, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "channels", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_position, SPA_TYPE_Array, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "position",
 | 
				
			||||||
 | 
							spa_type_prop_channel_map },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_iec958Codec, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "iec958Codec",
 | 
				
			||||||
 | 
							spa_type_audio_iec958_codec },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_bitorder, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "bitorder",
 | 
				
			||||||
 | 
							spa_type_param_bitorder },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_AUDIO_interleave, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "interleave", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_format, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "format",
 | 
				
			||||||
 | 
							spa_type_video_format, },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_modifier, SPA_TYPE_Long, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "modifier", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_size,  SPA_TYPE_Rectangle, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "size", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_framerate, SPA_TYPE_Fraction, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "framerate", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_maxFramerate, SPA_TYPE_Fraction, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "maxFramerate", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_views, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "views", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_interlaceMode, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "interlaceMode",
 | 
				
			||||||
 | 
							spa_type_video_interlace_mode, },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_pixelAspectRatio, SPA_TYPE_Fraction, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "pixelAspectRatio", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_multiviewMode, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "multiviewMode", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_multiviewFlags, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "multiviewFlags", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_chromaSite, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "chromaSite", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_colorRange, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "colorRange", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_colorMatrix, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "colorMatrix", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_transferFunction, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "transferFunction", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_colorPrimaries, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "colorPrimaries", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_profile, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "profile", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_level, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "level", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_H264_streamFormat, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_H264_BASE "streamFormat", NULL },
 | 
				
			||||||
 | 
						{ SPA_FORMAT_VIDEO_H264_alignment, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_H264_BASE "alignment", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_FORMAT_TYPES_H */
 | 
				
			||||||
							
								
								
									
										73
									
								
								spa/include/spa/param/latency-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								spa/include/spa/param/latency-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,73 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_LATENCY_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_LATENCY_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/latency.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_Latency		SPA_TYPE_INFO_PARAM_BASE "Latency"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_LATENCY_BASE	SPA_TYPE_INFO_PARAM_Latency ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_latency[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_LATENCY_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_direction, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_LATENCY_BASE "direction", spa_type_direction, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_minQuantum, SPA_TYPE_Float, SPA_TYPE_INFO_PARAM_LATENCY_BASE "minQuantum", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_maxQuantum, SPA_TYPE_Float, SPA_TYPE_INFO_PARAM_LATENCY_BASE "maxQuantum", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_minRate, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_LATENCY_BASE "minRate", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_maxRate, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_LATENCY_BASE "maxRate", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_minNs, SPA_TYPE_Long, SPA_TYPE_INFO_PARAM_LATENCY_BASE "minNs", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_LATENCY_maxNs, SPA_TYPE_Long, SPA_TYPE_INFO_PARAM_LATENCY_BASE "maxNs", NULL, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_ProcessLatency		SPA_TYPE_INFO_PARAM_BASE "ProcessLatency"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE	SPA_TYPE_INFO_PARAM_ProcessLatency ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_process_latency[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROCESS_LATENCY_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_LATENCY_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROCESS_LATENCY_quantum, SPA_TYPE_Float, SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE "quantum", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROCESS_LATENCY_rate, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE "rate", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROCESS_LATENCY_ns, SPA_TYPE_Long, SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE "ns", NULL, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_LATENCY_TYPES_H */
 | 
				
			||||||
| 
						 | 
					@ -38,19 +38,7 @@ extern "C" {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <spa/pod/builder.h>
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
#include <spa/pod/parser.h>
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
#include <spa/param/param.h>
 | 
					#include <spa/param/latency.h>
 | 
				
			||||||
 | 
					 | 
				
			||||||
struct spa_latency_info {
 | 
					 | 
				
			||||||
	enum spa_direction direction;
 | 
					 | 
				
			||||||
	float min_quantum;
 | 
					 | 
				
			||||||
	float max_quantum;
 | 
					 | 
				
			||||||
	uint32_t min_rate;
 | 
					 | 
				
			||||||
	uint32_t max_rate;
 | 
					 | 
				
			||||||
	uint64_t min_ns;
 | 
					 | 
				
			||||||
	uint64_t max_ns;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_LATENCY_INFO(dir,...) ((struct spa_latency_info) { .direction = (dir), ## __VA_ARGS__ })
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int
 | 
					static inline int
 | 
				
			||||||
spa_latency_info_compare(const struct spa_latency_info *a, struct spa_latency_info *b)
 | 
					spa_latency_info_compare(const struct spa_latency_info *a, struct spa_latency_info *b)
 | 
				
			||||||
| 
						 | 
					@ -140,14 +128,6 @@ spa_latency_build(struct spa_pod_builder *builder, uint32_t id, const struct spa
 | 
				
			||||||
			SPA_PARAM_LATENCY_maxNs, SPA_POD_Long(info->max_ns));
 | 
								SPA_PARAM_LATENCY_maxNs, SPA_POD_Long(info->max_ns));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct spa_process_latency_info {
 | 
					 | 
				
			||||||
	float quantum;
 | 
					 | 
				
			||||||
	uint32_t rate;
 | 
					 | 
				
			||||||
	uint64_t ns;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_PROCESS_LATENCY_INFO_INIT(...)	((struct spa_process_latency_info) { __VA_ARGS__ })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline int
 | 
					static inline int
 | 
				
			||||||
spa_process_latency_parse(const struct spa_pod *latency, struct spa_process_latency_info *info)
 | 
					spa_process_latency_parse(const struct spa_pod *latency, struct spa_process_latency_info *info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										89
									
								
								spa/include/spa/param/latency.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								spa/include/spa/param/latency.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,89 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2023 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_LATENY_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_LATENY_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamLatency */
 | 
				
			||||||
 | 
					enum spa_param_latency {
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_START,
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_direction,		/**< direction, input/output (Id enum spa_direction) */
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_minQuantum,		/**< min latency relative to quantum (Float) */
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_maxQuantum,		/**< max latency relative to quantum (Float) */
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_minRate,		/**< min latency (Int) relative to rate */
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_maxRate,		/**< max latency (Int) relative to rate */
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_minNs,		/**< min latency (Long) in nanoseconds */
 | 
				
			||||||
 | 
						SPA_PARAM_LATENCY_maxNs,		/**< max latency (Long) in nanoseconds */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** helper structure for managing latency objects */
 | 
				
			||||||
 | 
					struct spa_latency_info {
 | 
				
			||||||
 | 
						enum spa_direction direction;
 | 
				
			||||||
 | 
						float min_quantum;
 | 
				
			||||||
 | 
						float max_quantum;
 | 
				
			||||||
 | 
						uint32_t min_rate;
 | 
				
			||||||
 | 
						uint32_t max_rate;
 | 
				
			||||||
 | 
						uint64_t min_ns;
 | 
				
			||||||
 | 
						uint64_t max_ns;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_LATENCY_INFO(dir,...) ((struct spa_latency_info) { .direction = (dir), ## __VA_ARGS__ })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamProcessLatency */
 | 
				
			||||||
 | 
					enum spa_param_process_latency {
 | 
				
			||||||
 | 
						SPA_PARAM_PROCESS_LATENCY_START,
 | 
				
			||||||
 | 
						SPA_PARAM_PROCESS_LATENCY_quantum,	/**< latency relative to quantum (Float) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROCESS_LATENCY_rate,		/**< latency (Int) relative to rate */
 | 
				
			||||||
 | 
						SPA_PARAM_PROCESS_LATENCY_ns,		/**< latency (Long) in nanoseconds */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Helper structure for managing process latency objects */
 | 
				
			||||||
 | 
					struct spa_process_latency_info {
 | 
				
			||||||
 | 
						float quantum;
 | 
				
			||||||
 | 
						uint32_t rate;
 | 
				
			||||||
 | 
						uint64_t ns;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_PROCESS_LATENCY_INFO_INIT(...)	((struct spa_process_latency_info) { __VA_ARGS__ })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_LATENY_H */
 | 
				
			||||||
							
								
								
									
										116
									
								
								spa/include/spa/param/param-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								spa/include/spa/param/param-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/utils/defs.h>
 | 
				
			||||||
 | 
					#include <spa/param/props.h>
 | 
				
			||||||
 | 
					#include <spa/param/format.h>
 | 
				
			||||||
 | 
					#include <spa/buffer/type-info.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* base for parameter object enumerations */
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_ParamId		SPA_TYPE_INFO_ENUM_BASE "ParamId"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_ID_BASE	SPA_TYPE_INFO_ParamId ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_Invalid, SPA_TYPE_None, SPA_TYPE_INFO_PARAM_ID_BASE "Invalid", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PropInfo, SPA_TYPE_OBJECT_PropInfo, SPA_TYPE_INFO_PARAM_ID_BASE "PropInfo", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Props, SPA_TYPE_OBJECT_Props, SPA_TYPE_INFO_PARAM_ID_BASE "Props", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_EnumFormat, SPA_TYPE_OBJECT_Format, SPA_TYPE_INFO_PARAM_ID_BASE "EnumFormat", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Format, SPA_TYPE_OBJECT_Format, SPA_TYPE_INFO_PARAM_ID_BASE "Format", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Buffers, SPA_TYPE_OBJECT_ParamBuffers, SPA_TYPE_INFO_PARAM_ID_BASE "Buffers", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Meta, SPA_TYPE_OBJECT_ParamMeta, SPA_TYPE_INFO_PARAM_ID_BASE "Meta", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_IO, SPA_TYPE_OBJECT_ParamIO, SPA_TYPE_INFO_PARAM_ID_BASE "IO", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_EnumProfile, SPA_TYPE_OBJECT_ParamProfile, SPA_TYPE_INFO_PARAM_ID_BASE "EnumProfile", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Profile, SPA_TYPE_OBJECT_ParamProfile, SPA_TYPE_INFO_PARAM_ID_BASE "Profile", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_EnumPortConfig, SPA_TYPE_OBJECT_ParamPortConfig, SPA_TYPE_INFO_PARAM_ID_BASE "EnumPortConfig", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PortConfig, SPA_TYPE_OBJECT_ParamPortConfig, SPA_TYPE_INFO_PARAM_ID_BASE "PortConfig", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_EnumRoute, SPA_TYPE_OBJECT_ParamRoute, SPA_TYPE_INFO_PARAM_ID_BASE "EnumRoute", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Route, SPA_TYPE_OBJECT_ParamRoute, SPA_TYPE_INFO_PARAM_ID_BASE "Route", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Control, SPA_TYPE_Sequence, SPA_TYPE_INFO_PARAM_ID_BASE "Control", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_Latency, SPA_TYPE_OBJECT_ParamLatency, SPA_TYPE_INFO_PARAM_ID_BASE "Latency", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ProcessLatency, SPA_TYPE_OBJECT_ParamProcessLatency, SPA_TYPE_INFO_PARAM_ID_BASE "ProcessLatency", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* base for parameter objects */
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_Param			SPA_TYPE_INFO_OBJECT_BASE "Param"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_BASE		SPA_TYPE_INFO_Param ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/audio/type-info.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_prop_float_array[] = {
 | 
				
			||||||
 | 
						{ SPA_PROP_START, SPA_TYPE_Float, SPA_TYPE_INFO_BASE "floatArray", NULL, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_prop_channel_map[] = {
 | 
				
			||||||
 | 
						{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_BASE "channelMap", spa_type_audio_channel, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_prop_iec958_codec[] = {
 | 
				
			||||||
 | 
						{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_BASE "iec958Codec", spa_type_audio_iec958_codec, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_ParamBitorder		SPA_TYPE_INFO_ENUM_BASE "ParamBitorder"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_BITORDER_BASE	SPA_TYPE_INFO_ParamBitorder ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_bitorder[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_BITORDER_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BITORDER_BASE "unknown", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BITORDER_msb, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BITORDER_BASE "msb", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_BITORDER_lsb, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BITORDER_BASE "lsb", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_ParamAvailability		SPA_TYPE_INFO_ENUM_BASE "ParamAvailability"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE	SPA_TYPE_INFO_ParamAvailability ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_availability[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_AVAILABILITY_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE "unknown", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_AVAILABILITY_no, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE "no", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_AVAILABILITY_yes, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE "yes", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_TYPES_H */
 | 
				
			||||||
| 
						 | 
					@ -79,29 +79,10 @@ struct spa_param_info {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SPA_PARAM_INFO(id,flags) ((struct spa_param_info){ (id), (flags) })
 | 
					#define SPA_PARAM_INFO(id,flags) ((struct spa_param_info){ (id), (flags) })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamBuffers */
 | 
					enum spa_param_bitorder {
 | 
				
			||||||
enum spa_param_buffers {
 | 
						SPA_PARAM_BITORDER_unknown,	/**< unknown bitorder */
 | 
				
			||||||
	SPA_PARAM_BUFFERS_START,
 | 
						SPA_PARAM_BITORDER_msb,		/**< most significant bit */
 | 
				
			||||||
	SPA_PARAM_BUFFERS_buffers,	/**< number of buffers (Int) */
 | 
						SPA_PARAM_BITORDER_lsb,		/**< least significant bit */
 | 
				
			||||||
	SPA_PARAM_BUFFERS_blocks,	/**< number of data blocks per buffer (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_BUFFERS_size,		/**< size of a data block memory (Int)*/
 | 
					 | 
				
			||||||
	SPA_PARAM_BUFFERS_stride,	/**< stride of data block memory (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_BUFFERS_align,	/**< alignment of data block memory (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_BUFFERS_dataType,	/**< possible memory types (Int, mask of enum spa_data_type) */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamMeta */
 | 
					 | 
				
			||||||
enum spa_param_meta {
 | 
					 | 
				
			||||||
	SPA_PARAM_META_START,
 | 
					 | 
				
			||||||
	SPA_PARAM_META_type,	/**< the metadata, one of enum spa_meta_type (Id enum spa_meta_type) */
 | 
					 | 
				
			||||||
	SPA_PARAM_META_size,	/**< the expected maximum size the meta (Int) */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamIO */
 | 
					 | 
				
			||||||
enum spa_param_io {
 | 
					 | 
				
			||||||
	SPA_PARAM_IO_START,
 | 
					 | 
				
			||||||
	SPA_PARAM_IO_id,	/**< type ID, uniquely identifies the io area (Id enum spa_io_type) */
 | 
					 | 
				
			||||||
	SPA_PARAM_IO_size,	/**< size of the io area (Int) */
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum spa_param_availability {
 | 
					enum spa_param_availability {
 | 
				
			||||||
| 
						 | 
					@ -110,98 +91,10 @@ enum spa_param_availability {
 | 
				
			||||||
	SPA_PARAM_AVAILABILITY_yes,	/**< available */
 | 
						SPA_PARAM_AVAILABILITY_yes,	/**< available */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamProfile */
 | 
					#include <spa/param/buffers.h>
 | 
				
			||||||
enum spa_param_profile {
 | 
					#include <spa/param/profile.h>
 | 
				
			||||||
	SPA_PARAM_PROFILE_START,
 | 
					#include <spa/param/port-config.h>
 | 
				
			||||||
	SPA_PARAM_PROFILE_index,	/**< profile index (Int) */
 | 
					#include <spa/param/route.h>
 | 
				
			||||||
	SPA_PARAM_PROFILE_name,		/**< profile name (String) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROFILE_description,	/**< profile description (String) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROFILE_priority,	/**< profile priority (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROFILE_available,	/**< availability of the profile
 | 
					 | 
				
			||||||
					  *  (Id enum spa_param_availability) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROFILE_info,		/**< info (Struct(
 | 
					 | 
				
			||||||
					  *		  Int : n_items,
 | 
					 | 
				
			||||||
					  *		  (String : key,
 | 
					 | 
				
			||||||
					  *		   String : value)*)) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROFILE_classes,	/**< node classes provided by this profile
 | 
					 | 
				
			||||||
					  *  (Struct(
 | 
					 | 
				
			||||||
					  *	   Int : number of items following
 | 
					 | 
				
			||||||
					  *        Struct(
 | 
					 | 
				
			||||||
					  *           String : class name (eg. "Audio/Source"),
 | 
					 | 
				
			||||||
					  *           Int : number of nodes
 | 
					 | 
				
			||||||
					  *           String : property (eg. "card.profile.devices"),
 | 
					 | 
				
			||||||
					  *           Array of Int: device indexes
 | 
					 | 
				
			||||||
					  *         )*)) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROFILE_save,		/**< If profile should be saved (Bool) */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum spa_param_port_config_mode {
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_MODE_none,	/**< no configuration */
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_MODE_passthrough,	/**< passthrough configuration */
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_MODE_convert,	/**< convert configuration */
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_MODE_dsp,		/**< dsp configuration, depending on the external
 | 
					 | 
				
			||||||
						  *  format. For audio, ports will be configured for
 | 
					 | 
				
			||||||
						  *  the given number of channels with F32 format. */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamPortConfig */
 | 
					 | 
				
			||||||
enum spa_param_port_config {
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_START,
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_direction,	/**< direction, input/output (Id enum spa_direction) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_mode,		/**< (Id enum spa_param_port_config_mode) mode */
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_monitor,		/**< (Bool) enable monitor output ports on input ports */
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_control,		/**< (Bool) enable control ports */
 | 
					 | 
				
			||||||
	SPA_PARAM_PORT_CONFIG_format,		/**< (Object) format filter */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamRoute */
 | 
					 | 
				
			||||||
enum spa_param_route {
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_START,
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_index,			/**< index of the routing destination (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_direction,		/**< direction, input/output (Id enum spa_direction) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_device,			/**< device id (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_name,			/**< name of the routing destination (String) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_description,		/**< description of the destination (String) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_priority,		/**< priority of the destination (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_available,		/**< availability of the destination
 | 
					 | 
				
			||||||
						  *  (Id enum spa_param_availability) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_info,			/**< info (Struct(
 | 
					 | 
				
			||||||
						  *		  Int : n_items,
 | 
					 | 
				
			||||||
						  *		  (String : key,
 | 
					 | 
				
			||||||
						  *		   String : value)*)) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_profiles,		/**< associated profile indexes (Array of Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_props,			/**< properties SPA_TYPE_OBJECT_Props */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_devices,		/**< associated device indexes (Array of Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_profile,		/**< profile id (Int) */
 | 
					 | 
				
			||||||
	SPA_PARAM_ROUTE_save,			/**< If route should be saved (Bool) */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamLatency */
 | 
					 | 
				
			||||||
enum spa_param_latency {
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_START,
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_direction,		/**< direction, input/output (Id enum spa_direction) */
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_minQuantum,		/**< min latency relative to quantum (Float) */
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_maxQuantum,		/**< max latency relative to quantum (Float) */
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_minRate,		/**< min latency (Int) relative to rate */
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_maxRate,		/**< max latency (Int) relative to rate */
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_minNs,		/**< min latency (Long) in nanoseconds */
 | 
					 | 
				
			||||||
	SPA_PARAM_LATENCY_maxNs,		/**< max latency (Long) in nanoseconds */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** properties for SPA_TYPE_OBJECT_ParamProcessLatency */
 | 
					 | 
				
			||||||
enum spa_param_process_latency {
 | 
					 | 
				
			||||||
	SPA_PARAM_PROCESS_LATENCY_START,
 | 
					 | 
				
			||||||
	SPA_PARAM_PROCESS_LATENCY_quantum,	/**< latency relative to quantum (Float) */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROCESS_LATENCY_rate,		/**< latency (Int) relative to rate */
 | 
					 | 
				
			||||||
	SPA_PARAM_PROCESS_LATENCY_ns,		/**< latency (Long) in nanoseconds */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum spa_param_bitorder {
 | 
					 | 
				
			||||||
	SPA_PARAM_BITORDER_unknown,	/**< unknown bitorder */
 | 
					 | 
				
			||||||
	SPA_PARAM_BITORDER_msb,		/**< most significant bit */
 | 
					 | 
				
			||||||
	SPA_PARAM_BITORDER_lsb,		/**< least significant bit */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										72
									
								
								spa/include/spa/param/port-config-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								spa/include/spa/param/port-config-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,72 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_PORT_CONFIG_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_PORT_CONFIG_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/port-config.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_ParamPortConfigMode		SPA_TYPE_INFO_ENUM_BASE "ParamPortConfigMode"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE	SPA_TYPE_INFO_ParamPortConfigMode ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_port_config_mode[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_MODE_none, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "none", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_MODE_passthrough, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "passthrough", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_MODE_convert, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "convert", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_MODE_dsp, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "dsp", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_PortConfig		SPA_TYPE_INFO_PARAM_BASE "PortConfig"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE	SPA_TYPE_INFO_PARAM_PortConfig ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_port_config[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_direction, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "direction", spa_type_direction, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_mode, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "mode", spa_type_param_port_config_mode },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_monitor, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "monitor", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_control, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "control", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PORT_CONFIG_format, SPA_TYPE_OBJECT_Format, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "format", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_PORT_CONFIG_TYPES_H */
 | 
				
			||||||
							
								
								
									
										66
									
								
								spa/include/spa/param/port-config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								spa/include/spa/param/port-config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,66 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_PORT_CONFIG_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_PORT_CONFIG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum spa_param_port_config_mode {
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_MODE_none,	/**< no configuration */
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_MODE_passthrough,	/**< passthrough configuration */
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_MODE_convert,	/**< convert configuration */
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_MODE_dsp,		/**< dsp configuration, depending on the external
 | 
				
			||||||
 | 
											  *  format. For audio, ports will be configured for
 | 
				
			||||||
 | 
											  *  the given number of channels with F32 format. */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamPortConfig */
 | 
				
			||||||
 | 
					enum spa_param_port_config {
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_START,
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_direction,	/**< direction, input/output (Id enum spa_direction) */
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_mode,		/**< (Id enum spa_param_port_config_mode) mode */
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_monitor,		/**< (Bool) enable monitor output ports on input ports */
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_control,		/**< (Bool) enable control ports */
 | 
				
			||||||
 | 
						SPA_PARAM_PORT_CONFIG_format,		/**< (Object) format filter */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_PORT_CONFIG_H */
 | 
				
			||||||
							
								
								
									
										65
									
								
								spa/include/spa/param/profile-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								spa/include/spa/param/profile-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,65 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_PROFILE_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_PROFILE_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param-types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/profile.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_Profile		SPA_TYPE_INFO_PARAM_BASE "Profile"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_PROFILE_BASE	SPA_TYPE_INFO_PARAM_Profile ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_profile[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PROFILE_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_index, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PROFILE_BASE "index", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_name, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_PROFILE_BASE "name", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_description, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_PROFILE_BASE "description", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_priority, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PROFILE_BASE "priority", NULL },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_available, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PROFILE_BASE "available", spa_type_param_availability, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_info, SPA_TYPE_Struct, SPA_TYPE_INFO_PARAM_PROFILE_BASE "info", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_classes, SPA_TYPE_Struct, SPA_TYPE_INFO_PARAM_PROFILE_BASE "classes", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_PROFILE_save, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_PROFILE_BASE "save", NULL, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_PROFILE_TYPES_H */
 | 
				
			||||||
							
								
								
									
										72
									
								
								spa/include/spa/param/profile.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								spa/include/spa/param/profile.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,72 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_PROFILE_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_PROFILE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamProfile */
 | 
				
			||||||
 | 
					enum spa_param_profile {
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_START,
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_index,	/**< profile index (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_name,		/**< profile name (String) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_description,	/**< profile description (String) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_priority,	/**< profile priority (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_available,	/**< availability of the profile
 | 
				
			||||||
 | 
										  *  (Id enum spa_param_availability) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_info,		/**< info (Struct(
 | 
				
			||||||
 | 
										  *		  Int : n_items,
 | 
				
			||||||
 | 
										  *		  (String : key,
 | 
				
			||||||
 | 
										  *		   String : value)*)) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_classes,	/**< node classes provided by this profile
 | 
				
			||||||
 | 
										  *  (Struct(
 | 
				
			||||||
 | 
										  *	   Int : number of items following
 | 
				
			||||||
 | 
										  *        Struct(
 | 
				
			||||||
 | 
										  *           String : class name (eg. "Audio/Source"),
 | 
				
			||||||
 | 
										  *           Int : number of nodes
 | 
				
			||||||
 | 
										  *           String : property (eg. "card.profile.devices"),
 | 
				
			||||||
 | 
										  *           Array of Int: device indexes
 | 
				
			||||||
 | 
										  *         )*)) */
 | 
				
			||||||
 | 
						SPA_PARAM_PROFILE_save,		/**< If profile should be saved (Bool) */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_PROFILE_H */
 | 
				
			||||||
							
								
								
									
										59
									
								
								spa/include/spa/param/profiler-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								spa/include/spa/param/profiler-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_PROFILER_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_PROFILER_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/profiler.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_Profiler		SPA_TYPE_INFO_OBJECT_BASE "Profiler"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PROFILER_BASE	SPA_TYPE_INFO_Profiler ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_profiler[] = {
 | 
				
			||||||
 | 
						{ SPA_PROFILER_START, SPA_TYPE_Id, SPA_TYPE_INFO_PROFILER_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PROFILER_info, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "info", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PROFILER_clock, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "clock", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PROFILER_driverBlock, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "driverBlock", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PROFILER_followerBlock, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "followerBlock", NULL, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_PROFILER_TYPES_H */
 | 
				
			||||||
							
								
								
									
										119
									
								
								spa/include/spa/param/props-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								spa/include/spa/param/props-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,119 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_PROPS_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_PROPS_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param-types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/bluetooth/type-info.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Props Param */
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_Props			SPA_TYPE_INFO_PARAM_BASE "Props"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PROPS_BASE		SPA_TYPE_INFO_Props ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_props[] = {
 | 
				
			||||||
 | 
						{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PROP_unknown, SPA_TYPE_None, SPA_TYPE_INFO_PROPS_BASE "unknown", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_device, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "device", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_deviceName, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "deviceName", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_deviceFd, SPA_TYPE_Fd, SPA_TYPE_INFO_PROPS_BASE "deviceFd", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_card, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "card", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_cardName, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "cardName", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_minLatency, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "minLatency", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_maxLatency, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "maxLatency", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_periods, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "periods", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_periodSize, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "periodSize", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_periodEvent, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "periodEvent", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_live, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "live", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_rate, SPA_TYPE_Double, SPA_TYPE_INFO_PROPS_BASE "rate", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_quality, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "quality", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_bluetoothAudioCodec, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "bluetoothAudioCodec", spa_type_bluetooth_audio_codec },
 | 
				
			||||||
 | 
						{ SPA_PROP_bluetoothOffloadActive, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "bluetoothOffloadActive", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_PROP_waveType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "waveType", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_frequency, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "frequency", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_volume, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volume", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_mute, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "mute", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_patternType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "patternType", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_ditherType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "ditherType", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_truncate, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "truncate", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_channelVolumes, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "channelVolumes", spa_type_prop_float_array },
 | 
				
			||||||
 | 
						{ SPA_PROP_volumeBase, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volumeBase", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_volumeStep, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volumeStep", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_channelMap, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "channelMap", spa_type_prop_channel_map },
 | 
				
			||||||
 | 
						{ SPA_PROP_monitorMute, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "monitorMute", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_monitorVolumes, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "monitorVolumes", spa_type_prop_float_array },
 | 
				
			||||||
 | 
						{ SPA_PROP_latencyOffsetNsec, SPA_TYPE_Long, SPA_TYPE_INFO_PROPS_BASE "latencyOffsetNsec", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_softMute, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "softMute", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_softVolumes, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "softVolumes", spa_type_prop_float_array },
 | 
				
			||||||
 | 
						{ SPA_PROP_iec958Codecs, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "iec958Codecs", spa_type_prop_iec958_codec },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_PROP_brightness, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "brightness", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_contrast, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "contrast", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_saturation, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "saturation", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_hue, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "hue", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_gamma, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "gamma", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_exposure, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "exposure", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_gain, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "gain", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_sharpness, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "sharpness", NULL },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_PROP_params, SPA_TYPE_Struct, SPA_TYPE_INFO_PROPS_BASE "params", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Enum Property info */
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PropInfo			SPA_TYPE_INFO_PARAM_BASE "PropInfo"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PROP_INFO_BASE		SPA_TYPE_INFO_PropInfo ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_prop_info[] = {
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_START, SPA_TYPE_Id, SPA_TYPE_INFO_PROP_INFO_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_id, SPA_TYPE_Id, SPA_TYPE_INFO_PROP_INFO_BASE "id", spa_type_props },
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_name, SPA_TYPE_String, SPA_TYPE_INFO_PROP_INFO_BASE "name", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_type, SPA_TYPE_Pod, SPA_TYPE_INFO_PROP_INFO_BASE "type", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_labels, SPA_TYPE_Struct, SPA_TYPE_INFO_PROP_INFO_BASE "labels", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_container, SPA_TYPE_Id, SPA_TYPE_INFO_PROP_INFO_BASE "container", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_params, SPA_TYPE_Bool, SPA_TYPE_INFO_PROP_INFO_BASE "params", NULL },
 | 
				
			||||||
 | 
						{ SPA_PROP_INFO_description, SPA_TYPE_String, SPA_TYPE_INFO_PROP_INFO_BASE "description", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_PROPS_TYPES_H */
 | 
				
			||||||
							
								
								
									
										69
									
								
								spa/include/spa/param/route-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								spa/include/spa/param/route-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,69 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_ROUTE_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_ROUTE_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/route.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_Route		SPA_TYPE_INFO_PARAM_BASE "Route"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_PARAM_ROUTE_BASE		SPA_TYPE_INFO_PARAM_Route ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_param_route[] = {
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_ROUTE_BASE, spa_type_param, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_index, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "index", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_direction, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_ROUTE_BASE "direction", spa_type_direction, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_device, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "device", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_name, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_ROUTE_BASE "name", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_description, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_ROUTE_BASE "description", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_priority, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "priority", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_available, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_ROUTE_BASE "available", spa_type_param_availability, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_info, SPA_TYPE_Struct, SPA_TYPE_INFO_PARAM_ROUTE_BASE "info", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_profiles, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "profiles", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_props, SPA_TYPE_OBJECT_Props, SPA_TYPE_INFO_PARAM_ROUTE_BASE "props", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_devices, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "devices", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_profile, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "profile", NULL, },
 | 
				
			||||||
 | 
						{ SPA_PARAM_ROUTE_save, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_ROUTE_BASE "save", NULL, },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_ROUTE_TYPES_H */
 | 
				
			||||||
							
								
								
									
										69
									
								
								spa/include/spa/param/route.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								spa/include/spa/param/route.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,69 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_PARAM_ROUTE_H
 | 
				
			||||||
 | 
					#define SPA_PARAM_ROUTE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/param.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** properties for SPA_TYPE_OBJECT_ParamRoute */
 | 
				
			||||||
 | 
					enum spa_param_route {
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_START,
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_index,			/**< index of the routing destination (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_direction,		/**< direction, input/output (Id enum spa_direction) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_device,			/**< device id (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_name,			/**< name of the routing destination (String) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_description,		/**< description of the destination (String) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_priority,		/**< priority of the destination (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_available,		/**< availability of the destination
 | 
				
			||||||
 | 
											  *  (Id enum spa_param_availability) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_info,			/**< info (Struct(
 | 
				
			||||||
 | 
											  *		  Int : n_items,
 | 
				
			||||||
 | 
											  *		  (String : key,
 | 
				
			||||||
 | 
											  *		   String : value)*)) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_profiles,		/**< associated profile indexes (Array of Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_props,			/**< properties SPA_TYPE_OBJECT_Props */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_devices,		/**< associated device indexes (Array of Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_profile,		/**< profile id (Int) */
 | 
				
			||||||
 | 
						SPA_PARAM_ROUTE_save,			/**< If route should be saved (Bool) */
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_PARAM_ROUTE_H */
 | 
				
			||||||
| 
						 | 
					@ -22,428 +22,17 @@
 | 
				
			||||||
 * DEALINGS IN THE SOFTWARE.
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef SPA_PARAM_TYPES_H
 | 
					#ifndef SPA_PARAM_TYPE_INFO_H
 | 
				
			||||||
#define SPA_PARAM_TYPES_H
 | 
					#define SPA_PARAM_TYPE_INFO_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#include <spa/param/param-types.h>
 | 
				
			||||||
extern "C" {
 | 
					#include <spa/param/buffers-types.h>
 | 
				
			||||||
#endif
 | 
					#include <spa/param/props-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/format-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/latency-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/port-config-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/profiler-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/profile-types.h>
 | 
				
			||||||
 | 
					#include <spa/param/route-types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					#endif /* SPA_PARAM_TYPE_INFO_H */
 | 
				
			||||||
 * \addtogroup spa_param
 | 
					 | 
				
			||||||
 * \{
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <spa/utils/defs.h>
 | 
					 | 
				
			||||||
#include <spa/param/props.h>
 | 
					 | 
				
			||||||
#include <spa/param/format.h>
 | 
					 | 
				
			||||||
#include <spa/buffer/type-info.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* base for parameter object enumerations */
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_ParamId		SPA_TYPE_INFO_ENUM_BASE "ParamId"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_ID_BASE	SPA_TYPE_INFO_ParamId ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Invalid, SPA_TYPE_None, SPA_TYPE_INFO_PARAM_ID_BASE "Invalid", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PropInfo, SPA_TYPE_OBJECT_PropInfo, SPA_TYPE_INFO_PARAM_ID_BASE "PropInfo", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Props, SPA_TYPE_OBJECT_Props, SPA_TYPE_INFO_PARAM_ID_BASE "Props", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_EnumFormat, SPA_TYPE_OBJECT_Format, SPA_TYPE_INFO_PARAM_ID_BASE "EnumFormat", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Format, SPA_TYPE_OBJECT_Format, SPA_TYPE_INFO_PARAM_ID_BASE "Format", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Buffers, SPA_TYPE_OBJECT_ParamBuffers, SPA_TYPE_INFO_PARAM_ID_BASE "Buffers", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Meta, SPA_TYPE_OBJECT_ParamMeta, SPA_TYPE_INFO_PARAM_ID_BASE "Meta", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_IO, SPA_TYPE_OBJECT_ParamIO, SPA_TYPE_INFO_PARAM_ID_BASE "IO", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_EnumProfile, SPA_TYPE_OBJECT_ParamProfile, SPA_TYPE_INFO_PARAM_ID_BASE "EnumProfile", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Profile, SPA_TYPE_OBJECT_ParamProfile, SPA_TYPE_INFO_PARAM_ID_BASE "Profile", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_EnumPortConfig, SPA_TYPE_OBJECT_ParamPortConfig, SPA_TYPE_INFO_PARAM_ID_BASE "EnumPortConfig", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PortConfig, SPA_TYPE_OBJECT_ParamPortConfig, SPA_TYPE_INFO_PARAM_ID_BASE "PortConfig", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_EnumRoute, SPA_TYPE_OBJECT_ParamRoute, SPA_TYPE_INFO_PARAM_ID_BASE "EnumRoute", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Route, SPA_TYPE_OBJECT_ParamRoute, SPA_TYPE_INFO_PARAM_ID_BASE "Route", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Control, SPA_TYPE_Sequence, SPA_TYPE_INFO_PARAM_ID_BASE "Control", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_Latency, SPA_TYPE_OBJECT_ParamLatency, SPA_TYPE_INFO_PARAM_ID_BASE "Latency", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ProcessLatency, SPA_TYPE_OBJECT_ParamProcessLatency, SPA_TYPE_INFO_PARAM_ID_BASE "ProcessLatency", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* base for parameter objects */
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_Param			SPA_TYPE_INFO_OBJECT_BASE "Param"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_BASE		SPA_TYPE_INFO_Param ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_Props			SPA_TYPE_INFO_PARAM_BASE "Props"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PROPS_BASE		SPA_TYPE_INFO_Props ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <spa/param/audio/type-info.h>
 | 
					 | 
				
			||||||
#include <spa/param/video/type-info.h>
 | 
					 | 
				
			||||||
#include <spa/param/bluetooth/type-info.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_prop_float_array[] = {
 | 
					 | 
				
			||||||
	{ SPA_PROP_START, SPA_TYPE_Float, SPA_TYPE_INFO_BASE "floatArray", NULL, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_prop_channel_map[] = {
 | 
					 | 
				
			||||||
	{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_BASE "channelMap", spa_type_audio_channel, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_prop_iec958_codec[] = {
 | 
					 | 
				
			||||||
	{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_BASE "iec958Codec", spa_type_audio_iec958_codec, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_ParamBitorder		SPA_TYPE_INFO_ENUM_BASE "ParamBitorder"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_BITORDER_BASE	SPA_TYPE_INFO_ParamBitorder ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_bitorder[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BITORDER_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BITORDER_BASE "unknown", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BITORDER_msb, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BITORDER_BASE "msb", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BITORDER_lsb, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BITORDER_BASE "lsb", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_props[] = {
 | 
					 | 
				
			||||||
	{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PROP_unknown, SPA_TYPE_None, SPA_TYPE_INFO_PROPS_BASE "unknown", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_device, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "device", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_deviceName, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "deviceName", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_deviceFd, SPA_TYPE_Fd, SPA_TYPE_INFO_PROPS_BASE "deviceFd", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_card, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "card", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_cardName, SPA_TYPE_String, SPA_TYPE_INFO_PROPS_BASE "cardName", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_minLatency, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "minLatency", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_maxLatency, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "maxLatency", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_periods, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "periods", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_periodSize, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "periodSize", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_periodEvent, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "periodEvent", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_live, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "live", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_rate, SPA_TYPE_Double, SPA_TYPE_INFO_PROPS_BASE "rate", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_quality, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "quality", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_bluetoothAudioCodec, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "bluetoothAudioCodec", spa_type_bluetooth_audio_codec },
 | 
					 | 
				
			||||||
	{ SPA_PROP_bluetoothOffloadActive, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "bluetoothOffloadActive", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_PROP_waveType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "waveType", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_frequency, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "frequency", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_volume, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volume", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_mute, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "mute", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_patternType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "patternType", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_ditherType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "ditherType", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_truncate, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "truncate", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_channelVolumes, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "channelVolumes", spa_type_prop_float_array },
 | 
					 | 
				
			||||||
	{ SPA_PROP_volumeBase, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volumeBase", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_volumeStep, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volumeStep", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_channelMap, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "channelMap", spa_type_prop_channel_map },
 | 
					 | 
				
			||||||
	{ SPA_PROP_monitorMute, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "monitorMute", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_monitorVolumes, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "monitorVolumes", spa_type_prop_float_array },
 | 
					 | 
				
			||||||
	{ SPA_PROP_latencyOffsetNsec, SPA_TYPE_Long, SPA_TYPE_INFO_PROPS_BASE "latencyOffsetNsec", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_softMute, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "softMute", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_softVolumes, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "softVolumes", spa_type_prop_float_array },
 | 
					 | 
				
			||||||
	{ SPA_PROP_iec958Codecs, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "iec958Codecs", spa_type_prop_iec958_codec },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_PROP_brightness, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "brightness", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_contrast, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "contrast", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_saturation, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "saturation", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_hue, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "hue", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_gamma, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "gamma", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_exposure, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "exposure", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_gain, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "gain", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_sharpness, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "sharpness", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_PROP_params, SPA_TYPE_Struct, SPA_TYPE_INFO_PROPS_BASE "params", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** Enum Property info */
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PropInfo			SPA_TYPE_INFO_PARAM_BASE "PropInfo"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PROP_INFO_BASE		SPA_TYPE_INFO_PropInfo ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_prop_info[] = {
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_START, SPA_TYPE_Id, SPA_TYPE_INFO_PROP_INFO_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_id, SPA_TYPE_Id, SPA_TYPE_INFO_PROP_INFO_BASE "id", spa_type_props },
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_name, SPA_TYPE_String, SPA_TYPE_INFO_PROP_INFO_BASE "name", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_type, SPA_TYPE_Pod, SPA_TYPE_INFO_PROP_INFO_BASE "type", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_labels, SPA_TYPE_Struct, SPA_TYPE_INFO_PROP_INFO_BASE "labels", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_container, SPA_TYPE_Id, SPA_TYPE_INFO_PROP_INFO_BASE "container", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_params, SPA_TYPE_Bool, SPA_TYPE_INFO_PROP_INFO_BASE "params", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PROP_INFO_description, SPA_TYPE_String, SPA_TYPE_INFO_PROP_INFO_BASE "description", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_Meta		SPA_TYPE_INFO_PARAM_BASE "Meta"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_META_BASE		SPA_TYPE_INFO_PARAM_Meta ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_meta[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_META_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_META_BASE, spa_type_param },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_META_type, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_META_BASE "type", spa_type_meta_type },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_META_size, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_META_BASE "size", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** Base for parameters that describe IO areas to exchange data,
 | 
					 | 
				
			||||||
 * control and properties with a node.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_IO		SPA_TYPE_INFO_PARAM_BASE "IO"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_IO_BASE		SPA_TYPE_INFO_PARAM_IO ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_io[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_IO_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_IO_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_IO_id, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_IO_BASE "id", spa_type_io },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_IO_size, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_IO_BASE "size", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_Format			SPA_TYPE_INFO_PARAM_BASE "Format"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_FORMAT_BASE		SPA_TYPE_INFO_Format ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_MediaType		SPA_TYPE_INFO_ENUM_BASE "MediaType"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_MEDIA_TYPE_BASE	SPA_TYPE_INFO_MediaType ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_media_type[] = {
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_TYPE_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "unknown", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_TYPE_audio,   SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "audio", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_TYPE_video,   SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "video", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_TYPE_image,   SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "image", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_TYPE_binary,  SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "binary", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_TYPE_stream,  SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "stream", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_TYPE_application,  SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_TYPE_BASE "application", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_MediaSubtype		SPA_TYPE_INFO_ENUM_BASE "MediaSubtype"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE	SPA_TYPE_INFO_MediaSubtype ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_media_subtype[] = {
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "unknown", NULL },
 | 
					 | 
				
			||||||
	/* generic subtypes */
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_raw, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "raw", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_dsp, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "dsp", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_iec958, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "iec958", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_dsd, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "dsd", NULL },
 | 
					 | 
				
			||||||
	/* audio subtypes */
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_mp3, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mp3", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_aac, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "aac", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_vorbis, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vorbis", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_wma, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "wma", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_ra, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "ra", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_sbc, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "sbc", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_adpcm, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "adpcm", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_g723, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "g723", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_g726, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "g726", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_g729, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "g729", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_amr, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "amr", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_gsm, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "gsm", NULL },
 | 
					 | 
				
			||||||
	/* video subtypes */
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_h264, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "h264", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_mjpg, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mjpg", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_dv, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "dv", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_mpegts, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpegts", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_h263, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "h263", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_mpeg1, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpeg1", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_mpeg2, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpeg2", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_mpeg4, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "mpeg4", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_xvid, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "xvid", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_vc1, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vc1", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_vp8, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vp8", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_vp9, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "vp9", NULL },
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_bayer, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "bayer", NULL },
 | 
					 | 
				
			||||||
	/* image subtypes */
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_jpeg, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "jpeg", NULL },
 | 
					 | 
				
			||||||
	/* stream subtypes */
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_midi, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "midi", NULL },
 | 
					 | 
				
			||||||
	/* application subtypes */
 | 
					 | 
				
			||||||
	{ SPA_MEDIA_SUBTYPE_control, SPA_TYPE_Int, SPA_TYPE_INFO_MEDIA_SUBTYPE_BASE "control", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_FormatAudio		SPA_TYPE_INFO_FORMAT_BASE "Audio"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_FORMAT_AUDIO_BASE		SPA_TYPE_INFO_FormatAudio ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_FormatVideo		SPA_TYPE_INFO_FORMAT_BASE "Video"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_FORMAT_VIDEO_BASE		SPA_TYPE_INFO_FormatVideo ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_FORMAT_VIDEO_H264		SPA_TYPE_INFO_FORMAT_VIDEO_BASE "H264"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_FORMAT_VIDEO_H264_BASE	SPA_TYPE_INFO_FORMAT_VIDEO_H264 ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_format[] = {
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_START, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_mediaType, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_BASE "mediaType",
 | 
					 | 
				
			||||||
		spa_type_media_type, },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_mediaSubtype, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_BASE "mediaSubtype",
 | 
					 | 
				
			||||||
		spa_type_media_subtype, },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_format, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "format",
 | 
					 | 
				
			||||||
		spa_type_audio_format },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_flags, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "flags",
 | 
					 | 
				
			||||||
		spa_type_audio_flags },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_rate, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "rate", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_channels, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "channels", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_position, SPA_TYPE_Array, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "position",
 | 
					 | 
				
			||||||
		spa_type_prop_channel_map },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_iec958Codec, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "iec958Codec",
 | 
					 | 
				
			||||||
		spa_type_audio_iec958_codec },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_bitorder, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "bitorder",
 | 
					 | 
				
			||||||
		spa_type_param_bitorder },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_AUDIO_interleave, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_AUDIO_BASE "interleave", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_format, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "format",
 | 
					 | 
				
			||||||
		spa_type_video_format, },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_modifier, SPA_TYPE_Long, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "modifier", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_size,  SPA_TYPE_Rectangle, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "size", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_framerate, SPA_TYPE_Fraction, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "framerate", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_maxFramerate, SPA_TYPE_Fraction, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "maxFramerate", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_views, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "views", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_interlaceMode, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "interlaceMode", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_pixelAspectRatio, SPA_TYPE_Fraction, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "pixelAspectRatio", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_multiviewMode, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "multiviewMode", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_multiviewFlags, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "multiviewFlags", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_chromaSite, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "chromaSite", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_colorRange, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "colorRange", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_colorMatrix, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "colorMatrix", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_transferFunction, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "transferFunction", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_colorPrimaries, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "colorPrimaries", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_profile, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "profile", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_level, SPA_TYPE_Int, SPA_TYPE_INFO_FORMAT_VIDEO_BASE "level", NULL },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_H264_streamFormat, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_H264_BASE "streamFormat", NULL },
 | 
					 | 
				
			||||||
	{ SPA_FORMAT_VIDEO_H264_alignment, SPA_TYPE_Id, SPA_TYPE_INFO_FORMAT_VIDEO_H264_BASE "alignment", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_Buffers			SPA_TYPE_INFO_PARAM_BASE "Buffers"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_BUFFERS_BASE		SPA_TYPE_INFO_PARAM_Buffers ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_BlockInfo			SPA_TYPE_INFO_PARAM_BUFFERS_BASE "BlockInfo"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE		SPA_TYPE_INFO_PARAM_BlockInfo ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_buffers[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BUFFERS_START,    SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_BUFFERS_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BUFFERS_buffers,  SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BUFFERS_BASE "buffers", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BUFFERS_blocks,   SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BUFFERS_BASE "blocks", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BUFFERS_size,     SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "size", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BUFFERS_stride,   SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "stride", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BUFFERS_align,    SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "align", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_BUFFERS_dataType, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_BLOCK_INFO_BASE "dataType", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_ParamAvailability		SPA_TYPE_INFO_ENUM_BASE "ParamAvailability"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE	SPA_TYPE_INFO_ParamAvailability ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_availability[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_AVAILABILITY_unknown, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE "unknown", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_AVAILABILITY_no, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE "no", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_AVAILABILITY_yes, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_AVAILABILITY_BASE "yes", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_Profile		SPA_TYPE_INFO_PARAM_BASE "Profile"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_PROFILE_BASE	SPA_TYPE_INFO_PARAM_Profile ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_profile[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PROFILE_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_index, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PROFILE_BASE "index", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_name, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_PROFILE_BASE "name", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_description, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_PROFILE_BASE "description", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_priority, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PROFILE_BASE "priority", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_available, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PROFILE_BASE "available", spa_type_param_availability, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_info, SPA_TYPE_Struct, SPA_TYPE_INFO_PARAM_PROFILE_BASE "info", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_classes, SPA_TYPE_Struct, SPA_TYPE_INFO_PARAM_PROFILE_BASE "classes", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROFILE_save, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_PROFILE_BASE "save", NULL, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_ParamPortConfigMode		SPA_TYPE_INFO_ENUM_BASE "ParamPortConfigMode"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE	SPA_TYPE_INFO_ParamPortConfigMode ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_port_config_mode[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_MODE_none, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "none", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_MODE_passthrough, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "passthrough", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_MODE_convert, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "convert", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_MODE_dsp, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PORT_CONFIG_MODE_BASE "dsp", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_PortConfig		SPA_TYPE_INFO_PARAM_BASE "PortConfig"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE	SPA_TYPE_INFO_PARAM_PortConfig ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_port_config[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_direction, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "direction", spa_type_direction, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_mode, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "mode", spa_type_param_port_config_mode },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_monitor, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "monitor", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_control, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "control", NULL },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PORT_CONFIG_format, SPA_TYPE_OBJECT_Format, SPA_TYPE_INFO_PARAM_PORT_CONFIG_BASE "format", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_Route		SPA_TYPE_INFO_PARAM_BASE "Route"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_ROUTE_BASE		SPA_TYPE_INFO_PARAM_Route ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_route[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_ROUTE_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_index, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "index", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_direction, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_ROUTE_BASE "direction", spa_type_direction, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_device, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "device", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_name, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_ROUTE_BASE "name", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_description, SPA_TYPE_String, SPA_TYPE_INFO_PARAM_ROUTE_BASE "description", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_priority, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "priority", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_available, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_ROUTE_BASE "available", spa_type_param_availability, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_info, SPA_TYPE_Struct, SPA_TYPE_INFO_PARAM_ROUTE_BASE "info", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_profiles, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "profiles", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_props, SPA_TYPE_OBJECT_Props, SPA_TYPE_INFO_PARAM_ROUTE_BASE "props", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_devices, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "devices", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_profile, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_ROUTE_BASE "profile", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_ROUTE_save, SPA_TYPE_Bool, SPA_TYPE_INFO_PARAM_ROUTE_BASE "save", NULL, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <spa/param/profiler.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_Profiler		SPA_TYPE_INFO_OBJECT_BASE "Profiler"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PROFILER_BASE	SPA_TYPE_INFO_Profiler ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_profiler[] = {
 | 
					 | 
				
			||||||
	{ SPA_PROFILER_START, SPA_TYPE_Id, SPA_TYPE_INFO_PROFILER_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PROFILER_info, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "info", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PROFILER_clock, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "clock", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PROFILER_driverBlock, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "driverBlock", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PROFILER_followerBlock, SPA_TYPE_Struct, SPA_TYPE_INFO_PROFILER_BASE "followerBlock", NULL, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_Latency		SPA_TYPE_INFO_PARAM_BASE "Latency"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_LATENCY_BASE	SPA_TYPE_INFO_PARAM_Latency ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_latency[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_LATENCY_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_direction, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_LATENCY_BASE "direction", spa_type_direction, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_minQuantum, SPA_TYPE_Float, SPA_TYPE_INFO_PARAM_LATENCY_BASE "minQuantum", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_maxQuantum, SPA_TYPE_Float, SPA_TYPE_INFO_PARAM_LATENCY_BASE "maxQuantum", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_minRate, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_LATENCY_BASE "minRate", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_maxRate, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_LATENCY_BASE "maxRate", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_minNs, SPA_TYPE_Long, SPA_TYPE_INFO_PARAM_LATENCY_BASE "minNs", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_LATENCY_maxNs, SPA_TYPE_Long, SPA_TYPE_INFO_PARAM_LATENCY_BASE "maxNs", NULL, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_ProcessLatency		SPA_TYPE_INFO_PARAM_BASE "ProcessLatency"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE	SPA_TYPE_INFO_PARAM_ProcessLatency ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_param_process_latency[] = {
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROCESS_LATENCY_START, SPA_TYPE_Id, SPA_TYPE_INFO_PARAM_LATENCY_BASE, spa_type_param, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROCESS_LATENCY_quantum, SPA_TYPE_Float, SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE "quantum", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROCESS_LATENCY_rate, SPA_TYPE_Int, SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE "rate", NULL, },
 | 
					 | 
				
			||||||
	{ SPA_PARAM_PROCESS_LATENCY_ns, SPA_TYPE_Long, SPA_TYPE_INFO_PARAM_PROCESS_LATENCY_BASE "ns", NULL, },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
}  /* extern "C" */
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* SPA_PARAM_TYPES_H */
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										82
									
								
								spa/include/spa/param/video/dsp-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								spa/include/spa/param/video/dsp-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,82 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_DSP_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_DSP_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/video/format-utils.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/dsp.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_video_dsp_parse(const struct spa_pod *format,
 | 
				
			||||||
 | 
								   struct spa_video_info_dsp *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						info->flags = SPA_VIDEO_FLAG_NONE;
 | 
				
			||||||
 | 
						if (spa_pod_find_prop (format, NULL, SPA_FORMAT_VIDEO_modifier)) {
 | 
				
			||||||
 | 
							info->flags |= SPA_VIDEO_FLAG_MODIFIER;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return spa_pod_parse_object(format,
 | 
				
			||||||
 | 
							SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_format,		SPA_POD_OPT_Id(&info->format),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_modifier,		SPA_POD_OPT_Long(&info->modifier));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_video_dsp_build(struct spa_pod_builder *builder, uint32_t id,
 | 
				
			||||||
 | 
								   struct spa_video_info_dsp *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->format != SPA_VIDEO_FORMAT_UNKNOWN)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_format,	SPA_POD_Id(info->format), 0);
 | 
				
			||||||
 | 
						if (info->modifier != 0 || info->flags & SPA_VIDEO_FLAG_MODIFIER)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_modifier,	SPA_POD_Long(info->modifier), 0);
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					} /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_DSP_H */
 | 
				
			||||||
							
								
								
									
										55
									
								
								spa/include/spa/param/video/dsp.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								spa/include/spa/param/video/dsp.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_DSP_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_DSP_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/video/raw.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct spa_video_info_dsp {
 | 
				
			||||||
 | 
						enum spa_video_format format;
 | 
				
			||||||
 | 
						uint32_t flags;
 | 
				
			||||||
 | 
						uint64_t modifier;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_VIDEO_INFO_DSP_INIT(...)	((struct spa_video_info_dsp) { __VA_ARGS__ })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					} /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_DSP_H */
 | 
				
			||||||
| 
						 | 
					@ -25,50 +25,7 @@
 | 
				
			||||||
#ifndef SPA_VIDEO_ENCODED_H
 | 
					#ifndef SPA_VIDEO_ENCODED_H
 | 
				
			||||||
#define SPA_VIDEO_ENCODED_H
 | 
					#define SPA_VIDEO_ENCODED_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#include <spa/param/video/h264.h>
 | 
				
			||||||
extern "C" {
 | 
					#include <spa/param/video/mjpg.h>
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \addtogroup spa_param
 | 
					 | 
				
			||||||
 * \{
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <spa/param/format.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum spa_h264_stream_format {
 | 
					 | 
				
			||||||
	SPA_H264_STREAM_FORMAT_UNKNOWN = 0,
 | 
					 | 
				
			||||||
	SPA_H264_STREAM_FORMAT_AVC,
 | 
					 | 
				
			||||||
	SPA_H264_STREAM_FORMAT_AVC3,
 | 
					 | 
				
			||||||
	SPA_H264_STREAM_FORMAT_BYTESTREAM
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum spa_h264_alignment {
 | 
					 | 
				
			||||||
	SPA_H264_ALIGNMENT_UNKNOWN = 0,
 | 
					 | 
				
			||||||
	SPA_H264_ALIGNMENT_AU,
 | 
					 | 
				
			||||||
	SPA_H264_ALIGNMENT_NAL
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct spa_video_info_h264 {
 | 
					 | 
				
			||||||
	struct spa_rectangle size;
 | 
					 | 
				
			||||||
	struct spa_fraction framerate;
 | 
					 | 
				
			||||||
	struct spa_fraction max_framerate;
 | 
					 | 
				
			||||||
	enum spa_h264_stream_format stream_format;
 | 
					 | 
				
			||||||
	enum spa_h264_alignment alignment;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct spa_video_info_mjpg {
 | 
					 | 
				
			||||||
	struct spa_rectangle size;
 | 
					 | 
				
			||||||
	struct spa_fraction framerate;
 | 
					 | 
				
			||||||
	struct spa_fraction max_framerate;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
} /* extern "C" */
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* SPA_VIDEO_ENCODED_H */
 | 
					#endif /* SPA_VIDEO_ENCODED_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,213 +29,54 @@
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \addtogroup spa_param
 | 
					 | 
				
			||||||
 * \{
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#include <spa/pod/parser.h>
 | 
					 | 
				
			||||||
#include <spa/pod/builder.h>
 | 
					 | 
				
			||||||
#include <spa/param/video/format.h>
 | 
					 | 
				
			||||||
#include <spa/param/format-utils.h>
 | 
					#include <spa/param/format-utils.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/format.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/raw-utils.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/dsp-utils.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/h264-utils.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/mjpg-utils.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int
 | 
					static inline int
 | 
				
			||||||
spa_format_video_raw_parse(const struct spa_pod *format,
 | 
					spa_format_video_parse(const struct spa_pod *format, struct spa_video_info *info)
 | 
				
			||||||
			   struct spa_video_info_raw *info)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	info->flags = SPA_VIDEO_FLAG_NONE;
 | 
						int res;
 | 
				
			||||||
	if (spa_pod_find_prop (format, NULL, SPA_FORMAT_VIDEO_modifier)) {
 | 
					 | 
				
			||||||
		info->flags |= SPA_VIDEO_FLAG_MODIFIER;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return spa_pod_parse_object(format,
 | 
						if ((res = spa_format_parse(format, &info->media_type, &info->media_subtype)) < 0)
 | 
				
			||||||
		SPA_TYPE_OBJECT_Format, NULL,
 | 
							return res;
 | 
				
			||||||
		SPA_FORMAT_VIDEO_format,		SPA_POD_OPT_Id(&info->format),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_modifier,		SPA_POD_OPT_Long(&info->modifier),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_size,			SPA_POD_OPT_Rectangle(&info->size),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_framerate,		SPA_POD_OPT_Fraction(&info->framerate),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_maxFramerate,		SPA_POD_OPT_Fraction(&info->max_framerate),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_views,			SPA_POD_OPT_Int(&info->views),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_interlaceMode,		SPA_POD_OPT_Id(&info->interlace_mode),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_pixelAspectRatio,	SPA_POD_OPT_Fraction(&info->pixel_aspect_ratio),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_multiviewMode,		SPA_POD_OPT_Id(&info->multiview_mode),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_multiviewFlags,	SPA_POD_OPT_Id(&info->multiview_flags),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_chromaSite,		SPA_POD_OPT_Id(&info->chroma_site),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_colorRange,		SPA_POD_OPT_Id(&info->color_range),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_colorMatrix,		SPA_POD_OPT_Id(&info->color_matrix),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_transferFunction,	SPA_POD_OPT_Id(&info->transfer_function),
 | 
					 | 
				
			||||||
		SPA_FORMAT_VIDEO_colorPrimaries,	SPA_POD_OPT_Id(&info->color_primaries));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int
 | 
						if (info->media_type != SPA_MEDIA_TYPE_video)
 | 
				
			||||||
spa_format_video_dsp_parse(const struct spa_pod *format,
 | 
							return -EINVAL;
 | 
				
			||||||
			   struct spa_video_info_dsp *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	info->flags = SPA_VIDEO_FLAG_NONE;
 | 
					 | 
				
			||||||
	if (spa_pod_find_prop (format, NULL, SPA_FORMAT_VIDEO_modifier)) {
 | 
					 | 
				
			||||||
		info->flags |= SPA_VIDEO_FLAG_MODIFIER;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return spa_pod_parse_object(format,
 | 
						switch (info->media_type) {
 | 
				
			||||||
		SPA_TYPE_OBJECT_Format, NULL,
 | 
						case SPA_MEDIA_SUBTYPE_raw:
 | 
				
			||||||
		SPA_FORMAT_VIDEO_format,		SPA_POD_OPT_Id(&info->format),
 | 
							return spa_format_video_raw_parse(format, &info->info.raw);
 | 
				
			||||||
		SPA_FORMAT_VIDEO_modifier,		SPA_POD_OPT_Long(&info->modifier));
 | 
						case SPA_MEDIA_SUBTYPE_dsp:
 | 
				
			||||||
 | 
							return spa_format_video_dsp_parse(format, &info->info.dsp);
 | 
				
			||||||
 | 
						case SPA_MEDIA_SUBTYPE_h264:
 | 
				
			||||||
 | 
							return spa_format_video_h264_parse(format, &info->info.h264);
 | 
				
			||||||
 | 
						case SPA_MEDIA_SUBTYPE_mjpg:
 | 
				
			||||||
 | 
							return spa_format_video_mjpg_parse(format, &info->info.mjpg);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return -ENOTSUP;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline struct spa_pod *
 | 
					static inline struct spa_pod *
 | 
				
			||||||
spa_format_video_raw_build(struct spa_pod_builder *builder, uint32_t id,
 | 
					spa_format_video_build(struct spa_pod_builder *builder, uint32_t id, struct spa_video_info *info)
 | 
				
			||||||
			   struct spa_video_info_raw *info)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct spa_pod_frame f;
 | 
						switch (info->media_type) {
 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
						case SPA_MEDIA_SUBTYPE_raw:
 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
							return spa_format_video_raw_build(builder, id, &info->info.raw);
 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
						case SPA_MEDIA_SUBTYPE_dsp:
 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
 | 
							return spa_format_video_dsp_build(builder, id, &info->info.dsp);
 | 
				
			||||||
			0);
 | 
						case SPA_MEDIA_SUBTYPE_h264:
 | 
				
			||||||
	if (info->format != SPA_VIDEO_FORMAT_UNKNOWN)
 | 
							return spa_format_video_h264_build(builder, id, &info->info.h264);
 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
						case SPA_MEDIA_SUBTYPE_mjpg:
 | 
				
			||||||
			SPA_FORMAT_VIDEO_format,	SPA_POD_Id(info->format), 0);
 | 
							return spa_format_video_mjpg_build(builder, id, &info->info.mjpg);
 | 
				
			||||||
	if (info->size.width != 0 && info->size.height != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_size,		SPA_POD_Rectangle(&info->size), 0);
 | 
					 | 
				
			||||||
	if (info->framerate.denom != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_framerate,	SPA_POD_Fraction(&info->framerate), 0);
 | 
					 | 
				
			||||||
	if (info->modifier != 0 || info->flags & SPA_VIDEO_FLAG_MODIFIER)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_modifier,	SPA_POD_Long(info->modifier), 0);
 | 
					 | 
				
			||||||
	if (info->max_framerate.denom != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_Fraction(info->max_framerate), 0);
 | 
					 | 
				
			||||||
	if (info->views != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_views,		SPA_POD_Int(info->views), 0);
 | 
					 | 
				
			||||||
	if (info->interlace_mode != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_interlaceMode,	SPA_POD_Id(info->interlace_mode), 0);
 | 
					 | 
				
			||||||
	if (info->pixel_aspect_ratio.denom != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_pixelAspectRatio,SPA_POD_Fraction(info->pixel_aspect_ratio), 0);
 | 
					 | 
				
			||||||
	if (info->multiview_mode != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_multiviewMode,	SPA_POD_Id(info->multiview_mode), 0);
 | 
					 | 
				
			||||||
	if (info->multiview_flags != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_multiviewFlags,SPA_POD_Id(info->multiview_flags), 0);
 | 
					 | 
				
			||||||
	if (info->chroma_site != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_chromaSite,	SPA_POD_Id(info->chroma_site), 0);
 | 
					 | 
				
			||||||
	if (info->color_range != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_colorRange,	SPA_POD_Id(info->color_range), 0);
 | 
					 | 
				
			||||||
	if (info->color_matrix != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_colorMatrix,	SPA_POD_Id(info->color_matrix), 0);
 | 
					 | 
				
			||||||
	if (info->transfer_function != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_transferFunction,SPA_POD_Id(info->transfer_function), 0);
 | 
					 | 
				
			||||||
	if (info->color_primaries != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_colorPrimaries,SPA_POD_Id(info->color_primaries), 0);
 | 
					 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						errno = ENOTSUP;
 | 
				
			||||||
static inline struct spa_pod *
 | 
						return NULL;
 | 
				
			||||||
spa_format_video_dsp_build(struct spa_pod_builder *builder, uint32_t id,
 | 
					 | 
				
			||||||
			   struct spa_video_info_dsp *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct spa_pod_frame f;
 | 
					 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
					 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_dsp),
 | 
					 | 
				
			||||||
			0);
 | 
					 | 
				
			||||||
	if (info->format != SPA_VIDEO_FORMAT_UNKNOWN)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_format,	SPA_POD_Id(info->format), 0);
 | 
					 | 
				
			||||||
	if (info->modifier != 0 || info->flags & SPA_VIDEO_FLAG_MODIFIER)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_modifier,	SPA_POD_Long(info->modifier), 0);
 | 
					 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int
 | 
					 | 
				
			||||||
spa_format_video_h264_parse(const struct spa_pod *format,
 | 
					 | 
				
			||||||
			    struct spa_video_info_h264 *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return spa_pod_parse_object(format,
 | 
					 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, NULL,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_size,			SPA_POD_OPT_Rectangle(&info->size),
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_framerate,		SPA_POD_OPT_Fraction(&info->framerate),
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_maxFramerate,		SPA_POD_OPT_Fraction(&info->max_framerate),
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_H264_streamFormat,	SPA_POD_OPT_Id(&info->stream_format),
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_H264_alignment,	SPA_POD_OPT_Id(&info->alignment));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline struct spa_pod *
 | 
					 | 
				
			||||||
spa_format_video_h264_build(struct spa_pod_builder *builder, uint32_t id,
 | 
					 | 
				
			||||||
			   struct spa_video_info_h264 *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct spa_pod_frame f;
 | 
					 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
					 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_h264),
 | 
					 | 
				
			||||||
			0);
 | 
					 | 
				
			||||||
	if (info->size.width != 0 && info->size.height != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_size,		SPA_POD_Rectangle(&info->size), 0);
 | 
					 | 
				
			||||||
	if (info->framerate.denom != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_framerate,	SPA_POD_Fraction(&info->framerate), 0);
 | 
					 | 
				
			||||||
	if (info->max_framerate.denom != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_Fraction(info->max_framerate), 0);
 | 
					 | 
				
			||||||
	if (info->stream_format != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_H264_streamFormat, SPA_POD_Id(info->stream_format), 0);
 | 
					 | 
				
			||||||
	if (info->alignment != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_H264_alignment, SPA_POD_Id(info->alignment), 0);
 | 
					 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline int
 | 
					 | 
				
			||||||
spa_format_video_mjpg_parse(const struct spa_pod *format,
 | 
					 | 
				
			||||||
			    struct spa_video_info_mjpg *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return spa_pod_parse_object(format,
 | 
					 | 
				
			||||||
			SPA_TYPE_OBJECT_Format, NULL,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_size,		SPA_POD_OPT_Rectangle(&info->size),
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_framerate,	SPA_POD_OPT_Fraction(&info->framerate),
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_OPT_Fraction(&info->max_framerate));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline struct spa_pod *
 | 
					 | 
				
			||||||
spa_format_video_mjpg_build(struct spa_pod_builder *builder, uint32_t id,
 | 
					 | 
				
			||||||
			   struct spa_video_info_mjpg *info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct spa_pod_frame f;
 | 
					 | 
				
			||||||
	spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
					 | 
				
			||||||
	spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
					 | 
				
			||||||
			SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_mjpg),
 | 
					 | 
				
			||||||
			0);
 | 
					 | 
				
			||||||
	if (info->size.width != 0 && info->size.height != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_size,		SPA_POD_Rectangle(&info->size), 0);
 | 
					 | 
				
			||||||
	if (info->framerate.denom != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_framerate,	SPA_POD_Fraction(&info->framerate), 0);
 | 
					 | 
				
			||||||
	if (info->max_framerate.denom != 0)
 | 
					 | 
				
			||||||
		spa_pod_builder_add(builder,
 | 
					 | 
				
			||||||
			SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_Fraction(info->max_framerate), 0);
 | 
					 | 
				
			||||||
	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
} /* extern "C" */
 | 
					} /* extern "C" */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,9 @@ extern "C" {
 | 
				
			||||||
 * \{
 | 
					 * \{
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/format.h>
 | 
				
			||||||
#include <spa/param/video/raw.h>
 | 
					#include <spa/param/video/raw.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/dsp.h>
 | 
				
			||||||
#include <spa/param/video/encoded.h>
 | 
					#include <spa/param/video/encoded.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct spa_video_info {
 | 
					struct spa_video_info {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										90
									
								
								spa/include/spa/param/video/h264-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								spa/include/spa/param/video/h264-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,90 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2023 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_H264_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_H264_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/h264.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_video_h264_parse(const struct spa_pod *format,
 | 
				
			||||||
 | 
								    struct spa_video_info_h264 *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return spa_pod_parse_object(format,
 | 
				
			||||||
 | 
								SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_size,			SPA_POD_OPT_Rectangle(&info->size),
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_framerate,		SPA_POD_OPT_Fraction(&info->framerate),
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_maxFramerate,		SPA_POD_OPT_Fraction(&info->max_framerate),
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_H264_streamFormat,	SPA_POD_OPT_Id(&info->stream_format),
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_H264_alignment,	SPA_POD_OPT_Id(&info->alignment));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_video_h264_build(struct spa_pod_builder *builder, uint32_t id,
 | 
				
			||||||
 | 
								   struct spa_video_info_h264 *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_h264),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->size.width != 0 && info->size.height != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_size,		SPA_POD_Rectangle(&info->size), 0);
 | 
				
			||||||
 | 
						if (info->framerate.denom != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_framerate,	SPA_POD_Fraction(&info->framerate), 0);
 | 
				
			||||||
 | 
						if (info->max_framerate.denom != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_Fraction(info->max_framerate), 0);
 | 
				
			||||||
 | 
						if (info->stream_format != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_H264_streamFormat, SPA_POD_Id(info->stream_format), 0);
 | 
				
			||||||
 | 
						if (info->alignment != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_H264_alignment, SPA_POD_Id(info->alignment), 0);
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					} /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_H264_UTILS_H */
 | 
				
			||||||
							
								
								
									
										68
									
								
								spa/include/spa/param/video/h264.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								spa/include/spa/param/video/h264.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,68 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2023 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_H264_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_H264_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/format.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum spa_h264_stream_format {
 | 
				
			||||||
 | 
						SPA_H264_STREAM_FORMAT_UNKNOWN = 0,
 | 
				
			||||||
 | 
						SPA_H264_STREAM_FORMAT_AVC,
 | 
				
			||||||
 | 
						SPA_H264_STREAM_FORMAT_AVC3,
 | 
				
			||||||
 | 
						SPA_H264_STREAM_FORMAT_BYTESTREAM
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum spa_h264_alignment {
 | 
				
			||||||
 | 
						SPA_H264_ALIGNMENT_UNKNOWN = 0,
 | 
				
			||||||
 | 
						SPA_H264_ALIGNMENT_AU,
 | 
				
			||||||
 | 
						SPA_H264_ALIGNMENT_NAL
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct spa_video_info_h264 {
 | 
				
			||||||
 | 
						struct spa_rectangle size;
 | 
				
			||||||
 | 
						struct spa_fraction framerate;
 | 
				
			||||||
 | 
						struct spa_fraction max_framerate;
 | 
				
			||||||
 | 
						enum spa_h264_stream_format stream_format;
 | 
				
			||||||
 | 
						enum spa_h264_alignment alignment;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					} /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_H264_H */
 | 
				
			||||||
							
								
								
									
										82
									
								
								spa/include/spa/param/video/mjpg-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								spa/include/spa/param/video/mjpg-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,82 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_MJPG_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_MJPG_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/mjpg.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_video_mjpg_parse(const struct spa_pod *format,
 | 
				
			||||||
 | 
								    struct spa_video_info_mjpg *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return spa_pod_parse_object(format,
 | 
				
			||||||
 | 
								SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_size,		SPA_POD_OPT_Rectangle(&info->size),
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_framerate,	SPA_POD_OPT_Fraction(&info->framerate),
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_OPT_Fraction(&info->max_framerate));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_video_mjpg_build(struct spa_pod_builder *builder, uint32_t id,
 | 
				
			||||||
 | 
								   struct spa_video_info_mjpg *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_mjpg),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->size.width != 0 && info->size.height != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_size,		SPA_POD_Rectangle(&info->size), 0);
 | 
				
			||||||
 | 
						if (info->framerate.denom != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_framerate,	SPA_POD_Fraction(&info->framerate), 0);
 | 
				
			||||||
 | 
						if (info->max_framerate.denom != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_Fraction(info->max_framerate), 0);
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					} /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_MJPG_UTILS_H */
 | 
				
			||||||
							
								
								
									
										53
									
								
								spa/include/spa/param/video/mjpg.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								spa/include/spa/param/video/mjpg.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,53 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_MJPG_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_MJPG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/param/format.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct spa_video_info_mjpg {
 | 
				
			||||||
 | 
						struct spa_rectangle size;
 | 
				
			||||||
 | 
						struct spa_fraction framerate;
 | 
				
			||||||
 | 
						struct spa_fraction max_framerate;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					} /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_MJPG_H */
 | 
				
			||||||
							
								
								
									
										163
									
								
								spa/include/spa/param/video/raw-types.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								spa/include/spa/param/video/raw-types.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,163 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_RAW_TYPES_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_RAW_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#include <spa/param/video/raw.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_VideoFormat		SPA_TYPE_INFO_ENUM_BASE "VideoFormat"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_VIDEO_FORMAT_BASE		SPA_TYPE_INFO_VideoFormat ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_video_format[] = {
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_ENCODED,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "encoded", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I420,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_YV12,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YV12", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_YUY2,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YUY2", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_UYVY,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "UYVY", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_AYUV,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "AYUV", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGBx,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBx", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_BGRx,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRx", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_xRGB,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xRGB", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_xBGR,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xBGR", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGBA,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_BGRA,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRA", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_ARGB,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ARGB", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_ABGR,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ABGR", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGB,		SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_BGR,		SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGR", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_Y41B,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y41B", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_Y42B,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y42B", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_YVYU,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YVYU", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_Y444,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_v210,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "v210", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_v216,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "v216", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_NV12,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV12", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_NV21,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV21", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GRAY8,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GRAY8", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GRAY16_BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GRAY16_BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GRAY16_LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GRAY16_LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_v308,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "v308", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGB16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB16", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_BGR16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGR16", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGB15,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB15", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_BGR15,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGR15", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_UYVP,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "UYVP", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_A420,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A420", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGB8P,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB8P", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_YUV9,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YUV9", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_YVU9,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YVU9", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_IYU1,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "IYU1", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_ARGB64,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ARGB64", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_AYUV64,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "AYUV64", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_r210,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "r210", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I420_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I420_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I422_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I422_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_Y444_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_Y444_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBR,		SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBR_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBR_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_NV16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV16", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_NV24,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV24", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_NV12_64Z32,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV12_64Z32", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_A420_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A420_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_A420_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A420_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_A422_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A422_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_A422_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A422_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_A444_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A444_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_A444_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A444_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_NV61,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV61", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_P010_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "P010_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_P010_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "P010_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_IYU2,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "IYU2", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_VYUY,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "VYUY", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBRA,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBRA_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_10BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBRA_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_10LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBR_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_12BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBR_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_12LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBRA_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_12BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_GBRA_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_12LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I420_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_12BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I420_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_12LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I422_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_12BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_I422_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_12LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_Y444_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_12BE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_Y444_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_12LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGBA_F16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA_F16", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGBA_F32,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA_F32", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_xRGB_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xRGB_210LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_xBGR_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xBGR_210LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGBx_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBx_102LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_BGRx_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRx_102LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_ARGB_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ARGB_210LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_ABGR_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ABGR_210LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_RGBA_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA_102LE", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FORMAT_BGRA_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRA_102LE", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_VideoFlags	SPA_TYPE_INFO_FLAGS_BASE "VideoFlags"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_VIDEO_FLAGS_BASE	SPA_TYPE_INFO_VideoFlags ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_video_flags[] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FLAG_NONE, SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FLAGS_BASE "none", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FLAG_VARIABLE_FPS, SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FLAGS_BASE "variable-fps", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FLAG_PREMULTIPLIED_ALPHA, SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FLAGS_BASE "premultiplied-alpha", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_FLAG_MODIFIER, SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FLAGS_BASE "modifier", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_VideoInterlaceMode		SPA_TYPE_INFO_ENUM_BASE "VideoInterlaceMode"
 | 
				
			||||||
 | 
					#define SPA_TYPE_INFO_VIDEO_INTERLACE_MODE_BASE		SPA_TYPE_INFO_VideoInterlaceMode ":"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct spa_type_info spa_type_video_interlace_mode[] = {
 | 
				
			||||||
 | 
						{ SPA_VIDEO_INTERLACE_MODE_PROGRESSIVE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_INTERLACE_MODE_BASE "progressive", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_INTERLACE_MODE_INTERLEAVED,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_INTERLACE_MODE_BASE "interleaved", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_INTERLACE_MODE_MIXED,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_INTERLACE_MODE_BASE "mixed", NULL },
 | 
				
			||||||
 | 
						{ SPA_VIDEO_INTERLACE_MODE_FIELDS,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_INTERLACE_MODE_BASE "fields", NULL },
 | 
				
			||||||
 | 
						{ 0, 0, NULL, NULL },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}  /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_RAW_TYPES_H */
 | 
				
			||||||
							
								
								
									
										135
									
								
								spa/include/spa/param/video/raw-utils.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								spa/include/spa/param/video/raw-utils.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,135 @@
 | 
				
			||||||
 | 
					/* Simple Plugin API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright © 2018 Wim Taymans
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
				
			||||||
 | 
					 * copy of this software and associated documentation files (the "Software"),
 | 
				
			||||||
 | 
					 * to deal in the Software without restriction, including without limitation
 | 
				
			||||||
 | 
					 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
				
			||||||
 | 
					 * and/or sell copies of the Software, and to permit persons to whom the
 | 
				
			||||||
 | 
					 * Software is furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The above copyright notice and this permission notice (including the next
 | 
				
			||||||
 | 
					 * paragraph) shall be included in all copies or substantial portions of the
 | 
				
			||||||
 | 
					 * Software.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
				
			||||||
 | 
					 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
				
			||||||
 | 
					 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
				
			||||||
 | 
					 * DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef SPA_VIDEO_RAW_UTILS_H
 | 
				
			||||||
 | 
					#define SPA_VIDEO_RAW_UTILS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \addtogroup spa_param
 | 
				
			||||||
 | 
					 * \{
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
 | 
					#include <spa/pod/builder.h>
 | 
				
			||||||
 | 
					#include <spa/param/video/raw.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int
 | 
				
			||||||
 | 
					spa_format_video_raw_parse(const struct spa_pod *format,
 | 
				
			||||||
 | 
								   struct spa_video_info_raw *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						info->flags = SPA_VIDEO_FLAG_NONE;
 | 
				
			||||||
 | 
						if (spa_pod_find_prop (format, NULL, SPA_FORMAT_VIDEO_modifier)) {
 | 
				
			||||||
 | 
							info->flags |= SPA_VIDEO_FLAG_MODIFIER;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return spa_pod_parse_object(format,
 | 
				
			||||||
 | 
							SPA_TYPE_OBJECT_Format, NULL,
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_format,		SPA_POD_OPT_Id(&info->format),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_modifier,		SPA_POD_OPT_Long(&info->modifier),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_size,			SPA_POD_OPT_Rectangle(&info->size),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_framerate,		SPA_POD_OPT_Fraction(&info->framerate),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_maxFramerate,		SPA_POD_OPT_Fraction(&info->max_framerate),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_views,			SPA_POD_OPT_Int(&info->views),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_interlaceMode,		SPA_POD_OPT_Id(&info->interlace_mode),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_pixelAspectRatio,	SPA_POD_OPT_Fraction(&info->pixel_aspect_ratio),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_multiviewMode,		SPA_POD_OPT_Id(&info->multiview_mode),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_multiviewFlags,	SPA_POD_OPT_Id(&info->multiview_flags),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_chromaSite,		SPA_POD_OPT_Id(&info->chroma_site),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_colorRange,		SPA_POD_OPT_Id(&info->color_range),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_colorMatrix,		SPA_POD_OPT_Id(&info->color_matrix),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_transferFunction,	SPA_POD_OPT_Id(&info->transfer_function),
 | 
				
			||||||
 | 
							SPA_FORMAT_VIDEO_colorPrimaries,	SPA_POD_OPT_Id(&info->color_primaries));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct spa_pod *
 | 
				
			||||||
 | 
					spa_format_video_raw_build(struct spa_pod_builder *builder, uint32_t id,
 | 
				
			||||||
 | 
								   struct spa_video_info_raw *info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct spa_pod_frame f;
 | 
				
			||||||
 | 
						spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
 | 
				
			||||||
 | 
						spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaType,		SPA_POD_Id(SPA_MEDIA_TYPE_video),
 | 
				
			||||||
 | 
								SPA_FORMAT_mediaSubtype,	SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						if (info->format != SPA_VIDEO_FORMAT_UNKNOWN)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_format,	SPA_POD_Id(info->format), 0);
 | 
				
			||||||
 | 
						if (info->size.width != 0 && info->size.height != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_size,		SPA_POD_Rectangle(&info->size), 0);
 | 
				
			||||||
 | 
						if (info->framerate.denom != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_framerate,	SPA_POD_Fraction(&info->framerate), 0);
 | 
				
			||||||
 | 
						if (info->modifier != 0 || info->flags & SPA_VIDEO_FLAG_MODIFIER)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_modifier,	SPA_POD_Long(info->modifier), 0);
 | 
				
			||||||
 | 
						if (info->max_framerate.denom != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_Fraction(info->max_framerate), 0);
 | 
				
			||||||
 | 
						if (info->views != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_views,		SPA_POD_Int(info->views), 0);
 | 
				
			||||||
 | 
						if (info->interlace_mode != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_interlaceMode,	SPA_POD_Id(info->interlace_mode), 0);
 | 
				
			||||||
 | 
						if (info->pixel_aspect_ratio.denom != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_pixelAspectRatio,SPA_POD_Fraction(info->pixel_aspect_ratio), 0);
 | 
				
			||||||
 | 
						if (info->multiview_mode != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_multiviewMode,	SPA_POD_Id(info->multiview_mode), 0);
 | 
				
			||||||
 | 
						if (info->multiview_flags != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_multiviewFlags,SPA_POD_Id(info->multiview_flags), 0);
 | 
				
			||||||
 | 
						if (info->chroma_site != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_chromaSite,	SPA_POD_Id(info->chroma_site), 0);
 | 
				
			||||||
 | 
						if (info->color_range != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_colorRange,	SPA_POD_Id(info->color_range), 0);
 | 
				
			||||||
 | 
						if (info->color_matrix != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_colorMatrix,	SPA_POD_Id(info->color_matrix), 0);
 | 
				
			||||||
 | 
						if (info->transfer_function != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_transferFunction,SPA_POD_Id(info->transfer_function), 0);
 | 
				
			||||||
 | 
						if (info->color_primaries != 0)
 | 
				
			||||||
 | 
							spa_pod_builder_add(builder,
 | 
				
			||||||
 | 
								SPA_FORMAT_VIDEO_colorPrimaries,SPA_POD_Id(info->color_primaries), 0);
 | 
				
			||||||
 | 
						return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * \}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					} /* extern "C" */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* SPA_VIDEO_RAW_UTILS_H */
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@ extern "C" {
 | 
				
			||||||
 * \{
 | 
					 * \{
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <spa/utils/defs.h>
 | 
					#include <spa/param/format.h>
 | 
				
			||||||
#include <spa/param/video/chroma.h>
 | 
					#include <spa/param/video/chroma.h>
 | 
				
			||||||
#include <spa/param/video/color.h>
 | 
					#include <spa/param/video/color.h>
 | 
				
			||||||
#include <spa/param/video/multiview.h>
 | 
					#include <spa/param/video/multiview.h>
 | 
				
			||||||
| 
						 | 
					@ -210,14 +210,6 @@ struct spa_video_info_raw {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SPA_VIDEO_INFO_RAW_INIT(...)	((struct spa_video_info_raw) { __VA_ARGS__ })
 | 
					#define SPA_VIDEO_INFO_RAW_INIT(...)	((struct spa_video_info_raw) { __VA_ARGS__ })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct spa_video_info_dsp {
 | 
					 | 
				
			||||||
	enum spa_video_format format;
 | 
					 | 
				
			||||||
	uint32_t flags;
 | 
					 | 
				
			||||||
	uint64_t modifier;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_VIDEO_INFO_DSP_INIT(...)	((struct spa_video_info_dsp) { __VA_ARGS__ })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,116 +25,6 @@
 | 
				
			||||||
#ifndef SPA_VIDEO_TYPES_H
 | 
					#ifndef SPA_VIDEO_TYPES_H
 | 
				
			||||||
#define SPA_VIDEO_TYPES_H
 | 
					#define SPA_VIDEO_TYPES_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#include <spa/param/video/raw-types.h>
 | 
				
			||||||
extern "C" {
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					#endif /* SPA_VIDEO_TYPES_H */
 | 
				
			||||||
 * \addtogroup spa_param
 | 
					 | 
				
			||||||
 * \{
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#include <spa/param/video/raw.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_VideoFormat		SPA_TYPE_INFO_ENUM_BASE "VideoFormat"
 | 
					 | 
				
			||||||
#define SPA_TYPE_INFO_VIDEO_FORMAT_BASE		SPA_TYPE_INFO_VideoFormat ":"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct spa_type_info spa_type_video_format[] = {
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_ENCODED,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "encoded", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I420,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_YV12,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YV12", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_YUY2,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YUY2", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_UYVY,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "UYVY", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_AYUV,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "AYUV", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGBx,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBx", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_BGRx,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRx", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_xRGB,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xRGB", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_xBGR,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xBGR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGBA,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_BGRA,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRA", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_ARGB,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ARGB", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_ABGR,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ABGR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGB,		SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_BGR,		SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_Y41B,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y41B", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_Y42B,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y42B", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_YVYU,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YVYU", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_Y444,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_v210,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "v210", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_v216,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "v216", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_NV12,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV12", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_NV21,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV21", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GRAY8,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GRAY8", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GRAY16_BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GRAY16_BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GRAY16_LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GRAY16_LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_v308,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "v308", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGB16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_BGR16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGR16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGB15,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB15", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_BGR15,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGR15", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_UYVP,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "UYVP", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_A420,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A420", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGB8P,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGB8P", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_YUV9,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YUV9", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_YVU9,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "YVU9", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_IYU1,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "IYU1", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_ARGB64,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ARGB64", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_AYUV64,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "AYUV64", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_r210,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "r210", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I420_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I420_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I422_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I422_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_Y444_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_Y444_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBR,		SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBR_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBR_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_NV16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_NV24,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV24", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_NV12_64Z32,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV12_64Z32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_A420_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A420_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_A420_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A420_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_A422_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A422_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_A422_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A422_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_A444_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A444_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_A444_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "A444_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_NV61,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "NV61", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_P010_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "P010_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_P010_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "P010_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_IYU2,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "IYU2", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_VYUY,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "VYUY", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBRA,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBRA_10BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_10BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBRA_10LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_10LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBR_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_12BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBR_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBR_12LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBRA_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_12BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_GBRA_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "GBRA_12LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I420_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_12BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I420_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I420_12LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I422_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_12BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_I422_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "I422_12LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_Y444_12BE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_12BE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_Y444_12LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "Y444_12LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGBA_F16,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA_F16", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGBA_F32,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA_F32", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_xRGB_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xRGB_210LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_xBGR_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "xBGR_210LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGBx_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBx_102LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_BGRx_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRx_102LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_ARGB_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ARGB_210LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_ABGR_210LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "ABGR_210LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_RGBA_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "RGBA_102LE", NULL },
 | 
					 | 
				
			||||||
	{ SPA_VIDEO_FORMAT_BGRA_102LE,	SPA_TYPE_Int, SPA_TYPE_INFO_VIDEO_FORMAT_BASE "BGRA_102LE", NULL },
 | 
					 | 
				
			||||||
	{ 0, 0, NULL, NULL },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * \}
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
}  /* extern "C" */
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* SPA_VIDEO_RAW_TYPES_H */
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue