diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index db3e86fbd..d1ae6eab5 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -143,6 +143,14 @@ GstEngine::~GstEngine() { } bool GstEngine::Init() { + // This environment variable is required for GST_DEBUG_BIN_TO_DOT_FILE macros. + // Gstreamer only reads it on init, so make sure it's set now. + QByteArray path = qgetenv("GST_DEBUG_DUMP_DOT_DIR"); + if (path.isEmpty()) { + path = QDir::currentPath().toUtf8(); + qputenv("GST_DEBUG_DUMP_DOT_DIR", path); + } + initialising_ = QtConcurrent::run(this, &GstEngine::InitialiseGstreamer); return true; } diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 9d62594dd..9d0621f0c 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -1332,3 +1332,12 @@ void GstEnginePipeline::SetNextReq(const MediaPlaybackRequest& req, next_beginning_offset_nanosec_ = beginning_nanosec; next_end_offset_nanosec_ = end_nanosec; } + +void GstEnginePipeline::DumpGraph() { +#ifdef GST_DISABLE_GST_DEBUG + qLog(Debug) << "Cannot dump graph. gstreamer debug is not enabled."; +#else + qLog(Debug) << "Dumping pipeline graph"; + GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(pipeline_), GST_DEBUG_GRAPH_SHOW_ALL, "pipeline"); +#endif +} diff --git a/src/engines/gstenginepipeline.h b/src/engines/gstenginepipeline.h index f31bcec80..ba5dff8bb 100644 --- a/src/engines/gstenginepipeline.h +++ b/src/engines/gstenginepipeline.h @@ -106,6 +106,7 @@ class GstEnginePipeline : public QObject { QString source_device() const { return source_device_; } + void DumpGraph(); public slots: void SetVolumeModifier(qreal mod);