From f0054bcc8250b2d4463ac721dc99a0d6cf815d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 24 Jul 2009 19:38:07 +0200 Subject: [PATCH] effectv: Don't allow caps changes for some effectv filters These filters use information from previous frames to generate the current frame and a caps change will make the effect start from the beginning again. --- gst/effectv/gstaging.c | 3 +++ gst/effectv/gstdice.c | 3 +++ gst/effectv/gstquark.c | 3 +++ gst/effectv/gstradioac.c | 3 +++ gst/effectv/gstripple.c | 3 +++ gst/effectv/gstshagadelic.c | 3 +++ gst/effectv/gststreak.c | 3 +++ gst/effectv/gstvertigo.c | 3 +++ gst/effectv/gstwarp.c | 2 ++ 9 files changed, 26 insertions(+) diff --git a/gst/effectv/gstaging.c b/gst/effectv/gstaging.c index d07fc5f7d8..96c312f91c 100644 --- a/gst/effectv/gstaging.c +++ b/gst/effectv/gstaging.c @@ -418,4 +418,7 @@ gst_agingtv_init (GstAgingTV * agingtv, GstAgingTVClass * klass) agingtv->color_aging = DEFAULT_COLOR_AGING; agingtv->pits = DEFAULT_PITS; agingtv->dusts = DEFAULT_DUSTS; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (agingtv)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (agingtv)); } diff --git a/gst/effectv/gstdice.c b/gst/effectv/gstdice.c index b46aab8e98..5d73b7a561 100644 --- a/gst/effectv/gstdice.c +++ b/gst/effectv/gstdice.c @@ -310,4 +310,7 @@ gst_dicetv_init (GstDiceTV * filter, GstDiceTVClass * klass) filter->g_cube_size = 0; filter->g_map_height = 0; filter->g_map_width = 0; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (filter)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (filter)); } diff --git a/gst/effectv/gstquark.c b/gst/effectv/gstquark.c index a05f3fcab8..29bed2bd96 100644 --- a/gst/effectv/gstquark.c +++ b/gst/effectv/gstquark.c @@ -286,4 +286,7 @@ gst_quarktv_init (GstQuarkTV * filter, GstQuarkTVClass * klass) { filter->planes = PLANES; filter->current_plane = filter->planes - 1; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (filter)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (filter)); } diff --git a/gst/effectv/gstradioac.c b/gst/effectv/gstradioac.c index 92ffc7ba10..76bdb98c27 100644 --- a/gst/effectv/gstradioac.c +++ b/gst/effectv/gstradioac.c @@ -612,4 +612,7 @@ gst_radioactv_init (GstRadioacTV * filter, GstRadioacTVClass * klass) filter->color = DEFAULT_COLOR; filter->interval = DEFAULT_INTERVAL; filter->trigger = DEFAULT_TRIGGER; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (filter)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (filter)); } diff --git a/gst/effectv/gstripple.c b/gst/effectv/gstripple.c index ce4a58c9eb..75e3981767 100644 --- a/gst/effectv/gstripple.c +++ b/gst/effectv/gstripple.c @@ -607,4 +607,7 @@ static void gst_rippletv_init (GstRippleTV * filter, GstRippleTVClass * klass) { filter->mode = DEFAULT_MODE; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (filter)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (filter)); } diff --git a/gst/effectv/gstshagadelic.c b/gst/effectv/gstshagadelic.c index 89894d289e..661df6baf6 100644 --- a/gst/effectv/gstshagadelic.c +++ b/gst/effectv/gstshagadelic.c @@ -265,4 +265,7 @@ gst_shagadelictv_init (GstShagadelicTV * filter, GstShagadelicTVClass * klass) { filter->ripple = NULL; filter->spiral = NULL; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (filter)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (filter)); } diff --git a/gst/effectv/gststreak.c b/gst/effectv/gststreak.c index 0772e8d1bd..ed129d9adf 100644 --- a/gst/effectv/gststreak.c +++ b/gst/effectv/gststreak.c @@ -272,4 +272,7 @@ static void gst_streaktv_init (GstStreakTV * filter, GstStreakTVClass * klass) { filter->feedback = DEFAULT_FEEDBACK; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (filter)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (filter)); } diff --git a/gst/effectv/gstvertigo.c b/gst/effectv/gstvertigo.c index 06cc0bb57c..2ddce9a809 100644 --- a/gst/effectv/gstvertigo.c +++ b/gst/effectv/gstvertigo.c @@ -308,4 +308,7 @@ gst_vertigotv_init (GstVertigoTV * filter, GstVertigoTVClass * klass) filter->phase = 0.0; filter->phase_increment = 0.02; filter->zoomrate = 1.01; + + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (filter)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (filter)); } diff --git a/gst/effectv/gstwarp.c b/gst/effectv/gstwarp.c index fd31dc4ab9..c51ed38d0e 100644 --- a/gst/effectv/gstwarp.c +++ b/gst/effectv/gstwarp.c @@ -282,4 +282,6 @@ gst_warptv_class_init (GstWarpTVClass * klass) static void gst_warptv_init (GstWarpTV * warptv, GstWarpTVClass * klass) { + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SRC_PAD (warptv)); + gst_pad_use_fixed_caps (GST_BASE_TRANSFORM_SINK_PAD (warptv)); }