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)
|
||||
{
|
||||
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,
|
||||
&self->height)
|
||||
|| !gst_video_parse_caps_framerate (caps, &self->fps_n, &self->fps_d))
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -80,9 +70,18 @@ gst_frei0r_src_create (GstPushSrc * src, GstBuffer ** buf)
|
|||
|
||||
*buf = NULL;
|
||||
|
||||
if (G_UNLIKELY (!self->f0r_instance))
|
||||
if (G_UNLIKELY (self->width <= 0 || self->height <= 0))
|
||||
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);
|
||||
|
||||
ret =
|
||||
|
|
Loading…
Reference in a new issue