1 /* Simple Plugin API 2 * 3 * Copyright © 2018 Wim Taymans 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the next 13 * paragraph) shall be included in all copies or substantial portions of the 14 * Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22 * DEALINGS IN THE SOFTWARE. 23 */ 24 25 #ifndef SPA_PARAM_FORMAT_H 26 #define SPA_PARAM_FORMAT_H 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 #include <spa/param/param.h> 33 34 /** media type for SPA_TYPE_OBJECT_Format */ 35 enum spa_media_type { 36 SPA_MEDIA_TYPE_unknown, 37 SPA_MEDIA_TYPE_audio, 38 SPA_MEDIA_TYPE_video, 39 SPA_MEDIA_TYPE_image, 40 SPA_MEDIA_TYPE_binary, 41 SPA_MEDIA_TYPE_stream, 42 SPA_MEDIA_TYPE_application, 43 }; 44 45 /** media subtype for SPA_TYPE_OBJECT_Format */ 46 enum spa_media_subtype { 47 SPA_MEDIA_SUBTYPE_unknown, 48 SPA_MEDIA_SUBTYPE_raw, 49 SPA_MEDIA_SUBTYPE_dsp, 50 51 SPA_MEDIA_SUBTYPE_START_Audio = 0x10000, 52 SPA_MEDIA_SUBTYPE_mp3, 53 SPA_MEDIA_SUBTYPE_aac, 54 SPA_MEDIA_SUBTYPE_vorbis, 55 SPA_MEDIA_SUBTYPE_wma, 56 SPA_MEDIA_SUBTYPE_ra, 57 SPA_MEDIA_SUBTYPE_sbc, 58 SPA_MEDIA_SUBTYPE_adpcm, 59 SPA_MEDIA_SUBTYPE_g723, 60 SPA_MEDIA_SUBTYPE_g726, 61 SPA_MEDIA_SUBTYPE_g729, 62 SPA_MEDIA_SUBTYPE_amr, 63 SPA_MEDIA_SUBTYPE_gsm, 64 65 SPA_MEDIA_SUBTYPE_START_Video = 0x20000, 66 SPA_MEDIA_SUBTYPE_h264, 67 SPA_MEDIA_SUBTYPE_mjpg, 68 SPA_MEDIA_SUBTYPE_dv, 69 SPA_MEDIA_SUBTYPE_mpegts, 70 SPA_MEDIA_SUBTYPE_h263, 71 SPA_MEDIA_SUBTYPE_mpeg1, 72 SPA_MEDIA_SUBTYPE_mpeg2, 73 SPA_MEDIA_SUBTYPE_mpeg4, 74 SPA_MEDIA_SUBTYPE_xvid, 75 SPA_MEDIA_SUBTYPE_vc1, 76 SPA_MEDIA_SUBTYPE_vp8, 77 SPA_MEDIA_SUBTYPE_vp9, 78 SPA_MEDIA_SUBTYPE_bayer, 79 80 SPA_MEDIA_SUBTYPE_START_Image = 0x30000, 81 SPA_MEDIA_SUBTYPE_jpeg, 82 83 SPA_MEDIA_SUBTYPE_START_Binary = 0x40000, 84 85 SPA_MEDIA_SUBTYPE_START_Stream = 0x50000, 86 SPA_MEDIA_SUBTYPE_midi, 87 88 SPA_MEDIA_SUBTYPE_START_Application = 0x60000, 89 SPA_MEDIA_SUBTYPE_control, /**< control stream, data contains 90 * spa_pod_sequence with control info. */ 91 }; 92 93 /** properties for audio SPA_TYPE_OBJECT_Format */ 94 enum spa_format { 95 SPA_FORMAT_START, 96 97 SPA_FORMAT_mediaType, /**< media type (Id enum spa_media_type) */ 98 SPA_FORMAT_mediaSubtype, /**< media subtype (Id enum spa_media_subtype) */ 99 100 /* Audio format keys */ 101 SPA_FORMAT_START_Audio = 0x10000, 102 SPA_FORMAT_AUDIO_format, /**< audio format, (Id enum spa_audio_format) */ 103 SPA_FORMAT_AUDIO_flags, /**< optional flags (Int) */ 104 SPA_FORMAT_AUDIO_rate, /**< sample rate (Int) */ 105 SPA_FORMAT_AUDIO_channels, /**< number of audio channels (Int) */ 106 SPA_FORMAT_AUDIO_position, /**< channel positions (Id enum spa_audio_position) */ 107 108 /* Video Format keys */ 109 SPA_FORMAT_START_Video = 0x20000, 110 SPA_FORMAT_VIDEO_format, /**< video format (Id enum spa_video_format) */ 111 SPA_FORMAT_VIDEO_modifier, /**< format modifier (Long) */ 112 SPA_FORMAT_VIDEO_size, /**< size (Rectangle) */ 113 SPA_FORMAT_VIDEO_framerate, /**< frame rate (Fraction) */ 114 SPA_FORMAT_VIDEO_maxFramerate, /**< maximum frame rate (Fraction) */ 115 SPA_FORMAT_VIDEO_views, /**< number of views (Int) */ 116 SPA_FORMAT_VIDEO_interlaceMode, /**< (Id enum spa_video_interlace_mode) */ 117 SPA_FORMAT_VIDEO_pixelAspectRatio, /**< (Rectangle) */ 118 SPA_FORMAT_VIDEO_multiviewMode, /**< (Id enum spa_video_multiview_mode) */ 119 SPA_FORMAT_VIDEO_multiviewFlags, /**< (Id enum spa_video_multiview_flags) */ 120 SPA_FORMAT_VIDEO_chromaSite, /**< /Id enum spa_video_chroma_site) */ 121 SPA_FORMAT_VIDEO_colorRange, /**< /Id enum spa_video_color_range) */ 122 SPA_FORMAT_VIDEO_colorMatrix, /**< /Id enum spa_video_color_matrix) */ 123 SPA_FORMAT_VIDEO_transferFunction, /**< /Id enum spa_video_transfer_function) */ 124 SPA_FORMAT_VIDEO_colorPrimaries, /**< /Id enum spa_video_color_primaries) */ 125 SPA_FORMAT_VIDEO_profile, /**< (Int) */ 126 SPA_FORMAT_VIDEO_level, /**< (Int) */ 127 SPA_FORMAT_VIDEO_H264_streamFormat, /**< (Id enum spa_h264_stream_format) */ 128 SPA_FORMAT_VIDEO_H264_alignment, /**< (Id enum spa_h264_alignment) */ 129 130 /* Image Format keys */ 131 SPA_FORMAT_START_Image = 0x30000, 132 /* Binary Format keys */ 133 SPA_FORMAT_START_Binary = 0x40000, 134 /* Stream Format keys */ 135 SPA_FORMAT_START_Stream = 0x50000, 136 /* Application Format keys */ 137 SPA_FORMAT_START_Application = 0x60000, 138 }; 139 140 #define SPA_KEY_FORMAT_DSP "format.dsp" /**< a predefined DSP format, 141 * Ex. "32 bit float mono audio" */ 142 143 #ifdef __cplusplus 144 } /* extern "C" */ 145 #endif 146 147 #endif /* SPA_PARAM_FORMAT_H */ 148