diff --git a/validate/gst/qa/Makefile.am b/validate/gst/qa/Makefile.am index 5c0aee1812..a7f308c31e 100644 --- a/validate/gst/qa/Makefile.am +++ b/validate/gst/qa/Makefile.am @@ -11,6 +11,7 @@ c_sources = \ gst-qa-monitor-factory.c \ gst-qa-report.c \ gst-qa-scenario.c \ + gst-qa-override.c \ gst-qa-monitor-preload.c noinst_HEADERS = diff --git a/validate/gst/qa/gst-qa-override.c b/validate/gst/qa/gst-qa-override.c new file mode 100644 index 0000000000..e955f629ae --- /dev/null +++ b/validate/gst/qa/gst-qa-override.c @@ -0,0 +1,66 @@ +/* GStreamer + * Copyright (C) 2013 Thiago Santos + * + * gst-qa-override.c - QA Override that allows customizing QA behavior + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "gst-qa-override.h" + +GstQaOverride * +gst_qa_override_new (void) +{ + GstQaOverride *override = g_slice_new0 (GstQaOverride); + + override->level_override = g_hash_table_new (g_direct_hash, g_direct_equal); + + return override; +} + +void +gst_qa_override_free (GstQaOverride * override) +{ + g_hash_table_unref (override->level_override); + g_slice_free (GstQaOverride, override); +} + +void +gst_qa_override_change_severity (GstQaOverride * override, + GstQaIssueId issue_id, GstQaReportLevel new_level) +{ + g_hash_table_insert (override->level_override, (gpointer) issue_id, + (gpointer) new_level); +} + +/* + * Also receives @default_level to preserve a custom level that might have + * been set by a previous GstQaOverride and should not go back to the + * GstQaIssue default + */ +GstQaReportLevel +gst_qa_override_get_severity (GstQaOverride * override, GstQaIssueId issue_id, + GstQaReportLevel default_level) +{ + GstQaReportLevel level; + if (g_hash_table_lookup_extended (override->level_override, + (gpointer) issue_id, NULL, (gpointer *) & level)) { + return level; + } + return default_level; +} diff --git a/validate/gst/qa/gst-qa-override.h b/validate/gst/qa/gst-qa-override.h new file mode 100644 index 0000000000..5fdb8ae292 --- /dev/null +++ b/validate/gst/qa/gst-qa-override.h @@ -0,0 +1,44 @@ +/* GStreamer + * Copyright (C) 2013 Thiago Santos + * + * gst-qa-override.h - QA Override that allows customizing QA behavior + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GST_QA_OVERRIDE_H__ +#define __GST_QA_OVERRIDE_H__ + +#include +#include +#include "gst-qa-report.h" + +G_BEGIN_DECLS + +typedef struct { + GHashTable *level_override; + +} GstQaOverride; + +GstQaOverride * gst_qa_override_new (void); +void gst_qa_override_free (GstQaOverride * override); +void gst_qa_override_change_severity (GstQaOverride * override, GstQaIssueId issue_id, GstQaReportLevel new_level); +GstQaReportLevel gst_qa_override_get_severity (GstQaOverride * override, GstQaIssueId issue_id, GstQaReportLevel default_level); + +G_END_DECLS + +#endif /* __GST_QA_OVERRIDE_H__ */ +