mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
Make media type and subtype properties
This is easier to debug and we only want properties in objects in the future.
This commit is contained in:
parent
514528f2c7
commit
ff6a244d8f
45 changed files with 151 additions and 124 deletions
|
|
@ -34,6 +34,7 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum spa_data_type {
|
enum spa_data_type {
|
||||||
|
SPA_DATA_Invalid,
|
||||||
SPA_DATA_MemPtr, /**< pointer to memory, the data field in
|
SPA_DATA_MemPtr, /**< pointer to memory, the data field in
|
||||||
* struct spa_data is set. */
|
* struct spa_data is set. */
|
||||||
SPA_DATA_MemFd, /**< generic fd, mmap to get to memory */
|
SPA_DATA_MemFd, /**< generic fd, mmap to get to memory */
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ extern "C" {
|
||||||
* Metadata contains extra information on a buffer.
|
* Metadata contains extra information on a buffer.
|
||||||
*/
|
*/
|
||||||
enum spa_meta_type {
|
enum spa_meta_type {
|
||||||
|
SPA_META_Invalid,
|
||||||
SPA_META_Header,
|
SPA_META_Header,
|
||||||
SPA_META_VideoCrop,
|
SPA_META_VideoCrop,
|
||||||
SPA_META_VideoDamage,
|
SPA_META_VideoDamage,
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ extern "C" {
|
||||||
#define SPA_TYPE_DATA_FD_BASE SPA_TYPE_DATA__Fd ":"
|
#define SPA_TYPE_DATA_FD_BASE SPA_TYPE_DATA__Fd ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_data_type[] = {
|
static const struct spa_type_info spa_type_data_type[] = {
|
||||||
|
{ SPA_DATA_Invalid, SPA_TYPE_DATA_BASE "Invalid", SPA_TYPE_Int, },
|
||||||
{ SPA_DATA_MemPtr, SPA_TYPE_DATA_BASE "MemPtr", SPA_TYPE_Int, },
|
{ SPA_DATA_MemPtr, SPA_TYPE_DATA_BASE "MemPtr", SPA_TYPE_Int, },
|
||||||
{ SPA_DATA_MemFd, SPA_TYPE_DATA_FD_BASE "MemFd", SPA_TYPE_Int, },
|
{ SPA_DATA_MemFd, SPA_TYPE_DATA_FD_BASE "MemFd", SPA_TYPE_Int, },
|
||||||
{ SPA_DATA_DmaBuf, SPA_TYPE_DATA_FD_BASE "DmaBuf", SPA_TYPE_Int, },
|
{ SPA_DATA_DmaBuf, SPA_TYPE_DATA_FD_BASE "DmaBuf", SPA_TYPE_Int, },
|
||||||
|
|
@ -56,6 +57,7 @@ static const struct spa_type_info spa_type_data_type[] = {
|
||||||
#define SPA_TYPE_META_REGION_ARRAY_BASE SPA_TYPE_META__RegionArray ":"
|
#define SPA_TYPE_META_REGION_ARRAY_BASE SPA_TYPE_META__RegionArray ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_meta_type[] = {
|
static const struct spa_type_info spa_type_meta_type[] = {
|
||||||
|
{ SPA_META_Invalid, SPA_TYPE_META_BASE "Invalid", SPA_TYPE_Pointer },
|
||||||
{ SPA_META_Header, SPA_TYPE_META_BASE "Header", SPA_TYPE_Pointer },
|
{ SPA_META_Header, SPA_TYPE_META_BASE "Header", SPA_TYPE_Pointer },
|
||||||
{ SPA_META_VideoCrop, SPA_TYPE_META_REGION_BASE "VideoCrop", SPA_TYPE_Pointer },
|
{ SPA_META_VideoCrop, SPA_TYPE_META_REGION_BASE "VideoCrop", SPA_TYPE_Pointer },
|
||||||
{ SPA_META_VideoDamage, SPA_TYPE_META_REGION_ARRAY_BASE "VideoDamage", SPA_TYPE_Pointer },
|
{ SPA_META_VideoDamage, SPA_TYPE_META_REGION_ARRAY_BASE "VideoDamage", SPA_TYPE_Pointer },
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,9 @@ extern "C" {
|
||||||
|
|
||||||
/** Different Control types */
|
/** Different Control types */
|
||||||
enum spa_control_type {
|
enum spa_control_type {
|
||||||
SPA_CONTROL_properties,
|
SPA_CONTROL_Invalid,
|
||||||
SPA_CONTROL_midi,
|
SPA_CONTROL_Properties,
|
||||||
|
SPA_CONTROL_Midi,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ extern "C" {
|
||||||
#include <spa/pod/parser.h>
|
#include <spa/pod/parser.h>
|
||||||
#include <spa/debug/types.h>
|
#include <spa/debug/types.h>
|
||||||
#include <spa/param/type-info.h>
|
#include <spa/param/type-info.h>
|
||||||
|
#include <spa/param/format-utils.h>
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
spa_debug_format_value(const struct spa_type_info *info,
|
spa_debug_format_value(const struct spa_type_info *info,
|
||||||
|
|
@ -124,16 +125,13 @@ static inline int spa_debug_format(int indent,
|
||||||
if (format == NULL || SPA_POD_TYPE(format) != SPA_TYPE_Object)
|
if (format == NULL || SPA_POD_TYPE(format) != SPA_TYPE_Object)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (spa_format_parse(format, &mtype, &mstype) < 0)
|
||||||
|
|
||||||
if (spa_pod_object_parse(format, "I", &mtype,
|
|
||||||
"I", &mstype) < 0)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
media_type = spa_debug_type_find_name(spa_type_media_type, mtype);
|
media_type = spa_debug_type_find_name(spa_type_media_type, mtype);
|
||||||
media_subtype = spa_debug_type_find_name(spa_type_media_subtype, mstype);
|
media_subtype = spa_debug_type_find_name(spa_type_media_subtype, mstype);
|
||||||
|
|
||||||
fprintf(stderr, "%-6s %s/%s\n", "",
|
fprintf(stderr, "%*s %s/%s\n", indent, "",
|
||||||
media_type ? rindex(media_type, ':') + 1 : "unknown",
|
media_type ? rindex(media_type, ':') + 1 : "unknown",
|
||||||
media_subtype ? rindex(media_subtype, ':') + 1 : "unknown");
|
media_subtype ? rindex(media_subtype, ':') + 1 : "unknown");
|
||||||
|
|
||||||
|
|
@ -153,10 +151,14 @@ static inline int spa_debug_format(int indent,
|
||||||
(prop->body.flags & SPA_POD_PROP_FLAG_OPTIONAL))
|
(prop->body.flags & SPA_POD_PROP_FLAG_OPTIONAL))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (prop->body.key == SPA_FORMAT_mediaType ||
|
||||||
|
prop->body.key == SPA_FORMAT_mediaSubtype)
|
||||||
|
continue;
|
||||||
|
|
||||||
ti = spa_debug_type_find(info, prop->body.key);
|
ti = spa_debug_type_find(info, prop->body.key);
|
||||||
key = ti ? ti->name : NULL;
|
key = ti ? ti->name : NULL;
|
||||||
|
|
||||||
fprintf(stderr, " %20s : (%s) ",
|
fprintf(stderr, "%*s %16s : (%s) ", indent, "",
|
||||||
key ? rindex(key, ':') + 1 : "unknown",
|
key ? rindex(key, ':') + 1 : "unknown",
|
||||||
pod_type_names[prop->body.value.type]);
|
pod_type_names[prop->body.value.type]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ struct spa_monitor;
|
||||||
#include <spa/pod/builder.h>
|
#include <spa/pod/builder.h>
|
||||||
|
|
||||||
enum spa_monitor_event {
|
enum spa_monitor_event {
|
||||||
|
SPA_MONITOR_EVENT_Invalid,
|
||||||
SPA_MONITOR_EVENT_Added,
|
SPA_MONITOR_EVENT_Added,
|
||||||
SPA_MONITOR_EVENT_Removed,
|
SPA_MONITOR_EVENT_Removed,
|
||||||
SPA_MONITOR_EVENT_Changed,
|
SPA_MONITOR_EVENT_Changed,
|
||||||
|
|
@ -46,9 +47,10 @@ enum spa_monitor_item_flags {
|
||||||
|
|
||||||
/** The monitor item state */
|
/** The monitor item state */
|
||||||
enum spa_monitor_item_state {
|
enum spa_monitor_item_state {
|
||||||
SPA_MONITOR_ITEM_STATE_AVAILABLE, /*< The item is available */
|
SPA_MONITOR_ITEM_STATE_Invalid, /*< The item is available */
|
||||||
SPA_MONITOR_ITEM_STATE_DISABLED, /*< The item is disabled */
|
SPA_MONITOR_ITEM_STATE_Available, /*< The item is available */
|
||||||
SPA_MONITOR_ITEM_STATE_UNAVAILABLE, /*< The item is unavailable */
|
SPA_MONITOR_ITEM_STATE_Disabled, /*< The item is disabled */
|
||||||
|
SPA_MONITOR_ITEM_STATE_Unavailable, /*< The item is unavailable */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** properties for SPA_TYPE_OBJECT_MonitorItem */
|
/** properties for SPA_TYPE_OBJECT_MonitorItem */
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,9 @@ static const struct spa_type_info spa_type_monitor_item_flags[] = {
|
||||||
#define SPA_TYPE_MONITOR_ITEM_STATE_BASE SPA_TYPE__MonitorItemState ":"
|
#define SPA_TYPE_MONITOR_ITEM_STATE_BASE SPA_TYPE__MonitorItemState ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_monitor_item_state[] = {
|
static const struct spa_type_info spa_type_monitor_item_state[] = {
|
||||||
{ SPA_MONITOR_ITEM_STATE_AVAILABLE, SPA_TYPE_MONITOR_ITEM_STATE_BASE "available", SPA_TYPE_Int, },
|
{ SPA_MONITOR_ITEM_STATE_Available, SPA_TYPE_MONITOR_ITEM_STATE_BASE "Available", SPA_TYPE_Int, },
|
||||||
{ SPA_MONITOR_ITEM_STATE_DISABLED, SPA_TYPE_MONITOR_ITEM_STATE_BASE "disabled", SPA_TYPE_Int, },
|
{ SPA_MONITOR_ITEM_STATE_Disabled, SPA_TYPE_MONITOR_ITEM_STATE_BASE "Disabled", SPA_TYPE_Int, },
|
||||||
{ SPA_MONITOR_ITEM_STATE_UNAVAILABLE, SPA_TYPE_MONITOR_ITEM_STATE_BASE "unavailable", SPA_TYPE_Int, },
|
{ SPA_MONITOR_ITEM_STATE_Unavailable, SPA_TYPE_MONITOR_ITEM_STATE_BASE "Unavailable", SPA_TYPE_Int, },
|
||||||
{ 0, NULL, },
|
{ 0, NULL, },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ static const struct spa_type_info spa_type_monitor_item_state[] = {
|
||||||
#define SPA_TYPE_MONITOR_ITEM_BASE SPA_TYPE__MonitorItem ":"
|
#define SPA_TYPE_MONITOR_ITEM_BASE SPA_TYPE__MonitorItem ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_monitor_item[] = {
|
static const struct spa_type_info spa_type_monitor_item[] = {
|
||||||
{ SPA_MONITOR_ITEM_START, SPA_TYPE_MONITOR_ITEM_BASE, SPA_TYPE_Int, },
|
{ SPA_MONITOR_ITEM_START, SPA_TYPE_MONITOR_ITEM_BASE, SPA_TYPE_Int, },
|
||||||
{ SPA_MONITOR_ITEM_id, SPA_TYPE_MONITOR_ITEM_BASE "id", SPA_TYPE_String, },
|
{ SPA_MONITOR_ITEM_id, SPA_TYPE_MONITOR_ITEM_BASE "id", SPA_TYPE_String, },
|
||||||
{ SPA_MONITOR_ITEM_flags, SPA_TYPE_MONITOR_ITEM_BASE "flags", SPA_TYPE_Enum,
|
{ SPA_MONITOR_ITEM_flags, SPA_TYPE_MONITOR_ITEM_BASE "flags", SPA_TYPE_Enum,
|
||||||
spa_type_monitor_item_flags },
|
spa_type_monitor_item_flags },
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ extern "C" {
|
||||||
|
|
||||||
/** Different IO area types */
|
/** Different IO area types */
|
||||||
enum spa_io_type {
|
enum spa_io_type {
|
||||||
|
SPA_IO_Invalid,
|
||||||
SPA_IO_Buffers,
|
SPA_IO_Buffers,
|
||||||
SPA_IO_Range,
|
SPA_IO_Range,
|
||||||
SPA_IO_Clock,
|
SPA_IO_Clock,
|
||||||
|
|
|
||||||
|
|
@ -108,12 +108,10 @@ struct spa_node_callbacks {
|
||||||
};
|
};
|
||||||
|
|
||||||
/** flags that can be passed to set_param and port_set_param functions */
|
/** flags that can be passed to set_param and port_set_param functions */
|
||||||
enum spa_node_param_flags {
|
#define SPA_NODE_PARAM_FLAG_TEST_ONLY (1 << 0) /* just check if the param is accepted */
|
||||||
SPA_NODE_PARAM_FLAG_TEST_ONLY = (1 << 0), /* just check if the param is accepted */
|
#define SPA_NODE_PARAM_FLAG_FIXATE (1 << 1) /* fixate the non-optional unset fields */
|
||||||
SPA_NODE_PARAM_FLAG_FIXATE = (1 << 1), /* fixate the non-optional unset fields */
|
#define SPA_NODE_PARAM_FLAG_NEAREST (1 << 2) /* allow set fields to be rounded to the
|
||||||
SPA_NODE_PARAM_FLAG_NEAREST = (1 << 2), /* allow set fields to be rounded to the
|
|
||||||
* nearest allowed field value. */
|
* nearest allowed field value. */
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A spa_node is a component that can consume and produce buffers.
|
* A spa_node is a component that can consume and produce buffers.
|
||||||
|
|
|
||||||
|
|
@ -49,14 +49,14 @@ static const struct spa_type_info spa_type_node_event[] = {
|
||||||
#define SPA_TYPE_NODE_COMMAND_BASE SPA_TYPE__NodeCommand ":"
|
#define SPA_TYPE_NODE_COMMAND_BASE SPA_TYPE__NodeCommand ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_node_command_id[] = {
|
static const struct spa_type_info spa_type_node_command_id[] = {
|
||||||
{ SPA_NODE_COMMAND_Suspend, SPA_TYPE_NODE_COMMAND_BASE "Suspend", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Suspend, SPA_TYPE_NODE_COMMAND_BASE "Suspend", SPA_TYPE_Int, },
|
||||||
{ SPA_NODE_COMMAND_Pause, SPA_TYPE_NODE_COMMAND_BASE "Pause", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Pause, SPA_TYPE_NODE_COMMAND_BASE "Pause", SPA_TYPE_Int, },
|
||||||
{ SPA_NODE_COMMAND_Start, SPA_TYPE_NODE_COMMAND_BASE "Start", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Start, SPA_TYPE_NODE_COMMAND_BASE "Start", SPA_TYPE_Int, },
|
||||||
{ SPA_NODE_COMMAND_Enable, SPA_TYPE_NODE_COMMAND_BASE "Enable", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Enable, SPA_TYPE_NODE_COMMAND_BASE "Enable", SPA_TYPE_Int, },
|
||||||
{ SPA_NODE_COMMAND_Disable, SPA_TYPE_NODE_COMMAND_BASE "Disable", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Disable, SPA_TYPE_NODE_COMMAND_BASE "Disable", SPA_TYPE_Int, },
|
||||||
{ SPA_NODE_COMMAND_Flush, SPA_TYPE_NODE_COMMAND_BASE "Flush", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Flush, SPA_TYPE_NODE_COMMAND_BASE "Flush", SPA_TYPE_Int, },
|
||||||
{ SPA_NODE_COMMAND_Drain, SPA_TYPE_NODE_COMMAND_BASE "Drain", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Drain, SPA_TYPE_NODE_COMMAND_BASE "Drain", SPA_TYPE_Int, },
|
||||||
{ SPA_NODE_COMMAND_Marker, SPA_TYPE_NODE_COMMAND_BASE "Marker", SPA_TYPE_Int, },
|
{ SPA_NODE_COMMAND_Marker, SPA_TYPE_NODE_COMMAND_BASE "Marker", SPA_TYPE_Int, },
|
||||||
{ 0, NULL, },
|
{ 0, NULL, },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,8 @@ spa_format_audio_raw_build(struct spa_pod_builder *builder, uint32_t id, struct
|
||||||
{
|
{
|
||||||
return spa_pod_builder_object(builder,
|
return spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, id,
|
SPA_TYPE_OBJECT_Format, id,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", info->format,
|
":", SPA_FORMAT_AUDIO_format, "I", info->format,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", info->layout,
|
":", SPA_FORMAT_AUDIO_layout, "I", info->layout,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "i", info->rate,
|
":", SPA_FORMAT_AUDIO_rate, "i", info->rate,
|
||||||
|
|
|
||||||
|
|
@ -122,22 +122,21 @@ enum spa_audio_format {
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Extra audio flags */
|
/** Extra audio flags */
|
||||||
enum spa_audio_flags {
|
#define SPA_AUDIO_FLAG_NONE (0) /*< no valid flag */
|
||||||
SPA_AUDIO_FLAG_NONE = 0, /*< no valid flag */
|
#define SPA_AUDIO_FLAG_UNPOSITIONED (1 << 0) /*< the position array explicitly
|
||||||
SPA_AUDIO_FLAG_UNPOSITIONED = (1 << 0), /*< the position array explicitly
|
|
||||||
* contains unpositioned channels. */
|
* contains unpositioned channels. */
|
||||||
};
|
|
||||||
|
|
||||||
/** Layout of the audio samples for the different channels. */
|
/** Layout of the audio samples for the different channels. */
|
||||||
enum spa_audio_layout {
|
enum spa_audio_layout {
|
||||||
SPA_AUDIO_LAYOUT_INTERLEAVED = 0, /*< interleaved audio */
|
SPA_AUDIO_LAYOUT_INVALID,
|
||||||
SPA_AUDIO_LAYOUT_NON_INTERLEAVED /*< non-interleaved audio */
|
SPA_AUDIO_LAYOUT_INTERLEAVED, /*< interleaved audio */
|
||||||
|
SPA_AUDIO_LAYOUT_NON_INTERLEAVED, /*< non-interleaved audio */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Audio information description */
|
/** Audio information description */
|
||||||
struct spa_audio_info_raw {
|
struct spa_audio_info_raw {
|
||||||
enum spa_audio_format format; /*< format, one of enum spa_audio_format */
|
enum spa_audio_format format; /*< format, one of enum spa_audio_format */
|
||||||
enum spa_audio_flags flags; /*< extra flags */
|
uint32_t flags; /*< extra flags */
|
||||||
enum spa_audio_layout layout; /*< sample layout */
|
enum spa_audio_layout layout; /*< sample layout */
|
||||||
uint32_t rate; /*< sample rate */
|
uint32_t rate; /*< sample rate */
|
||||||
uint32_t channels; /*< number of channels */
|
uint32_t channels; /*< number of channels */
|
||||||
|
|
|
||||||
|
|
@ -78,8 +78,9 @@ static const struct spa_type_info spa_type_audio_flags[] = {
|
||||||
#define SPA_TYPE_AUDIO_ENUM_BASE SPA_TYPE__AudioLayout ":"
|
#define SPA_TYPE_AUDIO_ENUM_BASE SPA_TYPE__AudioLayout ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_audio_layout[] = {
|
static const struct spa_type_info spa_type_audio_layout[] = {
|
||||||
{ SPA_AUDIO_LAYOUT_INTERLEAVED, SPA_TYPE_AUDIO_ENUM_BASE "interleaved", SPA_TYPE_Int, },
|
{ SPA_AUDIO_LAYOUT_INVALID, SPA_TYPE_AUDIO_ENUM_BASE "Invalid", SPA_TYPE_Int, },
|
||||||
{ SPA_AUDIO_LAYOUT_NON_INTERLEAVED, SPA_TYPE_AUDIO_ENUM_BASE "non-interleaved", SPA_TYPE_Int, },
|
{ SPA_AUDIO_LAYOUT_INTERLEAVED, SPA_TYPE_AUDIO_ENUM_BASE "Interleaved", SPA_TYPE_Int, },
|
||||||
|
{ SPA_AUDIO_LAYOUT_NON_INTERLEAVED, SPA_TYPE_AUDIO_ENUM_BASE "Non-Interleaved", SPA_TYPE_Int, },
|
||||||
{ 0, NULL, },
|
{ 0, NULL, },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@ static inline int
|
||||||
spa_format_parse(const struct spa_pod *format, uint32_t *media_type, uint32_t *media_subtype)
|
spa_format_parse(const struct spa_pod *format, uint32_t *media_type, uint32_t *media_subtype)
|
||||||
{
|
{
|
||||||
return spa_pod_object_parse(format,
|
return spa_pod_object_parse(format,
|
||||||
"I", media_type,
|
":", SPA_FORMAT_mediaType, "I", media_type,
|
||||||
"I", media_subtype, NULL);
|
":", SPA_FORMAT_mediaSubtype, "I", media_subtype, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ extern "C" {
|
||||||
|
|
||||||
/** media type for SPA_TYPE_OBJECT_Format */
|
/** media type for SPA_TYPE_OBJECT_Format */
|
||||||
enum spa_media_type {
|
enum spa_media_type {
|
||||||
SPA_MEDIA_TYPE_START,
|
SPA_MEDIA_TYPE_unknown,
|
||||||
SPA_MEDIA_TYPE_audio,
|
SPA_MEDIA_TYPE_audio,
|
||||||
SPA_MEDIA_TYPE_video,
|
SPA_MEDIA_TYPE_video,
|
||||||
SPA_MEDIA_TYPE_image,
|
SPA_MEDIA_TYPE_image,
|
||||||
|
|
@ -38,7 +38,7 @@ enum spa_media_type {
|
||||||
|
|
||||||
/** media subtype for SPA_TYPE_OBJECT_Format */
|
/** media subtype for SPA_TYPE_OBJECT_Format */
|
||||||
enum spa_media_subtype {
|
enum spa_media_subtype {
|
||||||
SPA_MEDIA_SUBTYPE_START_Generic,
|
SPA_MEDIA_SUBTYPE_unknown,
|
||||||
SPA_MEDIA_SUBTYPE_raw,
|
SPA_MEDIA_SUBTYPE_raw,
|
||||||
|
|
||||||
SPA_MEDIA_SUBTYPE_START_Audio = 0x10000,
|
SPA_MEDIA_SUBTYPE_START_Audio = 0x10000,
|
||||||
|
|
@ -83,11 +83,11 @@ enum spa_media_subtype {
|
||||||
enum spa_format {
|
enum spa_format {
|
||||||
SPA_FORMAT_START, /**< id of the object, one of enum spa_param_type */
|
SPA_FORMAT_START, /**< id of the object, one of enum spa_param_type */
|
||||||
|
|
||||||
SPA_FORMAT_MediaType, /**< first int in object, one of enum spa_media_type */
|
SPA_FORMAT_mediaType, /**< one of enum spa_media_type */
|
||||||
SPA_FORMAT_MediaSubtype, /**< second int in object, one of enum spa_media_subtype */
|
SPA_FORMAT_mediaSubtype, /**< one of enum spa_media_subtype */
|
||||||
|
|
||||||
/* Audio format keys */
|
/* Audio format keys */
|
||||||
SPA_FORMAT_START_AUDIO,
|
SPA_FORMAT_START_Audio,
|
||||||
SPA_FORMAT_AUDIO_format,
|
SPA_FORMAT_AUDIO_format,
|
||||||
SPA_FORMAT_AUDIO_flags,
|
SPA_FORMAT_AUDIO_flags,
|
||||||
SPA_FORMAT_AUDIO_layout,
|
SPA_FORMAT_AUDIO_layout,
|
||||||
|
|
@ -96,7 +96,7 @@ enum spa_format {
|
||||||
SPA_FORMAT_AUDIO_channelMask,
|
SPA_FORMAT_AUDIO_channelMask,
|
||||||
|
|
||||||
/* Video Format keys */
|
/* Video Format keys */
|
||||||
SPA_FORMAT_START_VIDEO = 0x10000,
|
SPA_FORMAT_START_Video = 0x10000,
|
||||||
SPA_FORMAT_VIDEO_format,
|
SPA_FORMAT_VIDEO_format,
|
||||||
SPA_FORMAT_VIDEO_size,
|
SPA_FORMAT_VIDEO_size,
|
||||||
SPA_FORMAT_VIDEO_framerate,
|
SPA_FORMAT_VIDEO_framerate,
|
||||||
|
|
@ -117,11 +117,11 @@ enum spa_format {
|
||||||
SPA_FORMAT_VIDEO_alignment,
|
SPA_FORMAT_VIDEO_alignment,
|
||||||
|
|
||||||
/* Image Format keys */
|
/* Image Format keys */
|
||||||
SPA_FORMAT_START_IMAGE = 0x20000,
|
SPA_FORMAT_START_Image = 0x20000,
|
||||||
/* Binary Format keys */
|
/* Binary Format keys */
|
||||||
SPA_FORMAT_START_BINARY = 0x30000,
|
SPA_FORMAT_START_Binary = 0x30000,
|
||||||
/* Stream Format keys */
|
/* Stream Format keys */
|
||||||
SPA_FORMAT_START_STREAM = 0x40000,
|
SPA_FORMAT_START_Stream = 0x40000,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ extern "C" {
|
||||||
|
|
||||||
/** different parameter types that can be queried */
|
/** different parameter types that can be queried */
|
||||||
enum spa_param_type {
|
enum spa_param_type {
|
||||||
SPA_PARAM_START, /**< no value */
|
SPA_PARAM_Invalid, /**< invalid */
|
||||||
SPA_PARAM_List, /**< available params */
|
SPA_PARAM_List, /**< available params */
|
||||||
SPA_PARAM_PropInfo, /**< property information */
|
SPA_PARAM_PropInfo, /**< property information */
|
||||||
SPA_PARAM_Props, /**< properties */
|
SPA_PARAM_Props, /**< properties */
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ extern "C" {
|
||||||
#define SPA_TYPE_PARAM_ID_BASE SPA_TYPE__ParamId ":"
|
#define SPA_TYPE_PARAM_ID_BASE SPA_TYPE__ParamId ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_param[] = {
|
static const struct spa_type_info spa_type_param[] = {
|
||||||
{ SPA_PARAM_START, "undefined", SPA_TYPE_Int, },
|
{ SPA_PARAM_Invalid, SPA_TYPE_PARAM_ID_BASE "Invalid", SPA_TYPE_Int, },
|
||||||
{ SPA_PARAM_List, SPA_TYPE_PARAM_ID_BASE "List", SPA_TYPE_Int, },
|
{ SPA_PARAM_List, SPA_TYPE_PARAM_ID_BASE "List", SPA_TYPE_Int, },
|
||||||
{ SPA_PARAM_PropInfo, SPA_TYPE_PARAM_ID_BASE "PropInfo", SPA_TYPE_Int, },
|
{ SPA_PARAM_PropInfo, SPA_TYPE_PARAM_ID_BASE "PropInfo", SPA_TYPE_Int, },
|
||||||
{ SPA_PARAM_Props, SPA_TYPE_PARAM_ID_BASE "Props", SPA_TYPE_Int, },
|
{ SPA_PARAM_Props, SPA_TYPE_PARAM_ID_BASE "Props", SPA_TYPE_Int, },
|
||||||
|
|
@ -56,7 +56,7 @@ static const struct spa_type_info spa_type_param[] = {
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_param_list[] = {
|
static const struct spa_type_info spa_type_param_list[] = {
|
||||||
{ SPA_PARAM_LIST_START, SPA_TYPE_PARAM_LIST_BASE, SPA_TYPE_Enum, spa_type_param },
|
{ SPA_PARAM_LIST_START, SPA_TYPE_PARAM_LIST_BASE, SPA_TYPE_Enum, spa_type_param },
|
||||||
{ SPA_PARAM_LIST_id, SPA_TYPE_PARAM_LIST_BASE "id", SPA_TYPE_Enum, },
|
{ SPA_PARAM_LIST_id, SPA_TYPE_PARAM_LIST_BASE "id", SPA_TYPE_Enum, spa_type_param },
|
||||||
{ 0, NULL, },
|
{ 0, NULL, },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -141,11 +141,12 @@ static const struct spa_type_info spa_type_param_io[] = {
|
||||||
#include <spa/param/video/type-info.h>
|
#include <spa/param/video/type-info.h>
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_media_type[] = {
|
static const struct spa_type_info spa_type_media_type[] = {
|
||||||
{ SPA_MEDIA_TYPE_audio, SPA_TYPE_MEDIA_TYPE_BASE "audio", SPA_TYPE_Int, },
|
{ SPA_MEDIA_TYPE_unknown, SPA_TYPE_MEDIA_TYPE_BASE "unknown", SPA_TYPE_Int, },
|
||||||
{ SPA_MEDIA_TYPE_video, SPA_TYPE_MEDIA_TYPE_BASE "video", SPA_TYPE_Int, },
|
{ SPA_MEDIA_TYPE_audio, SPA_TYPE_MEDIA_TYPE_BASE "audio", SPA_TYPE_Int, },
|
||||||
{ SPA_MEDIA_TYPE_image, SPA_TYPE_MEDIA_TYPE_BASE "image", SPA_TYPE_Int, },
|
{ SPA_MEDIA_TYPE_video, SPA_TYPE_MEDIA_TYPE_BASE "video", SPA_TYPE_Int, },
|
||||||
{ SPA_MEDIA_TYPE_binary, SPA_TYPE_MEDIA_TYPE_BASE "binary", SPA_TYPE_Int, },
|
{ SPA_MEDIA_TYPE_image, SPA_TYPE_MEDIA_TYPE_BASE "image", SPA_TYPE_Int, },
|
||||||
{ SPA_MEDIA_TYPE_stream, SPA_TYPE_MEDIA_TYPE_BASE "stream", SPA_TYPE_Int, },
|
{ SPA_MEDIA_TYPE_binary, SPA_TYPE_MEDIA_TYPE_BASE "binary", SPA_TYPE_Int, },
|
||||||
|
{ SPA_MEDIA_TYPE_stream, SPA_TYPE_MEDIA_TYPE_BASE "stream", SPA_TYPE_Int, },
|
||||||
{ 0, NULL, },
|
{ 0, NULL, },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -153,6 +154,7 @@ static const struct spa_type_info spa_type_media_type[] = {
|
||||||
#define SPA_TYPE_MEDIA_SUBTYPE_BASE SPA_TYPE__MediaSubtype ":"
|
#define SPA_TYPE_MEDIA_SUBTYPE_BASE SPA_TYPE__MediaSubtype ":"
|
||||||
|
|
||||||
static const struct spa_type_info spa_type_media_subtype[] = {
|
static const struct spa_type_info spa_type_media_subtype[] = {
|
||||||
|
{ SPA_MEDIA_SUBTYPE_unknown, SPA_TYPE_MEDIA_SUBTYPE_BASE "unknown", SPA_TYPE_Int, },
|
||||||
/* generic subtypes */
|
/* generic subtypes */
|
||||||
{ SPA_MEDIA_SUBTYPE_raw, SPA_TYPE_MEDIA_SUBTYPE_BASE "raw", SPA_TYPE_Int, },
|
{ SPA_MEDIA_SUBTYPE_raw, SPA_TYPE_MEDIA_SUBTYPE_BASE "raw", SPA_TYPE_Int, },
|
||||||
/* audio subtypes */
|
/* audio subtypes */
|
||||||
|
|
@ -197,9 +199,9 @@ static const struct spa_type_info spa_type_media_subtype[] = {
|
||||||
static const struct spa_type_info spa_type_format[] = {
|
static const struct spa_type_info spa_type_format[] = {
|
||||||
{ SPA_FORMAT_START, SPA_TYPE_FORMAT_BASE, SPA_TYPE_Enum, spa_type_param, },
|
{ SPA_FORMAT_START, SPA_TYPE_FORMAT_BASE, SPA_TYPE_Enum, spa_type_param, },
|
||||||
|
|
||||||
{ SPA_FORMAT_MediaType, SPA_TYPE_FORMAT_BASE "mediaType", SPA_TYPE_Enum,
|
{ SPA_FORMAT_mediaType, SPA_TYPE_FORMAT_BASE "mediaType", SPA_TYPE_Enum,
|
||||||
spa_type_media_type, },
|
spa_type_media_type, },
|
||||||
{ SPA_FORMAT_MediaSubtype, SPA_TYPE_FORMAT_BASE "mediaSubtype", SPA_TYPE_Enum,
|
{ SPA_FORMAT_mediaSubtype, SPA_TYPE_FORMAT_BASE "mediaSubtype", SPA_TYPE_Enum,
|
||||||
spa_type_media_subtype, },
|
spa_type_media_subtype, },
|
||||||
|
|
||||||
{ SPA_FORMAT_AUDIO_format, SPA_TYPE_FORMAT_AUDIO_BASE "format", SPA_TYPE_Enum,
|
{ SPA_FORMAT_AUDIO_format, SPA_TYPE_FORMAT_AUDIO_BASE "format", SPA_TYPE_Enum,
|
||||||
|
|
|
||||||
|
|
@ -56,8 +56,8 @@ spa_format_video_raw_build(struct spa_pod_builder *builder, uint32_t id,
|
||||||
{
|
{
|
||||||
return spa_pod_builder_object(builder,
|
return spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, id,
|
SPA_TYPE_OBJECT_Format, id,
|
||||||
"I", SPA_MEDIA_TYPE_video,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_VIDEO_format, "I", &info->format,
|
":", SPA_FORMAT_VIDEO_format, "I", &info->format,
|
||||||
":", SPA_FORMAT_VIDEO_size, "R", &info->size,
|
":", SPA_FORMAT_VIDEO_size, "R", &info->size,
|
||||||
":", SPA_FORMAT_VIDEO_framerate, "F", &info->framerate);
|
":", SPA_FORMAT_VIDEO_framerate, "F", &info->framerate);
|
||||||
|
|
|
||||||
|
|
@ -164,7 +164,7 @@ fill_item(struct impl *this, snd_ctl_card_info_t *card_info,
|
||||||
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
|
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
|
||||||
":", SPA_MONITOR_ITEM_id, "s", id,
|
":", SPA_MONITOR_ITEM_id, "s", id,
|
||||||
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
|
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
|
||||||
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_AVAILABLE,
|
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_Available,
|
||||||
":", SPA_MONITOR_ITEM_name, "s", name,
|
":", SPA_MONITOR_ITEM_name, "s", name,
|
||||||
":", SPA_MONITOR_ITEM_class, "s", klass,
|
":", SPA_MONITOR_ITEM_class, "s", klass,
|
||||||
":", SPA_MONITOR_ITEM_factory, "p", SPA_TYPE_INTERFACE_HandleFactory, factory,
|
":", SPA_MONITOR_ITEM_factory, "p", SPA_TYPE_INTERFACE_HandleFactory, factory,
|
||||||
|
|
|
||||||
|
|
@ -135,8 +135,8 @@ spa_alsa_enum_format(struct state *state, uint32_t *index,
|
||||||
|
|
||||||
spa_pod_builder_push_object(&b, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
spa_pod_builder_push_object(&b, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
||||||
spa_pod_builder_add(&b,
|
spa_pod_builder_add(&b,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw, 0);
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw, 0);
|
||||||
|
|
||||||
snd_pcm_format_mask_alloca(&fmask);
|
snd_pcm_format_mask_alloca(&fmask);
|
||||||
snd_pcm_hw_params_get_format_mask(params, fmask);
|
snd_pcm_hw_params_get_format_mask(params, fmask);
|
||||||
|
|
|
||||||
|
|
@ -309,8 +309,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
if (other->have_format) {
|
if (other->have_format) {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "i", other->format.info.raw.rate,
|
":", SPA_FORMAT_AUDIO_rate, "i", other->format.info.raw.rate,
|
||||||
|
|
@ -319,8 +319,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
} else {
|
} else {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "iru", DEFAULT_RATE,
|
":", SPA_FORMAT_AUDIO_rate, "iru", DEFAULT_RATE,
|
||||||
|
|
@ -703,7 +703,7 @@ static int process_control(struct impl *this, struct port *port, struct spa_pod_
|
||||||
|
|
||||||
SPA_POD_SEQUENCE_FOREACH(sequence, c) {
|
SPA_POD_SEQUENCE_FOREACH(sequence, c) {
|
||||||
switch (c->type) {
|
switch (c->type) {
|
||||||
case SPA_CONTROL_properties:
|
case SPA_CONTROL_Properties:
|
||||||
{
|
{
|
||||||
struct props *p = &this->props;
|
struct props *p = &this->props;
|
||||||
float volume = p->volume;
|
float volume = p->volume;
|
||||||
|
|
|
||||||
|
|
@ -422,8 +422,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
if (other->info.raw.channels > 0) {
|
if (other->info.raw.channels > 0) {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", other->info.raw.format,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", other->info.raw.format,
|
||||||
SPA_POD_PROP_ENUM(3, other->info.raw.format,
|
SPA_POD_PROP_ENUM(3, other->info.raw.format,
|
||||||
SPA_AUDIO_FORMAT_F32,
|
SPA_AUDIO_FORMAT_F32,
|
||||||
|
|
@ -436,8 +436,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
} else {
|
} else {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_POD_PROP_ENUM(11, SPA_AUDIO_FORMAT_U8,
|
SPA_POD_PROP_ENUM(11, SPA_AUDIO_FORMAT_U8,
|
||||||
SPA_AUDIO_FORMAT_S16,
|
SPA_AUDIO_FORMAT_S16,
|
||||||
|
|
|
||||||
|
|
@ -320,8 +320,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
if (direction == SPA_DIRECTION_OUTPUT) {
|
if (direction == SPA_DIRECTION_OUTPUT) {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_F32,
|
||||||
SPA_POD_PROP_ENUM(11,
|
SPA_POD_PROP_ENUM(11,
|
||||||
SPA_AUDIO_FORMAT_F32,
|
SPA_AUDIO_FORMAT_F32,
|
||||||
|
|
@ -345,8 +345,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
else {
|
else {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, rspec, rate,
|
":", SPA_FORMAT_AUDIO_rate, rspec, rate,
|
||||||
|
|
|
||||||
|
|
@ -283,8 +283,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
if (other->have_format) {
|
if (other->have_format) {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "iru", other->format.info.raw.rate,
|
":", SPA_FORMAT_AUDIO_rate, "iru", other->format.info.raw.rate,
|
||||||
|
|
@ -293,8 +293,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
} else {
|
} else {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "iru", DEFAULT_RATE,
|
":", SPA_FORMAT_AUDIO_rate, "iru", DEFAULT_RATE,
|
||||||
|
|
|
||||||
|
|
@ -320,8 +320,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
if (direction == SPA_DIRECTION_INPUT) {
|
if (direction == SPA_DIRECTION_INPUT) {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_F32,
|
||||||
SPA_POD_PROP_ENUM(11,
|
SPA_POD_PROP_ENUM(11,
|
||||||
SPA_AUDIO_FORMAT_F32,
|
SPA_AUDIO_FORMAT_F32,
|
||||||
|
|
@ -345,8 +345,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
else {
|
else {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, rspec, rate,
|
":", SPA_FORMAT_AUDIO_rate, rspec, rate,
|
||||||
|
|
|
||||||
|
|
@ -328,16 +328,16 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
if (this->have_format) {
|
if (this->have_format) {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", this->format.info.raw.format,
|
":", SPA_FORMAT_AUDIO_format, "I", this->format.info.raw.format,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "i", this->format.info.raw.rate,
|
":", SPA_FORMAT_AUDIO_rate, "i", this->format.info.raw.rate,
|
||||||
":", SPA_FORMAT_AUDIO_channels, "i", this->format.info.raw.channels);
|
":", SPA_FORMAT_AUDIO_channels, "i", this->format.info.raw.channels);
|
||||||
} else {
|
} else {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_POD_PROP_ENUM(2, SPA_AUDIO_FORMAT_S16,
|
SPA_POD_PROP_ENUM(2, SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_AUDIO_FORMAT_F32),
|
SPA_AUDIO_FORMAT_F32),
|
||||||
|
|
|
||||||
|
|
@ -527,8 +527,8 @@ port_enum_formats(struct impl *this,
|
||||||
case 0:
|
case 0:
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_POD_PROP_ENUM(4, SPA_AUDIO_FORMAT_S16,
|
SPA_POD_PROP_ENUM(4, SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_AUDIO_FORMAT_S32,
|
SPA_AUDIO_FORMAT_S32,
|
||||||
|
|
@ -899,7 +899,7 @@ static int process_control(struct impl *this, struct spa_pod_sequence *sequence)
|
||||||
|
|
||||||
SPA_POD_SEQUENCE_FOREACH(sequence, c) {
|
SPA_POD_SEQUENCE_FOREACH(sequence, c) {
|
||||||
switch (c->type) {
|
switch (c->type) {
|
||||||
case SPA_CONTROL_properties:
|
case SPA_CONTROL_Properties:
|
||||||
{
|
{
|
||||||
struct props *p = &this->props;
|
struct props *p = &this->props;
|
||||||
spa_pod_object_parse(&c->value,
|
spa_pod_object_parse(&c->value,
|
||||||
|
|
|
||||||
|
|
@ -967,8 +967,8 @@ impl_node_port_enum_params(struct spa_node *node,
|
||||||
|
|
||||||
param = spa_pod_builder_object(&b,
|
param = spa_pod_builder_object(&b,
|
||||||
SPA_TYPE_OBJECT_Format, id,
|
SPA_TYPE_OBJECT_Format, id,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_S16,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_S16,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "i", rate,
|
":", SPA_FORMAT_AUDIO_rate, "i", rate,
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ static void fill_item(struct spa_bt_monitor *this, struct spa_bt_transport *tran
|
||||||
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
|
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
|
||||||
":", SPA_MONITOR_ITEM_id, "s", transport->path,
|
":", SPA_MONITOR_ITEM_id, "s", transport->path,
|
||||||
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
|
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
|
||||||
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_AVAILABLE,
|
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_Available,
|
||||||
":", SPA_MONITOR_ITEM_name, "s", transport->path,
|
":", SPA_MONITOR_ITEM_name, "s", transport->path,
|
||||||
":", SPA_MONITOR_ITEM_class, "s", "Adapter/Bluetooth",
|
":", SPA_MONITOR_ITEM_class, "s", "Adapter/Bluetooth",
|
||||||
":", SPA_MONITOR_ITEM_factory, "p", SPA_TYPE_INTERFACE_HandleFactory, &spa_a2dp_sink_factory,
|
":", SPA_MONITOR_ITEM_factory, "p", SPA_TYPE_INTERFACE_HandleFactory, &spa_a2dp_sink_factory,
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ static void fill_item(struct impl *this, struct item *item, struct udev_device *
|
||||||
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
|
"<", SPA_TYPE_OBJECT_MonitorItem, 0,
|
||||||
":", SPA_MONITOR_ITEM_id, "s", udev_device_get_syspath(item->udevice),
|
":", SPA_MONITOR_ITEM_id, "s", udev_device_get_syspath(item->udevice),
|
||||||
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
|
":", SPA_MONITOR_ITEM_flags, "I", SPA_MONITOR_ITEM_FLAG_NONE,
|
||||||
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_AVAILABLE,
|
":", SPA_MONITOR_ITEM_state, "I", SPA_MONITOR_ITEM_STATE_Available,
|
||||||
":", SPA_MONITOR_ITEM_name, "s", name,
|
":", SPA_MONITOR_ITEM_name, "s", name,
|
||||||
":", SPA_MONITOR_ITEM_class, "s", "Video/Source",
|
":", SPA_MONITOR_ITEM_class, "s", "Video/Source",
|
||||||
":", SPA_MONITOR_ITEM_factory, "p", SPA_TYPE_INTERFACE_HandleFactory, &spa_v4l2_source_factory,
|
":", SPA_MONITOR_ITEM_factory, "p", SPA_TYPE_INTERFACE_HandleFactory, &spa_v4l2_source_factory,
|
||||||
|
|
|
||||||
|
|
@ -395,8 +395,8 @@ static int port_get_format(struct spa_node *node,
|
||||||
spa_pod_builder_push_object(builder, SPA_TYPE_OBJECT_Format, SPA_PARAM_Format);
|
spa_pod_builder_push_object(builder, SPA_TYPE_OBJECT_Format, SPA_PARAM_Format);
|
||||||
|
|
||||||
spa_pod_builder_add(builder,
|
spa_pod_builder_add(builder,
|
||||||
"I", port->current_format.media_type,
|
":", SPA_FORMAT_mediaType, "I", port->current_format.media_type,
|
||||||
"I", port->current_format.media_subtype, 0);
|
":", SPA_FORMAT_mediaSubtype, "I", port->current_format.media_subtype, 0);
|
||||||
|
|
||||||
switch (port->current_format.media_subtype) {
|
switch (port->current_format.media_subtype) {
|
||||||
case SPA_MEDIA_SUBTYPE_raw:
|
case SPA_MEDIA_SUBTYPE_raw:
|
||||||
|
|
|
||||||
|
|
@ -676,8 +676,8 @@ spa_v4l2_enum_format(struct impl *this,
|
||||||
|
|
||||||
spa_pod_builder_push_object(builder, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
spa_pod_builder_push_object(builder, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
||||||
spa_pod_builder_add(builder,
|
spa_pod_builder_add(builder,
|
||||||
"I", info->media_type,
|
":", SPA_FORMAT_mediaType, "I", info->media_type,
|
||||||
"I", info->media_subtype, 0);
|
":", SPA_FORMAT_mediaSubtype, "I", info->media_subtype, 0);
|
||||||
|
|
||||||
if (info->media_subtype == SPA_MEDIA_SUBTYPE_raw) {
|
if (info->media_subtype == SPA_MEDIA_SUBTYPE_raw) {
|
||||||
spa_pod_builder_add(builder,
|
spa_pod_builder_add(builder,
|
||||||
|
|
|
||||||
|
|
@ -464,8 +464,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
case 0:
|
case 0:
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_video,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_VIDEO_format, "Ieu", SPA_VIDEO_FORMAT_RGB,
|
":", SPA_FORMAT_VIDEO_format, "Ieu", SPA_VIDEO_FORMAT_RGB,
|
||||||
SPA_POD_PROP_ENUM(2, SPA_VIDEO_FORMAT_RGB,
|
SPA_POD_PROP_ENUM(2, SPA_VIDEO_FORMAT_RGB,
|
||||||
SPA_VIDEO_FORMAT_UYVY),
|
SPA_VIDEO_FORMAT_UYVY),
|
||||||
|
|
|
||||||
|
|
@ -328,8 +328,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
case 0:
|
case 0:
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_POD_PROP_ENUM(2, SPA_AUDIO_FORMAT_S16,
|
SPA_POD_PROP_ENUM(2, SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_AUDIO_FORMAT_S32),
|
SPA_AUDIO_FORMAT_S32),
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ static void update_props(struct data *data)
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
pod = spa_pod_builder_sequence(&b, 0,
|
pod = spa_pod_builder_sequence(&b, 0,
|
||||||
".", 0, SPA_CONTROL_properties,
|
".", 0, SPA_CONTROL_Properties,
|
||||||
SPA_POD_OBJECT(SPA_TYPE_OBJECT_Props, 0,
|
SPA_POD_OBJECT(SPA_TYPE_OBJECT_Props, 0,
|
||||||
":", SPA_PROP_frequency, "d", ((sin(data->freq_accum) + 1.0) * 200.0) + 440.0,
|
":", SPA_PROP_frequency, "d", ((sin(data->freq_accum) + 1.0) * 200.0) + 440.0,
|
||||||
":", SPA_PROP_volume, "d", (sin(data->volume_accum) / 2.0) + 0.5));
|
":", SPA_PROP_volume, "d", (sin(data->volume_accum) / 2.0) + 0.5));
|
||||||
|
|
|
||||||
|
|
@ -360,8 +360,8 @@ static int negotiate_formats(struct data *data)
|
||||||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||||
format = spa_pod_builder_object(&b,
|
format = spa_pod_builder_object(&b,
|
||||||
SPA_TYPE_OBJECT_Format, 0,
|
SPA_TYPE_OBJECT_Format, 0,
|
||||||
"I", SPA_MEDIA_TYPE_binary,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_binary,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw);
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw);
|
||||||
|
|
||||||
if ((res = spa_node_port_set_param(data->sink,
|
if ((res = spa_node_port_set_param(data->sink,
|
||||||
SPA_DIRECTION_INPUT, 0,
|
SPA_DIRECTION_INPUT, 0,
|
||||||
|
|
|
||||||
|
|
@ -300,8 +300,8 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
fmt = spa_pod_builder_object(&b,
|
fmt = spa_pod_builder_object(&b,
|
||||||
SPA_TYPE_OBJECT_Format, 0,
|
SPA_TYPE_OBJECT_Format, 0,
|
||||||
"I", SPA_MEDIA_TYPE_video,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_VIDEO_format, "Ieu", SPA_VIDEO_FORMAT_I420,
|
":", SPA_FORMAT_VIDEO_format, "Ieu", SPA_VIDEO_FORMAT_I420,
|
||||||
2, SPA_VIDEO_FORMAT_I420,
|
2, SPA_VIDEO_FORMAT_I420,
|
||||||
SPA_VIDEO_FORMAT_YUY2,
|
SPA_VIDEO_FORMAT_YUY2,
|
||||||
|
|
@ -329,8 +329,8 @@ int main(int argc, char *argv[])
|
||||||
*/
|
*/
|
||||||
fmt = spa_pod_builder_add(&b,
|
fmt = spa_pod_builder_add(&b,
|
||||||
"<", SPA_TYPE_OBJECT_Format, 0,
|
"<", SPA_TYPE_OBJECT_Format, 0,
|
||||||
"I", SPA_MEDIA_TYPE_video,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_VIDEO_format, "Ieu", SPA_VIDEO_FORMAT_I420,
|
":", SPA_FORMAT_VIDEO_format, "Ieu", SPA_VIDEO_FORMAT_I420,
|
||||||
2, SPA_VIDEO_FORMAT_I420,
|
2, SPA_VIDEO_FORMAT_I420,
|
||||||
SPA_VIDEO_FORMAT_YUY2,
|
SPA_VIDEO_FORMAT_YUY2,
|
||||||
|
|
@ -348,9 +348,9 @@ int main(int argc, char *argv[])
|
||||||
do_static_struct();
|
do_static_struct();
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
printf("media type is enum %d\n", spa_type_is_a(SPA_TYPE__MediaType, SPA_TYPE_ENUM_BASE));
|
printf("media type is enum %d\n", spa_type_is_a(SPA_TYPE__mediaType, SPA_TYPE_ENUM_BASE));
|
||||||
printf("media sybtype is enum %d\n",
|
printf("media sybtype is enum %d\n",
|
||||||
spa_type_is_a(SPA_TYPE__MediaSubtype, SPA_TYPE_ENUM_BASE));
|
spa_type_is_a(SPA_TYPE__mediaSubtype, SPA_TYPE_ENUM_BASE));
|
||||||
printf("format is enum %d\n", spa_type_is_a(SPA_TYPE__Format, SPA_TYPE_ENUM_BASE));
|
printf("format is enum %d\n", spa_type_is_a(SPA_TYPE__Format, SPA_TYPE_ENUM_BASE));
|
||||||
printf("format is pod %d\n", spa_type_is_a(SPA_TYPE__Format, SPA_TYPE_POD_BASE));
|
printf("format is pod %d\n", spa_type_is_a(SPA_TYPE__Format, SPA_TYPE_POD_BASE));
|
||||||
printf("format is object %d\n", spa_type_is_a(SPA_TYPE__Format, SPA_TYPE_POD_OBJECT_BASE));
|
printf("format is object %d\n", spa_type_is_a(SPA_TYPE__Format, SPA_TYPE_POD_OBJECT_BASE));
|
||||||
|
|
|
||||||
|
|
@ -182,8 +182,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
|
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
":", SPA_FORMAT_AUDIO_format, "Ieu", SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_POD_PROP_ENUM(2, SPA_AUDIO_FORMAT_S16,
|
SPA_POD_PROP_ENUM(2, SPA_AUDIO_FORMAT_S16,
|
||||||
SPA_AUDIO_FORMAT_F32),
|
SPA_AUDIO_FORMAT_F32),
|
||||||
|
|
|
||||||
|
|
@ -226,8 +226,13 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
SDL_GetRendererInfo(d->renderer, &info);
|
SDL_GetRendererInfo(d->renderer, &info);
|
||||||
|
|
||||||
spa_pod_builder_push_object(builder, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
spa_pod_builder_push_object(builder, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
||||||
|
spa_pod_builder_push_prop(builder, SPA_FORMAT_mediaType, 0);
|
||||||
spa_pod_builder_enum(builder, SPA_MEDIA_TYPE_video);
|
spa_pod_builder_enum(builder, SPA_MEDIA_TYPE_video);
|
||||||
|
spa_pod_builder_pop(builder);
|
||||||
|
|
||||||
|
spa_pod_builder_push_prop(builder, SPA_FORMAT_mediaSubtype, 0);
|
||||||
spa_pod_builder_enum(builder, SPA_MEDIA_SUBTYPE_raw);
|
spa_pod_builder_enum(builder, SPA_MEDIA_SUBTYPE_raw);
|
||||||
|
spa_pod_builder_pop(builder);
|
||||||
|
|
||||||
spa_pod_builder_push_prop(builder, SPA_FORMAT_VIDEO_format,
|
spa_pod_builder_push_prop(builder, SPA_FORMAT_VIDEO_format,
|
||||||
SPA_POD_PROP_FLAG_UNSET |
|
SPA_POD_PROP_FLAG_UNSET |
|
||||||
|
|
|
||||||
|
|
@ -98,8 +98,12 @@ static struct spa_pod *sdl_build_formats(SDL_RendererInfo *info, struct spa_pod_
|
||||||
int i, c;
|
int i, c;
|
||||||
|
|
||||||
spa_pod_builder_push_object(b, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
spa_pod_builder_push_object(b, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat);
|
||||||
|
spa_pod_builder_push_prop(b, SPA_FORMAT_mediaType, 0);
|
||||||
spa_pod_builder_enum(b, SPA_MEDIA_TYPE_video);
|
spa_pod_builder_enum(b, SPA_MEDIA_TYPE_video);
|
||||||
|
spa_pod_builder_pop(b);
|
||||||
|
spa_pod_builder_push_prop(b, SPA_FORMAT_mediaSubtype, 0);
|
||||||
spa_pod_builder_enum(b, SPA_MEDIA_SUBTYPE_raw);
|
spa_pod_builder_enum(b, SPA_MEDIA_SUBTYPE_raw);
|
||||||
|
spa_pod_builder_pop(b);
|
||||||
|
|
||||||
spa_pod_builder_push_prop(b, SPA_FORMAT_VIDEO_format,
|
spa_pod_builder_push_prop(b, SPA_FORMAT_VIDEO_format,
|
||||||
SPA_POD_PROP_FLAG_UNSET |
|
SPA_POD_PROP_FLAG_UNSET |
|
||||||
|
|
|
||||||
|
|
@ -224,8 +224,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo
|
||||||
|
|
||||||
params[0] = spa_pod_builder_object(&b,
|
params[0] = spa_pod_builder_object(&b,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_video,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_VIDEO_format, "I", SPA_VIDEO_FORMAT_RGB,
|
":", SPA_FORMAT_VIDEO_format, "I", SPA_VIDEO_FORMAT_RGB,
|
||||||
":", SPA_FORMAT_VIDEO_size, "Rru", &SPA_RECTANGLE(320, 240),
|
":", SPA_FORMAT_VIDEO_size, "Rru", &SPA_RECTANGLE(320, 240),
|
||||||
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1, 1),
|
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1, 1),
|
||||||
|
|
|
||||||
|
|
@ -535,8 +535,14 @@ convert_1 (ConvertData *d)
|
||||||
d->b.write = write_pod;
|
d->b.write = write_pod;
|
||||||
|
|
||||||
spa_pod_builder_push_object (&d->b, SPA_TYPE_OBJECT_Format, d->id);
|
spa_pod_builder_push_object (&d->b, SPA_TYPE_OBJECT_Format, d->id);
|
||||||
|
|
||||||
|
spa_pod_builder_push_prop (&d->b, SPA_FORMAT_mediaType, 0);
|
||||||
spa_pod_builder_enum(&d->b, d->type->media_type);
|
spa_pod_builder_enum(&d->b, d->type->media_type);
|
||||||
|
spa_pod_builder_pop (&d->b);
|
||||||
|
|
||||||
|
spa_pod_builder_push_prop (&d->b, SPA_FORMAT_mediaSubtype, 0);
|
||||||
spa_pod_builder_enum(&d->b, d->type->media_subtype);
|
spa_pod_builder_enum(&d->b, d->type->media_subtype);
|
||||||
|
spa_pod_builder_pop (&d->b);
|
||||||
|
|
||||||
if (d->type->media_type == SPA_MEDIA_TYPE_video)
|
if (d->type->media_type == SPA_MEDIA_TYPE_video)
|
||||||
handle_video_fields (d);
|
handle_video_fields (d);
|
||||||
|
|
|
||||||
|
|
@ -329,8 +329,8 @@ static int port_enum_formats(struct spa_node *node,
|
||||||
} else {
|
} else {
|
||||||
*param = spa_pod_builder_object(builder,
|
*param = spa_pod_builder_object(builder,
|
||||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||||
"I", SPA_MEDIA_TYPE_audio,
|
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
|
||||||
"I", SPA_MEDIA_SUBTYPE_raw,
|
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
|
||||||
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
":", SPA_FORMAT_AUDIO_format, "I", SPA_AUDIO_FORMAT_F32,
|
||||||
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
":", SPA_FORMAT_AUDIO_layout, "I", SPA_AUDIO_LAYOUT_NON_INTERLEAVED,
|
||||||
":", SPA_FORMAT_AUDIO_rate, "iru", 44100,
|
":", SPA_FORMAT_AUDIO_rate, "iru", 44100,
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@ static struct monitor_item *add_item(struct pw_spa_monitor *this,
|
||||||
}
|
}
|
||||||
|
|
||||||
flags = PW_SPA_NODE_FLAG_ACTIVATE;
|
flags = PW_SPA_NODE_FLAG_ACTIVATE;
|
||||||
flags |= (state == SPA_MONITOR_ITEM_STATE_AVAILABLE) ? 0 : PW_SPA_NODE_FLAG_DISABLE;
|
flags |= (state == SPA_MONITOR_ITEM_STATE_Available) ? 0 : PW_SPA_NODE_FLAG_DISABLE;
|
||||||
|
|
||||||
mitem = calloc(1, sizeof(struct monitor_item));
|
mitem = calloc(1, sizeof(struct monitor_item));
|
||||||
mitem->id = strdup(id);
|
mitem->id = strdup(id);
|
||||||
|
|
@ -197,13 +197,15 @@ static void change_item(struct pw_spa_monitor *this, struct spa_pod *item, uint6
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case SPA_MONITOR_ITEM_STATE_AVAILABLE:
|
case SPA_MONITOR_ITEM_STATE_Available:
|
||||||
pw_node_set_enabled(mitem->node, true);
|
pw_node_set_enabled(mitem->node, true);
|
||||||
break;
|
break;
|
||||||
case SPA_MONITOR_ITEM_STATE_DISABLED:
|
case SPA_MONITOR_ITEM_STATE_Disabled:
|
||||||
case SPA_MONITOR_ITEM_STATE_UNAVAILABLE:
|
case SPA_MONITOR_ITEM_STATE_Unavailable:
|
||||||
pw_node_set_enabled(mitem->node, false);
|
pw_node_set_enabled(mitem->node, false);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -218,9 +218,9 @@ static void print_node(struct proxy_data *data)
|
||||||
printf("%c\tparams:\n", MARK_CHANGE(5));
|
printf("%c\tparams:\n", MARK_CHANGE(5));
|
||||||
for (i = 0; i < data->n_params; i++) {
|
for (i = 0; i < data->n_params; i++) {
|
||||||
if (spa_pod_is_object_type(data->params[i], SPA_TYPE_OBJECT_Format))
|
if (spa_pod_is_object_type(data->params[i], SPA_TYPE_OBJECT_Format))
|
||||||
spa_debug_format(2, NULL, data->params[i]);
|
spa_debug_format(10, NULL, data->params[i]);
|
||||||
else
|
else
|
||||||
spa_debug_pod(2, spa_debug_types, data->params[i]);
|
spa_debug_pod(10, spa_debug_types, data->params[i]);
|
||||||
}
|
}
|
||||||
printf("%c\tinput ports: %u/%u\n", MARK_CHANGE(1),
|
printf("%c\tinput ports: %u/%u\n", MARK_CHANGE(1),
|
||||||
info->n_input_ports, info->max_input_ports);
|
info->n_input_ports, info->max_input_ports);
|
||||||
|
|
@ -293,9 +293,9 @@ static void print_port(struct proxy_data *data)
|
||||||
printf("%c\tparams:\n", MARK_CHANGE(2));
|
printf("%c\tparams:\n", MARK_CHANGE(2));
|
||||||
for (i = 0; i < data->n_params; i++) {
|
for (i = 0; i < data->n_params; i++) {
|
||||||
if (spa_pod_is_object_type(data->params[i], SPA_TYPE_OBJECT_Format))
|
if (spa_pod_is_object_type(data->params[i], SPA_TYPE_OBJECT_Format))
|
||||||
spa_debug_format(2, NULL, data->params[i]);
|
spa_debug_format(12, NULL, data->params[i]);
|
||||||
else
|
else
|
||||||
spa_debug_pod(2, spa_debug_types, data->params[i]);
|
spa_debug_pod(12, spa_debug_types, data->params[i]);
|
||||||
}
|
}
|
||||||
print_properties(info->props, MARK_CHANGE(1));
|
print_properties(info->props, MARK_CHANGE(1));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue