GStreamer video-info calculated stride and offset may differ from those used by the camera. For stride and offset mismatch, this patch adds video meta to buffer if downstream supports VideoMeta through allocation query. Otherwise, create a internal VideoPool using the caps, and copy video frame to this system memory. Signed-off-by: Hou Qi <qi.hou@nxp.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
30 lines
901 B
C
30 lines
901 B
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2020, Collabora Ltd.
|
|
* Author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
|
|
*
|
|
* GStreamer Buffer Pool
|
|
*
|
|
* This is a partial implementation of GstBufferPool intended for internal use
|
|
* only. This pool cannot be configured or activated.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "gstlibcameraallocator.h"
|
|
|
|
#include <gst/gst.h>
|
|
#include <gst/video/video.h>
|
|
|
|
#include <libcamera/stream.h>
|
|
|
|
#define GST_TYPE_LIBCAMERA_POOL gst_libcamera_pool_get_type()
|
|
G_DECLARE_FINAL_TYPE(GstLibcameraPool, gst_libcamera_pool, GST_LIBCAMERA, POOL, GstBufferPool)
|
|
|
|
GstLibcameraPool *gst_libcamera_pool_new(GstLibcameraAllocator *allocator,
|
|
libcamera::Stream *stream, GstVideoInfo *info);
|
|
|
|
libcamera::Stream *gst_libcamera_pool_get_stream(GstLibcameraPool *self);
|
|
|
|
libcamera::FrameBuffer *gst_libcamera_buffer_get_frame_buffer(GstBuffer *buffer);
|