From 4cbcb97258236025cc7133a5dfe7f63178e9c446 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Fri, 7 Nov 2014 23:19:59 +0100 Subject: [PATCH] validate: Add a GstValidateActionTypeFlag flag Allowing us to define action types more in detail. Keep backward compatibility, at least with the C API https://bugzilla.gnome.org/show_bug.cgi?id=739854 --- validate/gst/validate/gst-validate-internal.h | 4 +- validate/gst/validate/gst-validate-report.c | 2 +- validate/gst/validate/gst-validate-scenario.c | 40 +++++++++++-------- validate/gst/validate/gst-validate-scenario.h | 14 ++++++- 4 files changed, 40 insertions(+), 20 deletions(-) diff --git a/validate/gst/validate/gst-validate-internal.h b/validate/gst/validate/gst-validate-internal.h index fb13045e59..2833bef24e 100644 --- a/validate/gst/validate/gst-validate-internal.h +++ b/validate/gst/validate/gst-validate-internal.h @@ -33,6 +33,8 @@ extern GRegex *newline_regex; typedef struct _GstValidateActionType GstValidateActionType; +#define IS_CONFIG_ACTION_TYPE(type) (((type) & GST_VALIDATE_ACTION_TYPE_CONFIG) || ((type) == TRUE)) + struct _GstValidateActionType { GstMiniObject mini_object; @@ -45,7 +47,7 @@ struct _GstValidateActionType GstValidateActionParameter *parameters; gchar *description; - gboolean is_config; + GstValidateActionTypeFlags flags; gpointer _gst_reserved[GST_PADDING_LARGE]; }; diff --git a/validate/gst/validate/gst-validate-report.c b/validate/gst/validate/gst-validate-report.c index 44969ffb1f..54b4eafcf0 100644 --- a/validate/gst/validate/gst-validate-report.c +++ b/validate/gst/validate/gst-validate-report.c @@ -531,7 +531,7 @@ gst_validate_printf_valist (gpointer source, const gchar * format, va_list args) g_string_append_printf (string, "\n Implementer namespace: %s", type->implementer_namespace); - if (type->is_config) + if (IS_CONFIG_ACTION_TYPE (type->flags)) g_string_append_printf (string, "\n Is config action (meaning it will be executing right " "at the begining of the execution of the pipeline)"); diff --git a/validate/gst/validate/gst-validate-scenario.c b/validate/gst/validate/gst-validate-scenario.c index 0386693238..dfa8280465 100644 --- a/validate/gst/validate/gst-validate-scenario.c +++ b/validate/gst/validate/gst-validate-scenario.c @@ -1358,7 +1358,7 @@ _load_scenario_file (GstValidateScenario * scenario, action->structure = structure; - if (action_type->is_config) { + if (IS_CONFIG_ACTION_TYPE (action_type->flags)) { ret = action_type->execute (scenario, action); gst_mini_object_unref (GST_MINI_OBJECT (action)); @@ -1894,10 +1894,11 @@ gst_validate_register_action_type (const gchar * type_name, const gchar * implementer_namespace, GstValidateExecuteAction function, GstValidateActionParameter * parameters, - const gchar * description, gboolean is_config) + const gchar * description, GstValidateActionTypeFlags flags) { GstValidateActionType *tmptype; GstValidateActionType *type = gst_validate_action_type_new (); + gboolean is_config = IS_CONFIG_ACTION_TYPE (flags); gint n_params = is_config ? 0 : 2; if (parameters) { @@ -1932,7 +1933,7 @@ gst_validate_register_action_type (const gchar * type_name, type->name = g_strdup (type_name); type->implementer_namespace = g_strdup (implementer_namespace); type->description = g_strdup (description); - type->is_config = is_config; + type->flags = flags; if ((tmptype = _find_action_type (type_name))) { action_types = g_list_remove (action_types, tmptype); @@ -2104,7 +2105,7 @@ init_scenarios (void) {NULL} }), "Allows to describe the scenario in various ways", - TRUE); + GST_VALIDATE_ACTION_TYPE_CONFIG); REGISTER_ACTION_TYPE ("seek", _execute_seek, ((GstValidateActionParameter []) { @@ -2160,7 +2161,7 @@ init_scenarios (void) "Seeks into the stream, example of a seek happening when the stream reaches 5 seconds\n" "or 1 eighth of its duration and seeks at 10sec or 2 eighth of its duration:\n" " seek, playback-time=\"min(5.0, (duration/8))\", start=\"min(10, 2*(duration/8))\", flags=accurate+flush", - FALSE + GST_VALIDATE_ACTION_TYPE_NONE ); REGISTER_ACTION_TYPE ("pause", _execute_pause, @@ -2177,16 +2178,16 @@ init_scenarios (void) }), "Sets pipeline to PAUSED. You can add a 'duration'\n" "parametter so the pipeline goes back to playing after that duration\n" - "(in second)", FALSE); + "(in second)", GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("play", _execute_play, NULL, - "Sets the pipeline state to PLAYING", FALSE); + "Sets the pipeline state to PLAYING", GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("stop", _execute_stop, NULL, - "Sets the pipeline state to NULL", FALSE); + "Sets the pipeline state to NULL", GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("eos", _execute_eos, NULL, - "Sends an EOS event to the pipeline", FALSE); + "Sends an EOS event to the pipeline", GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("switch-track", _execute_switch_track, ((GstValidateActionParameter []) { @@ -2214,7 +2215,7 @@ init_scenarios (void) {NULL} }), "The 'switch-track' command can be used to switch tracks.\n" - , FALSE); + , GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("wait", _execute_wait, ((GstValidateActionParameter []) { @@ -2225,13 +2226,13 @@ init_scenarios (void) NULL}, {NULL} }), - "Waits during 'duration' seconds", FALSE); + "Waits during 'duration' seconds", GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("dot-pipeline", _execute_dot_pipeline, NULL, "Dots the pipeline (the 'name' property will be used in the dot filename).\n" "For more information have a look at the GST_DEBUG_BIN_TO_DOT_FILE documentation.\n" "Note that the GST_DEBUG_DUMP_DOT_DIR env variable needs to be set\n", - FALSE); + GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("set-feature-rank", _set_rank, ((GstValidateActionParameter []) { @@ -2249,7 +2250,8 @@ init_scenarios (void) NULL}, {NULL} }), - "Changes the ranking of a particular plugin feature", TRUE); + "Changes the ranking of a particular plugin feature", + GST_VALIDATE_ACTION_TYPE_CONFIG); REGISTER_ACTION_TYPE ("set-state", _execute_set_state, ((GstValidateActionParameter []) { @@ -2262,7 +2264,8 @@ init_scenarios (void) }, {NULL} }), - "Changes the state of the pipeline to any GstState", FALSE); + "Changes the state of the pipeline to any GstState", + GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("set-property", _execute_set_property, ((GstValidateActionParameter []) { @@ -2288,7 +2291,8 @@ init_scenarios (void) }, {NULL} }), - "Sets a property of any element in the pipeline", FALSE); + "Sets a property of any element in the pipeline", + GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("set-debug-threshold", _execute_set_debug_threshold, @@ -2303,7 +2307,8 @@ init_scenarios (void) {NULL} }), "Sets the debug level to be used, same format as\n" - "setting the GST_DEBUG env variable", FALSE); + "setting the GST_DEBUG env variable", + GST_VALIDATE_ACTION_TYPE_NONE); REGISTER_ACTION_TYPE ("emit-signal", _execute_emit_signal, ((GstValidateActionParameter []) @@ -2323,7 +2328,8 @@ init_scenarios (void) }, {NULL} }), - "Emits a signal to an element in the pipeline", FALSE); + "Emits a signal to an element in the pipeline", + GST_VALIDATE_ACTION_TYPE_NONE); /* *INDENT-ON* */ } diff --git a/validate/gst/validate/gst-validate-scenario.h b/validate/gst/validate/gst-validate-scenario.h index 571e073149..e80afc9443 100644 --- a/validate/gst/validate/gst-validate-scenario.h +++ b/validate/gst/validate/gst-validate-scenario.h @@ -152,6 +152,17 @@ struct _GstValidateScenario gpointer _gst_reserved[GST_PADDING]; }; +/** + * GstValidateActionTypeFlags: + * @GST_VALIDATE_ACTION_TYPE_NONE: No special flag + */ +typedef enum +{ + GST_VALIDATE_ACTION_TYPE_NONE = 0, + GST_VALIDATE_ACTION_TYPE_CONFIG = 1 << 1, + GST_VALIDATE_ACTION_TYPE_ASYNC = 1 << 2, +} GstValidateActionTypeFlags; + GType gst_validate_scenario_get_type (void); GstValidateScenario * gst_validate_scenario_factory_create (GstValidateRunner *runner, @@ -166,7 +177,8 @@ void gst_validate_register_action_type (const gchar *type_name, const gchar *implementer_namespace, GstValidateExecuteAction function, GstValidateActionParameter * parameters, - const gchar *description, gboolean is_config); + const gchar *description, + GstValidateActionTypeFlags flags); gboolean gst_validate_action_get_clocktime (GstValidateScenario * scenario, -- 2.34.1