/** *Describesessentialbufferheadermetadatasuchasflagsand *timestamps.
*/ struct spa_meta_header { #define SPA_META_HEADER_FLAG_DISCONT (1 << 0) /**< data is not continuous with previous buffer */ #define SPA_META_HEADER_FLAG_CORRUPTED (1 << 1) /**< data might be corrupted */ #define SPA_META_HEADER_FLAG_MARKER (1 << 2) /**< media specific marker */ #define SPA_META_HEADER_FLAG_HEADER (1 << 3) /**< data contains a codec specific header */ #define SPA_META_HEADER_FLAG_GAP (1 << 4) /**< data contains media neutral data */ #define SPA_META_HEADER_FLAG_DELTA_UNIT (1 << 5) /**< cannot be decoded independently */
uint32_t flags; /**< flags */
uint32_t offset; /**< offset in current cycle */
int64_t pts; /**< presentation timestamp in nanoseconds */
int64_t dts_offset; /**< decoding timestamp as a difference with pts */
uint64_t seq; /**< sequence number, increments with a
* media specific frequency */
};
/** metadata structure for Region or an array of these for RegionArray */ struct spa_meta_region { struct spa_region region;
};
/** iterate all the items in a metadata */ #define spa_meta_for_each(pos,meta) \ for ((pos) = (__typeof(pos))spa_meta_first(meta); \
spa_meta_check(pos, meta); \
(pos)++)
/** *Bitmapinformation * *Thismetadatacontainsabitmapimageinthegivenformatandsize. *Itistypicallyusedforcursorimagesorothersmallimagesthatare *bettertransferredinline.
*/ struct spa_meta_bitmap {
uint32_t format; /**< bitmap video format, one of enum spa_video_format. 0 is *andinvalidformatandshouldbehandledasifthereis
* no new bitmap information. */ struct spa_rectangle size; /**< width and height of bitmap */
int32_t stride; /**< stride of bitmap data */
uint32_t offset; /**< offset of bitmap data in this structure. An offset of *0meansnoimagedata(invisible),anoffset>= *sizeof(structspa_meta_bitmap)containsvalidbitmap
* info. */
};
/** *Cursorinformation * *Metadatatodescribethepositionandappearanceofapointingdevice.
*/ struct spa_meta_cursor {
uint32_t id; /**< cursor id. an id of 0 is an invalid id and means that
* there is no new cursor data */
uint32_t flags; /**< extra flags */ struct spa_point position; /**< position on screen */ struct spa_point hotspot; /**< offsets for hotspot in bitmap, this field has no meaning
* when there is no valid bitmap (see below) */
uint32_t bitmap_offset; /**< offset of bitmap meta in this structure. When the offset *is0,thereisnonewbitmapinformation.Whentheoffsetis *>=sizeof(structspa_meta_cursor)thereisa
* struct spa_meta_bitmap at the offset. */
};
/** a timed set of events associated with the buffer */ struct spa_meta_control { struct spa_pod_sequence sequence;
};
/** a busy counter for the buffer */ struct spa_meta_busy {
uint32_t flags;
uint32_t count; /**< number of users busy with the buffer */
};
enum spa_meta_videotransform_value {
SPA_META_TRANSFORMATION_None = 0, /**< no transform */
SPA_META_TRANSFORMATION_90, /**< 90 degree counter-clockwise */
SPA_META_TRANSFORMATION_180, /**< 180 degree counter-clockwise */
SPA_META_TRANSFORMATION_270, /**< 270 degree counter-clockwise */
SPA_META_TRANSFORMATION_Flipped, /**< 180 degree flipped around the vertical axis. Equivalent *toareflexionthroughtheverticallinesplittingthe
* buffer in two equal sized parts */
SPA_META_TRANSFORMATION_Flipped90, /**< flip then rotate around 90 degree counter-clockwise */
SPA_META_TRANSFORMATION_Flipped180, /**< flip then rotate around 180 degree counter-clockwise */
SPA_META_TRANSFORMATION_Flipped270, /**< flip then rotate around 270 degree counter-clockwise */
};
/** a transformation of the buffer */ struct spa_meta_videotransform {
uint32_t transform; /**< orientation transformation that was applied to the buffer,
* one of enum spa_meta_videotransform_value */
};
/** *Atimelinepointforexplicitsync * *Metadatatodescribethetimeonthetimelinewhenthebuffer *canbeacquiredandwhenitcanbereused. * *Thismetadatawillrequirenegotiationof2extrafdsfortheacquire *andreleasetimelinesrespectively.Onewaytoachievethisistoplace *thismetadataasSPA_PARAM_BUFFERS_metaTypewhennegotiatingabuffer *layoutwith2extrafds.
*/ struct spa_meta_sync_timeline {
uint32_t flags;
uint32_t padding;
uint64_t acquire_point; /**< the timeline acquire point, this is when the data
* can be accessed. */
uint64_t release_point; /**< the timeline release point, this timeline point should
* be signaled when the data is no longer accessed. */
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.