public Gst.Pipeline BuildPipeline() { pipeline_builder = new StringBuilder(); var type = (PipelineType)settings.GetInt("Video", "Source"); switch (type) { case PipelineType.Test: BuildTestPipeline(); break; case PipelineType.Rtp: BuildRtpPipeline(); break; case PipelineType.V4l2: BuildV4l2SrcPipeline(); break; case PipelineType.Custom: BuildCustomPipeline(); break; default: throw new Exception("Unknown video source type"); } if (type != PipelineType.Custom) { pipeline_builder.Append(" ! textoverlay name=toverlay xpos=30 ypos=30 halignment=left valignment=top font-desc=\"arial 22\" ! autovideosink"); } string built_pipeline = pipeline_builder.ToString(); if (filename != String.Empty) { int index = built_pipeline.LastIndexOf(" ! autovideosink", StringComparison.Ordinal); if (index != -1 && built_pipeline.IndexOf("filesink") == -1) { built_pipeline = built_pipeline.Remove(index); ImproveFilename(); built_pipeline += " ! tee name=my_videosink ! queue ! autovideosink my_videosink. ! queue ! avenc_h263 ! avimux ! filesink location=" + filename; } } Logger.Instance.Log(LogLevel.Info, "Created pipeline: " + built_pipeline); return(Gst.Parse.Launch(built_pipeline) as Gst.Pipeline); }
void LoadSettings() { portNameEntry.Text = settings.GetString("Communication", "PortName"); baudRateEntry.Text = settings.GetInt("Communication", "BaudRate").ToString(); pipelineTextView.Buffer.Text = settings.GetString("Video", "CustomPipeline"); recordedFilenameEntry.Text = settings.GetString("Video", "Filename"); videoSourceComboBox.Active = settings.GetInt("Video", "Source"); testSourceSampleComboBox.Active = settings.GetInt("Video", "TestPattern"); portEntry.Text = settings.GetInt("Video", "UDPPort").ToString(); widthEntry.Text = settings.GetInt("Video", "Width").ToString(); heightEntry.Text = settings.GetInt("Video", "Height").ToString(); framerateEntry.Text = settings.GetInt("Video", "Framerate").ToString(); }