44spa_format_audio_raw_parse(
const struct spa_pod *format,
struct spa_audio_info_raw *info)
46 struct spa_pod *position = NULL;
49 res = spa_pod_parse_object(format,
50 SPA_TYPE_OBJECT_Format, NULL,
51 SPA_FORMAT_AUDIO_format, SPA_POD_OPT_Id(&info->format),
52 SPA_FORMAT_AUDIO_rate, SPA_POD_OPT_Int(&info->rate),
53 SPA_FORMAT_AUDIO_channels, SPA_POD_OPT_Int(&info->channels),
54 SPA_FORMAT_AUDIO_position, SPA_POD_OPT_Pod(&position));
55 if (position == NULL ||
56 !spa_pod_copy_array(position, SPA_TYPE_Id, info->position, SPA_AUDIO_MAX_CHANNELS))
57 SPA_FLAG_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED);
63spa_format_audio_raw_build(
struct spa_pod_builder *builder, uint32_t id,
64 const struct spa_audio_info_raw *info)
66 struct spa_pod_frame f;
67 spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, id);
68 spa_pod_builder_add(builder,
69 SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_audio),
70 SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
72 if (info->format != SPA_AUDIO_FORMAT_UNKNOWN)
73 spa_pod_builder_add(builder,
74 SPA_FORMAT_AUDIO_format, SPA_POD_Id(info->format), 0);
76 spa_pod_builder_add(builder,
77 SPA_FORMAT_AUDIO_rate, SPA_POD_Int(info->rate), 0);
78 if (info->channels != 0) {
79 spa_pod_builder_add(builder,
80 SPA_FORMAT_AUDIO_channels, SPA_POD_Int(info->channels), 0);
81 if (!SPA_FLAG_IS_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED)) {
82 spa_pod_builder_add(builder, SPA_FORMAT_AUDIO_position,
83 SPA_POD_Array(
sizeof(uint32_t), SPA_TYPE_Id,
84 info->channels, info->position), 0);
87 return (
struct spa_pod*)spa_pod_builder_pop(builder, &f);
168enum spa_media_subtype {
169 SPA_MEDIA_SUBTYPE_unknown,
170 SPA_MEDIA_SUBTYPE_raw,
171 SPA_MEDIA_SUBTYPE_dsp,
172 SPA_MEDIA_SUBTYPE_iec958,
173 SPA_MEDIA_SUBTYPE_dsd,
175 SPA_MEDIA_SUBTYPE_START_Audio = 0x10000,
176 SPA_MEDIA_SUBTYPE_mp3,
177 SPA_MEDIA_SUBTYPE_aac,
178 SPA_MEDIA_SUBTYPE_vorbis,
179 SPA_MEDIA_SUBTYPE_wma,
180 SPA_MEDIA_SUBTYPE_ra,
181 SPA_MEDIA_SUBTYPE_sbc,
182 SPA_MEDIA_SUBTYPE_adpcm,
183 SPA_MEDIA_SUBTYPE_g723,
184 SPA_MEDIA_SUBTYPE_g726,
185 SPA_MEDIA_SUBTYPE_g729,
186 SPA_MEDIA_SUBTYPE_amr,
187 SPA_MEDIA_SUBTYPE_gsm,
188 SPA_MEDIA_SUBTYPE_alac,
189 SPA_MEDIA_SUBTYPE_flac,
190 SPA_MEDIA_SUBTYPE_ape,
191 SPA_MEDIA_SUBTYPE_opus,
192 SPA_MEDIA_SUBTYPE_ac3,
193 SPA_MEDIA_SUBTYPE_eac3,
194 SPA_MEDIA_SUBTYPE_truehd,
195 SPA_MEDIA_SUBTYPE_dts,
196 SPA_MEDIA_SUBTYPE_mpegh,
198 SPA_MEDIA_SUBTYPE_START_Video = 0x20000,
199 SPA_MEDIA_SUBTYPE_h264,
200 SPA_MEDIA_SUBTYPE_mjpg,
201 SPA_MEDIA_SUBTYPE_dv,
202 SPA_MEDIA_SUBTYPE_mpegts,
203 SPA_MEDIA_SUBTYPE_h263,
204 SPA_MEDIA_SUBTYPE_mpeg1,
205 SPA_MEDIA_SUBTYPE_mpeg2,
206 SPA_MEDIA_SUBTYPE_mpeg4,
207 SPA_MEDIA_SUBTYPE_xvid,
208 SPA_MEDIA_SUBTYPE_vc1,
209 SPA_MEDIA_SUBTYPE_vp8,
210 SPA_MEDIA_SUBTYPE_vp9,
211 SPA_MEDIA_SUBTYPE_bayer,
212 SPA_MEDIA_SUBTYPE_h265,
214 SPA_MEDIA_SUBTYPE_START_Image = 0x30000,
215 SPA_MEDIA_SUBTYPE_jpeg,
217 SPA_MEDIA_SUBTYPE_START_Binary = 0x40000,
219 SPA_MEDIA_SUBTYPE_START_Stream = 0x50000,
220 SPA_MEDIA_SUBTYPE_midi,
222 SPA_MEDIA_SUBTYPE_START_Application = 0x60000,
223 SPA_MEDIA_SUBTYPE_control,
224
231 SPA_FORMAT_mediaType,
232 SPA_FORMAT_mediaSubtype,
235 SPA_FORMAT_START_Audio = 0x10000,
236 SPA_FORMAT_AUDIO_format,
237 SPA_FORMAT_AUDIO_flags,
238 SPA_FORMAT_AUDIO_rate,
239 SPA_FORMAT_AUDIO_channels,
240 SPA_FORMAT_AUDIO_position,
242 SPA_FORMAT_AUDIO_iec958Codec,
244 SPA_FORMAT_AUDIO_bitorder,
245 SPA_FORMAT_AUDIO_interleave,
246 SPA_FORMAT_AUDIO_bitrate,
247 SPA_FORMAT_AUDIO_blockAlign,
249 SPA_FORMAT_AUDIO_AAC_streamFormat,
251 SPA_FORMAT_AUDIO_WMA_profile,
253 SPA_FORMAT_AUDIO_AMR_bandMode,
255 SPA_FORMAT_AUDIO_MP3_channelMode,
257 SPA_FORMAT_AUDIO_DTS_extType,
261 SPA_FORMAT_START_Video = 0x20000,
262 SPA_FORMAT_VIDEO_format,
263 SPA_FORMAT_VIDEO_modifier,
264
265 SPA_FORMAT_VIDEO_size,
266 SPA_FORMAT_VIDEO_framerate,
267 SPA_FORMAT_VIDEO_maxFramerate,
268 SPA_FORMAT_VIDEO_views,
269 SPA_FORMAT_VIDEO_interlaceMode,
270 SPA_FORMAT_VIDEO_pixelAspectRatio,
271 SPA_FORMAT_VIDEO_multiviewMode,
272 SPA_FORMAT_VIDEO_multiviewFlags,
273 SPA_FORMAT_VIDEO_chromaSite,
274 SPA_FORMAT_VIDEO_colorRange,
275 SPA_FORMAT_VIDEO_colorMatrix,
276 SPA_FORMAT_VIDEO_transferFunction,
277 SPA_FORMAT_VIDEO_colorPrimaries,
278 SPA_FORMAT_VIDEO_profile,
279 SPA_FORMAT_VIDEO_level,
280 SPA_FORMAT_VIDEO_H264_streamFormat,
281 SPA_FORMAT_VIDEO_H264_alignment,
282 SPA_FORMAT_VIDEO_H265_streamFormat,
283 SPA_FORMAT_VIDEO_H265_alignment,
284 SPA_FORMAT_VIDEO_deviceId,
287 SPA_FORMAT_START_Image = 0x30000,
289 SPA_FORMAT_START_Binary = 0x40000,
291 SPA_FORMAT_START_Stream = 0x50000,
293 SPA_FORMAT_START_Application = 0x60000,
294 SPA_FORMAT_CONTROL_types,
295