mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
frei0r: In the src plugins create the frei0r instances in create() before playback starts
This commit is contained in:
parent
867d51fb31
commit
166ee21b5b
1 changed files with 10 additions and 11 deletions
|
@ -39,22 +39,12 @@ static gboolean
|
||||||
gst_frei0r_src_set_caps (GstBaseSrc * src, GstCaps * caps)
|
gst_frei0r_src_set_caps (GstBaseSrc * src, GstCaps * caps)
|
||||||
{
|
{
|
||||||
GstFrei0rSrc *self = GST_FREI0R_SRC (src);
|
GstFrei0rSrc *self = GST_FREI0R_SRC (src);
|
||||||
GstFrei0rSrcClass *klass = GST_FREI0R_SRC_GET_CLASS (src);
|
|
||||||
|
|
||||||
if (!gst_video_format_parse_caps (caps, &self->fmt, &self->width,
|
if (!gst_video_format_parse_caps (caps, &self->fmt, &self->width,
|
||||||
&self->height)
|
&self->height)
|
||||||
|| !gst_video_parse_caps_framerate (caps, &self->fps_n, &self->fps_d))
|
|| !gst_video_parse_caps_framerate (caps, &self->fps_n, &self->fps_d))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (self->f0r_instance) {
|
|
||||||
klass->ftable->destruct (self->f0r_instance);
|
|
||||||
self->f0r_instance = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->f0r_instance =
|
|
||||||
gst_frei0r_instance_construct (klass->ftable, klass->properties,
|
|
||||||
klass->n_properties, self->property_cache, self->width, self->height);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,9 +70,18 @@ gst_frei0r_src_create (GstPushSrc * src, GstBuffer ** buf)
|
||||||
|
|
||||||
*buf = NULL;
|
*buf = NULL;
|
||||||
|
|
||||||
if (G_UNLIKELY (!self->f0r_instance))
|
if (G_UNLIKELY (self->width <= 0 || self->height <= 0))
|
||||||
return GST_FLOW_NOT_NEGOTIATED;
|
return GST_FLOW_NOT_NEGOTIATED;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (!self->f0r_instance)) {
|
||||||
|
self->f0r_instance =
|
||||||
|
gst_frei0r_instance_construct (klass->ftable, klass->properties,
|
||||||
|
klass->n_properties, self->property_cache, self->width, self->height);
|
||||||
|
|
||||||
|
if (G_UNLIKELY (!self->f0r_instance))
|
||||||
|
return GST_FLOW_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
newsize = gst_video_format_get_size (self->fmt, self->width, self->height);
|
newsize = gst_video_format_get_size (self->fmt, self->width, self->height);
|
||||||
|
|
||||||
ret =
|
ret =
|
||||||
|
|
Loading…
Reference in a new issue