예제 #1
0
        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();
        }