gstreamer/subprojects/gst-plugins-bad/sys/va/gstvabase.h
Víctor Manuel Jáquez Leal 9f5b2c4e25 va: use GstVideoInfoDmaDrm when importing buffers
In the case of encoders and filters when importing a DMABuf, use
GstVideoInfoDmaDrm to get the drm fourcc and modifier.

In both cases, instead of keeping the original GstVideoInfoDmaDrm from caps, the
GstVideoInfo part of the structure is converted as canonical one, given the
format from the fourcc. It's kept in the way to handle V4L2 linear DMABufs and
to avoid too many changes in the current code.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5264>
2023-11-09 17:36:06 +00:00

54 lines
1.7 KiB
C

/* GStreamer
* Copyright (C) 2021 Igalia, S.L.
* Author: Víctor Jáquez <vjaquez@igalia.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#pragma once
#include <gst/gst.h>
#include <gst/va/gstva.h>
typedef struct _GstVaBufferImporter GstVaBufferImporter;
typedef GstBufferPool *(*GstVaBufferImporterGetSinkPool) (GstElement * element, gpointer data);
struct _GstVaBufferImporter
{
GstElement *element;
GstDebugCategory *debug_category;
GstVaDisplay *display;
VAEntrypoint entrypoint;
union {
GstVideoInfo *in_info;
GstVideoInfoDmaDrm *in_drm_info;
};
GstVideoInfo *sinkpad_info;
gpointer pool_data;
GstVaBufferImporterGetSinkPool get_sinkpad_pool;
};
GstFlowReturn gst_va_buffer_importer_import (GstVaBufferImporter * base,
GstBuffer * inbuf,
GstBuffer ** outbuf);
gboolean gst_va_base_convert_caps_to_va (GstCaps * caps);