mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:46:13 +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;
|
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
|
gboolean
|
||||||
gst_va_filter_add_filter_buffer (GstVaFilter * self, gpointer data, gsize size,
|
gst_va_filter_add_filter_buffer (GstVaFilter * self, gpointer data, gsize size,
|
||||||
guint num)
|
guint num)
|
||||||
|
|
|
@ -95,6 +95,10 @@ gboolean gst_va_filter_add_filter_buffer (GstVaFilter * self,
|
||||||
gpointer data,
|
gpointer data,
|
||||||
gsize size,
|
gsize size,
|
||||||
guint num);
|
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_drop_filter_buffers (GstVaFilter * self);
|
||||||
gboolean gst_va_filter_process (GstVaFilter * self,
|
gboolean gst_va_filter_process (GstVaFilter * self,
|
||||||
GstVaSample * src,
|
GstVaSample * src,
|
||||||
|
|
Loading…
Reference in a new issue