mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
va: filter: Add gst_va_filter_add_deinterlace_buffer()
This function decorates gst_va_filter_add_filter_buffer() to get the number of past and future frames to hold, given the method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2495>
This commit is contained in:
parent
101dcb55d9
commit
419ef31d1e
2 changed files with 46 additions and 0 deletions
|
@ -1374,6 +1374,48 @@ _query_pipeline_caps (GstVaFilter * self, GArray * filters,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gst_va_filter_add_deinterlace_buffer (GstVaFilter * self,
|
||||
VAProcDeinterlacingType method, guint32 * forward, guint32 * backward)
|
||||
{
|
||||
GArray *filters = NULL;
|
||||
VAProcFilterParameterBufferDeinterlacing params = {
|
||||
.type = VAProcFilterDeinterlacing,
|
||||
.algorithm = method,
|
||||
};
|
||||
VAProcPipelineCaps pipeline_caps = { 0, };
|
||||
gboolean ret;
|
||||
|
||||
g_return_val_if_fail (GST_IS_VA_FILTER (self), FALSE);
|
||||
|
||||
if (!gst_va_filter_is_open (self))
|
||||
return FALSE;
|
||||
|
||||
if (!(method != VAProcDeinterlacingNone
|
||||
&& method != VAProcDeinterlacingCount))
|
||||
return FALSE;
|
||||
|
||||
if (!gst_va_filter_add_filter_buffer (self, ¶ms, sizeof (params), 1))
|
||||
return FALSE;
|
||||
|
||||
GST_OBJECT_LOCK (self);
|
||||
if (self->filters)
|
||||
filters = g_array_ref (self->filters);
|
||||
GST_OBJECT_UNLOCK (self);
|
||||
ret = _query_pipeline_caps (self, filters, &pipeline_caps);
|
||||
if (filters)
|
||||
g_array_unref (filters);
|
||||
if (!ret)
|
||||
return FALSE;
|
||||
|
||||
if (forward)
|
||||
*forward = pipeline_caps.num_forward_references;
|
||||
if (backward)
|
||||
*backward = pipeline_caps.num_backward_references;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gst_va_filter_add_filter_buffer (GstVaFilter * self, gpointer data, gsize size,
|
||||
guint num)
|
||||
|
|
|
@ -95,6 +95,10 @@ gboolean gst_va_filter_add_filter_buffer (GstVaFilter * self,
|
|||
gpointer data,
|
||||
gsize size,
|
||||
guint num);
|
||||
gboolean gst_va_filter_add_deinterlace_buffer(GstVaFilter * self,
|
||||
VAProcDeinterlacingType method,
|
||||
guint32 * forward,
|
||||
guint32 * backward);
|
||||
gboolean gst_va_filter_drop_filter_buffers (GstVaFilter * self);
|
||||
gboolean gst_va_filter_process (GstVaFilter * self,
|
||||
GstVaSample * src,
|
||||
|
|
Loading…
Reference in a new issue