mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
spa: add mjpg and h264 format build helpers
This commit is contained in:
parent
cefcc2e874
commit
04344dad20
1 changed files with 50 additions and 0 deletions
|
|
@ -161,6 +161,34 @@ spa_format_video_h264_parse(const struct spa_pod *format,
|
|||
SPA_FORMAT_VIDEO_H264_alignment, SPA_POD_OPT_Id(&info->alignment));
|
||||
}
|
||||
|
||||
static inline struct spa_pod *
|
||||
spa_format_video_h264_build(struct spa_pod_builder *builder, uint32_t id,
|
||||
struct spa_video_info_h264 *info)
|
||||
{
|
||||
struct spa_pod_frame f;
|
||||
spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, 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_h264),
|
||||
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->max_framerate.denom != 0)
|
||||
spa_pod_builder_add(builder,
|
||||
SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_Fraction(info->max_framerate), 0);
|
||||
if (info->stream_format != 0)
|
||||
spa_pod_builder_add(builder,
|
||||
SPA_FORMAT_VIDEO_H264_streamFormat, SPA_POD_Id(info->stream_format), 0);
|
||||
if (info->alignment != 0)
|
||||
spa_pod_builder_add(builder,
|
||||
SPA_FORMAT_VIDEO_H264_alignment, SPA_POD_Id(info->alignment), 0);
|
||||
return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
|
||||
}
|
||||
|
||||
static inline int
|
||||
spa_format_video_mjpg_parse(const struct spa_pod *format,
|
||||
struct spa_video_info_mjpg *info)
|
||||
|
|
@ -172,6 +200,28 @@ spa_format_video_mjpg_parse(const struct spa_pod *format,
|
|||
SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_OPT_Fraction(&info->max_framerate));
|
||||
}
|
||||
|
||||
static inline struct spa_pod *
|
||||
spa_format_video_mjpg_build(struct spa_pod_builder *builder, uint32_t id,
|
||||
struct spa_video_info_mjpg *info)
|
||||
{
|
||||
struct spa_pod_frame f;
|
||||
spa_pod_builder_push_object(builder, &f, SPA_TYPE_OBJECT_Format, 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_mjpg),
|
||||
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->max_framerate.denom != 0)
|
||||
spa_pod_builder_add(builder,
|
||||
SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_Fraction(info->max_framerate), 0);
|
||||
return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue