mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
spa: allow variable format, rate, channels, size, framerate
Use 0 values to skip adding the values to the format param, which leaves them variable.
This commit is contained in:
parent
7afb3bc1a4
commit
339927ac76
2 changed files with 29 additions and 13 deletions
|
|
@ -72,15 +72,21 @@ spa_format_audio_raw_build(struct spa_pod_builder *builder, uint32_t id, struct
|
|||
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),
|
||||
SPA_FORMAT_AUDIO_format, SPA_POD_Id(info->format),
|
||||
SPA_FORMAT_AUDIO_rate, SPA_POD_Int(info->rate),
|
||||
SPA_FORMAT_AUDIO_channels, SPA_POD_Int(info->channels),
|
||||
0);
|
||||
|
||||
if (!SPA_FLAG_IS_SET(info->flags, SPA_AUDIO_FLAG_UNPOSITIONED)) {
|
||||
spa_pod_builder_prop(builder, SPA_FORMAT_AUDIO_position, 0);
|
||||
spa_pod_builder_array(builder, sizeof(uint32_t), SPA_TYPE_Id,
|
||||
info->channels, info->position);
|
||||
if (info->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);
|
||||
}
|
||||
|
|
@ -93,8 +99,10 @@ spa_format_audio_dsp_build(struct spa_pod_builder *builder, uint32_t id, struct
|
|||
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),
|
||||
SPA_FORMAT_AUDIO_format, SPA_POD_Id(info->format),
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -76,10 +76,16 @@ spa_format_video_raw_build(struct spa_pod_builder *builder, uint32_t 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),
|
||||
SPA_FORMAT_VIDEO_format, SPA_POD_Id(info->format),
|
||||
SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&info->size),
|
||||
SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&info->framerate),
|
||||
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)
|
||||
spa_pod_builder_add(builder,
|
||||
SPA_FORMAT_VIDEO_modifier, SPA_POD_Long(info->modifier), 0);
|
||||
|
|
@ -128,8 +134,10 @@ spa_format_video_dsp_build(struct spa_pod_builder *builder, uint32_t 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),
|
||||
SPA_FORMAT_VIDEO_format, SPA_POD_Id(info->format),
|
||||
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)
|
||||
spa_pod_builder_add(builder,
|
||||
SPA_FORMAT_VIDEO_modifier, SPA_POD_Long(info->modifier), 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue