mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
frei0r: In the mixer plugins create the frei0r instances in create() before playback starts
This commit is contained in:
parent
166ee21b5b
commit
0de4e9df00
1 changed files with 9 additions and 12 deletions
|
@ -195,7 +195,6 @@ static gboolean
|
|||
gst_frei0r_mixer_set_caps (GstPad * pad, GstCaps * caps)
|
||||
{
|
||||
GstFrei0rMixer *self = GST_FREI0R_MIXER (gst_pad_get_parent (pad));
|
||||
GstFrei0rMixerClass *klass = GST_FREI0R_MIXER_GET_CLASS (self);
|
||||
gboolean ret = TRUE;
|
||||
|
||||
gst_caps_replace (&self->caps, caps);
|
||||
|
@ -215,16 +214,6 @@ gst_frei0r_mixer_set_caps (GstPad * pad, GstCaps * caps)
|
|||
ret = FALSE;
|
||||
goto out;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
out:
|
||||
|
||||
|
@ -543,9 +532,17 @@ gst_frei0r_mixer_collected (GstCollectPads * pads, GstFrei0rMixer * self)
|
|||
GstFrei0rMixerClass *klass = GST_FREI0R_MIXER_GET_CLASS (self);
|
||||
gdouble time;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (self->newseg_event) {
|
||||
gst_pad_push_event (self->src, self->newseg_event);
|
||||
self->newseg_event = NULL;
|
||||
|
|
Loading…
Reference in a new issue