summaryrefslogtreecommitdiff
path: root/gst/fieldanalysis
diff options
context:
space:
mode:
authorRobert Swain <robert.swain@collabora.co.uk>2011-10-28 11:10:06 +0200
committerRobert Swain <robert.swain@collabora.co.uk>2011-10-31 18:20:32 +0100
commite3b7cb8899b800fbc5d26837403c3d20edd7f137 (patch)
tree60c94c23422bc05e09dbc6404fbda77c7dbc3082 /gst/fieldanalysis
parent16ce440e7f4cc6b236476ccf303e704ac6e34910 (diff)
downloadgstreamer-plugins-bad-e3b7cb8899b800fbc5d26837403c3d20edd7f137.tar.gz
fieldanalysis: Don't reset the context on DISCONT
On discont, the queue of frames was being cleared, but also the context reset. We only need to clear the queue.
Diffstat (limited to 'gst/fieldanalysis')
-rw-r--r--gst/fieldanalysis/gstfieldanalysis.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gst/fieldanalysis/gstfieldanalysis.c b/gst/fieldanalysis/gstfieldanalysis.c
index 7f8a05939..3cfd5c848 100644
--- a/gst/fieldanalysis/gstfieldanalysis.c
+++ b/gst/fieldanalysis/gstfieldanalysis.c
@@ -313,9 +313,8 @@ static guint64 block_score_for_row_5_tap (GstFieldAnalysis * filter,
static gfloat opposite_parity_windowed_comb (GstFieldAnalysis * filter,
FieldAnalysisFields * fields);
-
static void
-gst_field_analysis_reset (GstFieldAnalysis * filter)
+gst_field_analysis_empty_queue (GstFieldAnalysis * filter)
{
if (filter->frames) {
guint length = g_queue_get_length (filter->frames);
@@ -327,6 +326,12 @@ gst_field_analysis_reset (GstFieldAnalysis * filter)
length--;
}
}
+}
+
+static void
+gst_field_analysis_reset (GstFieldAnalysis * filter)
+{
+ gst_field_analysis_empty_queue (filter);
GST_DEBUG_OBJECT (filter, "Resetting context");
memset (filter->results, 0, 2 * sizeof (FieldAnalysis));
filter->is_telecine = FALSE;
@@ -1711,7 +1716,7 @@ gst_field_analysis_chain (GstPad * pad, GstBuffer * buf)
}
}
- gst_field_analysis_reset (filter);
+ gst_field_analysis_empty_queue (filter);
if (ret != GST_FLOW_OK) {
GST_DEBUG_OBJECT (filter,