/// <summary>
        /// Create and initialise a new encoder job with the given config
        /// </summary>
        public EncoderController(Configuration Config)
        {
            UseAbsoluteTime         = false;
            DryRun                  = false;
            AbandonTime             = 0.0;
            MinimumBufferPopulation = 1;
            if (Config == null)
            {
                throw new ArgumentException("Config must not be null", "Config");
            }
            config = Config;
            if (config.Video.InputFrameRate < 1)
            {
                config.Video.InputFrameRate = 1;
            }
            EncoderRunning = false;

            outputRouter = new Outputs.OutputRouter(config);
            CaptureSetup();
            EncoderSetup();
            outputRouter.Prepare(Packages);

            EnableOutput           = true;
            CleanupDeliveredChunks = true;
        }
        /// <summary>
        /// Create and initialise a new encoder job with the given config
        /// </summary>
        public EncoderController(Configuration Config)
        {
            UseAbsoluteTime = false;
            DryRun = false;
            AbandonTime = 0.0;
            MinimumBufferPopulation = 1;
            if (Config == null) throw new ArgumentException("Config must not be null", "Config");
            config = Config;
            if (config.Video.InputFrameRate < 1) config.Video.InputFrameRate = 1;
            EncoderRunning = false;

            outputRouter = new Outputs.OutputRouter(config);
            CaptureSetup();
            EncoderSetup();
            outputRouter.Prepare(Packages);

            EnableOutput = true;
            CleanupDeliveredChunks = true;
        }