mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
gst: add buffer video meta support
Fixes video buffer strides handling. This enables passing of image datas with right line padding.
This commit is contained in:
parent
38f88d3d25
commit
023577e391
5 changed files with 93 additions and 0 deletions
|
|
@ -615,6 +615,24 @@ static GstBuffer *dequeue_buffer(GstPipeWireSrc *pwsrc)
|
|||
}
|
||||
}
|
||||
|
||||
if (pwsrc->is_video) {
|
||||
GstVideoInfo *info = &pwsrc->video_info;
|
||||
GstVideoMeta *meta = gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
|
||||
GST_VIDEO_INFO_FORMAT (info),
|
||||
GST_VIDEO_INFO_WIDTH (info),
|
||||
GST_VIDEO_INFO_HEIGHT (info),
|
||||
GST_VIDEO_INFO_N_PLANES (info),
|
||||
info->offset,
|
||||
info->stride);
|
||||
|
||||
meta->n_planes = b->buffer->n_datas;
|
||||
for (i = 0; i < b->buffer->n_datas; i++) {
|
||||
struct spa_data *d = &b->buffer->datas[i];
|
||||
meta->offset[i] = d->chunk->offset;
|
||||
meta->stride[i] = d->chunk->stride;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < b->buffer->n_datas; i++) {
|
||||
struct spa_data *d = &b->buffer->datas[i];
|
||||
GstMemory *pmem = gst_buffer_peek_memory (data->buf, i);
|
||||
|
|
@ -958,6 +976,10 @@ on_param_changed (void *data, uint32_t id,
|
|||
gst_caps_unref(pwsrc->caps);
|
||||
pwsrc->caps = gst_caps_from_format (param);
|
||||
|
||||
pwsrc->is_video = pwsrc->caps != NULL
|
||||
? gst_video_info_from_caps (&pwsrc->video_info, pwsrc->caps)
|
||||
: FALSE;
|
||||
|
||||
pwsrc->negotiated = pwsrc->caps != NULL;
|
||||
|
||||
if (pwsrc->negotiated) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue