GST_VALIDATE_ISSUE_FLAGS_FULL_DETAILS);
REGISTER_VALIDATE_ISSUE (ISSUE, SCENARIO_ACTION_EXECUTION_ISSUE,
"An issue happened during the execution of a scenario", NULL);
+ REGISTER_VALIDATE_ISSUE (WARNING, SCENARIO_ACTION_ENDED_EARLY,
+ "Got EOS before an action playback time", NULL);
REGISTER_VALIDATE_ISSUE (CRITICAL, CONFIG_LATENCY_TOO_HIGH,
"The pipeline latency is higher than the maximum allowed by the scenario",
NULL);
#define SCENARIO_ACTION_CHECK_ERROR _QUARK("scenario::check-error")
#define SCENARIO_ACTION_TIMEOUT _QUARK("scenario::action-timeout")
#define SCENARIO_ACTION_EXECUTION_ISSUE _QUARK("scenario::execution-issue")
+/**
+ * SCENARIO_ACTION_ENDED_EARLY:
+ *
+ * Since: 1.22
+ */
+#define SCENARIO_ACTION_ENDED_EARLY _QUARK("scenario::action-ended-early")
#define CONFIG_LATENCY_TOO_HIGH _QUARK("config::latency-too-high")
#define CONFIG_TOO_MANY_BUFFERS_DROPPED _QUARK("config::too-many-buffers-dropped")
return G_SOURCE_CONTINUE;
}
+ if (message && GST_MESSAGE_TYPE (message) == GST_MESSAGE_EOS
+ && act->playback_time != GST_CLOCK_TIME_NONE) {
+ GST_VALIDATE_REPORT_ACTION (scenario, act,
+ SCENARIO_ACTION_ENDED_EARLY,
+ "Got EOS before action playback time %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (act->playback_time));
+ goto execute_action;
+ }
+
switch (act->priv->state) {
case GST_VALIDATE_EXECUTE_ACTION_NONE:
case GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING:
return G_SOURCE_CONTINUE;
}
+execute_action:
type = _find_action_type (act->type);
GST_DEBUG_OBJECT (scenario, "Executing %" GST_PTR_FORMAT