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:
Wim Taymans 2018-08-29 18:08:52 +02:00
parent 514528f2c7
commit ff6a244d8f
45 changed files with 151 additions and 124 deletions

View file

@ -47,8 +47,8 @@ spa_format_audio_raw_build(struct spa_pod_builder *builder, uint32_t id, struct
{
return spa_pod_builder_object(builder,
SPA_TYPE_OBJECT_Format, id,
"I", SPA_MEDIA_TYPE_audio,
"I", SPA_MEDIA_SUBTYPE_raw,
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_audio,
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
":", SPA_FORMAT_AUDIO_format, "I", info->format,
":", SPA_FORMAT_AUDIO_layout, "I", info->layout,
":", SPA_FORMAT_AUDIO_rate, "i", info->rate,

View file

@ -122,22 +122,21 @@ enum spa_audio_format {
};
/** Extra audio flags */
enum spa_audio_flags {
SPA_AUDIO_FLAG_NONE = 0, /*< no valid flag */
SPA_AUDIO_FLAG_UNPOSITIONED = (1 << 0), /*< the position array explicitly
#define SPA_AUDIO_FLAG_NONE (0) /*< no valid flag */
#define SPA_AUDIO_FLAG_UNPOSITIONED (1 << 0) /*< the position array explicitly
* contains unpositioned channels. */
};
/** Layout of the audio samples for the different channels. */
enum spa_audio_layout {
SPA_AUDIO_LAYOUT_INTERLEAVED = 0, /*< interleaved audio */
SPA_AUDIO_LAYOUT_NON_INTERLEAVED /*< non-interleaved audio */
SPA_AUDIO_LAYOUT_INVALID,
SPA_AUDIO_LAYOUT_INTERLEAVED, /*< interleaved audio */
SPA_AUDIO_LAYOUT_NON_INTERLEAVED, /*< non-interleaved audio */
};
/** Audio information description */
struct spa_audio_info_raw {
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 */
uint32_t rate; /*< sample rate */
uint32_t channels; /*< number of channels */

View file

@ -78,8 +78,9 @@ static const struct spa_type_info spa_type_audio_flags[] = {
#define SPA_TYPE_AUDIO_ENUM_BASE SPA_TYPE__AudioLayout ":"
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_NON_INTERLEAVED, SPA_TYPE_AUDIO_ENUM_BASE "non-interleaved", SPA_TYPE_Int, },
{ SPA_AUDIO_LAYOUT_INVALID, SPA_TYPE_AUDIO_ENUM_BASE "Invalid", 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, },
};

View file

@ -32,8 +32,8 @@ static inline int
spa_format_parse(const struct spa_pod *format, uint32_t *media_type, uint32_t *media_subtype)
{
return spa_pod_object_parse(format,
"I", media_type,
"I", media_subtype, NULL);
":", SPA_FORMAT_mediaType, "I", media_type,
":", SPA_FORMAT_mediaSubtype, "I", media_subtype, NULL);
}
#ifdef __cplusplus

View file

@ -28,7 +28,7 @@ extern "C" {
/** media type for SPA_TYPE_OBJECT_Format */
enum spa_media_type {
SPA_MEDIA_TYPE_START,
SPA_MEDIA_TYPE_unknown,
SPA_MEDIA_TYPE_audio,
SPA_MEDIA_TYPE_video,
SPA_MEDIA_TYPE_image,
@ -38,7 +38,7 @@ enum spa_media_type {
/** media subtype for SPA_TYPE_OBJECT_Format */
enum spa_media_subtype {
SPA_MEDIA_SUBTYPE_START_Generic,
SPA_MEDIA_SUBTYPE_unknown,
SPA_MEDIA_SUBTYPE_raw,
SPA_MEDIA_SUBTYPE_START_Audio = 0x10000,
@ -83,11 +83,11 @@ enum spa_media_subtype {
enum spa_format {
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_MediaSubtype, /**< second int in object, one of enum spa_media_subtype */
SPA_FORMAT_mediaType, /**< one of enum spa_media_type */
SPA_FORMAT_mediaSubtype, /**< one of enum spa_media_subtype */
/* Audio format keys */
SPA_FORMAT_START_AUDIO,
SPA_FORMAT_START_Audio,
SPA_FORMAT_AUDIO_format,
SPA_FORMAT_AUDIO_flags,
SPA_FORMAT_AUDIO_layout,
@ -96,7 +96,7 @@ enum spa_format {
SPA_FORMAT_AUDIO_channelMask,
/* Video Format keys */
SPA_FORMAT_START_VIDEO = 0x10000,
SPA_FORMAT_START_Video = 0x10000,
SPA_FORMAT_VIDEO_format,
SPA_FORMAT_VIDEO_size,
SPA_FORMAT_VIDEO_framerate,
@ -117,11 +117,11 @@ enum spa_format {
SPA_FORMAT_VIDEO_alignment,
/* Image Format keys */
SPA_FORMAT_START_IMAGE = 0x20000,
SPA_FORMAT_START_Image = 0x20000,
/* Binary Format keys */
SPA_FORMAT_START_BINARY = 0x30000,
SPA_FORMAT_START_Binary = 0x30000,
/* Stream Format keys */
SPA_FORMAT_START_STREAM = 0x40000,
SPA_FORMAT_START_Stream = 0x40000,
};
#ifdef __cplusplus

View file

@ -28,7 +28,7 @@ extern "C" {
/** different parameter types that can be queried */
enum spa_param_type {
SPA_PARAM_START, /**< no value */
SPA_PARAM_Invalid, /**< invalid */
SPA_PARAM_List, /**< available params */
SPA_PARAM_PropInfo, /**< property information */
SPA_PARAM_Props, /**< properties */

View file

@ -34,7 +34,7 @@ extern "C" {
#define SPA_TYPE_PARAM_ID_BASE SPA_TYPE__ParamId ":"
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_PropInfo, SPA_TYPE_PARAM_ID_BASE "PropInfo", 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[] = {
{ 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, },
};
@ -141,11 +141,12 @@ static const struct spa_type_info spa_type_param_io[] = {
#include <spa/param/video/type-info.h>
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_video, SPA_TYPE_MEDIA_TYPE_BASE "video", SPA_TYPE_Int, },
{ SPA_MEDIA_TYPE_image, SPA_TYPE_MEDIA_TYPE_BASE "image", 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, },
{ SPA_MEDIA_TYPE_unknown, SPA_TYPE_MEDIA_TYPE_BASE "unknown", SPA_TYPE_Int, },
{ SPA_MEDIA_TYPE_audio, SPA_TYPE_MEDIA_TYPE_BASE "audio", SPA_TYPE_Int, },
{ SPA_MEDIA_TYPE_video, SPA_TYPE_MEDIA_TYPE_BASE "video", SPA_TYPE_Int, },
{ SPA_MEDIA_TYPE_image, SPA_TYPE_MEDIA_TYPE_BASE "image", 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, },
};
@ -153,6 +154,7 @@ static const struct spa_type_info spa_type_media_type[] = {
#define SPA_TYPE_MEDIA_SUBTYPE_BASE SPA_TYPE__MediaSubtype ":"
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 */
{ SPA_MEDIA_SUBTYPE_raw, SPA_TYPE_MEDIA_SUBTYPE_BASE "raw", SPA_TYPE_Int, },
/* 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[] = {
{ 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_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_FORMAT_AUDIO_format, SPA_TYPE_FORMAT_AUDIO_BASE "format", SPA_TYPE_Enum,

View file

@ -56,8 +56,8 @@ spa_format_video_raw_build(struct spa_pod_builder *builder, uint32_t id,
{
return spa_pod_builder_object(builder,
SPA_TYPE_OBJECT_Format, id,
"I", SPA_MEDIA_TYPE_video,
"I", SPA_MEDIA_SUBTYPE_raw,
":", SPA_FORMAT_mediaType, "I", SPA_MEDIA_TYPE_video,
":", SPA_FORMAT_mediaSubtype, "I", SPA_MEDIA_SUBTYPE_raw,
":", SPA_FORMAT_VIDEO_format, "I", &info->format,
":", SPA_FORMAT_VIDEO_size, "R", &info->size,
":", SPA_FORMAT_VIDEO_framerate, "F", &info->framerate);