/// <summary>
        /// Add a plug-in to the video buffer's plug-in list
        /// </summary>
        public void RegisterPlugin(IVideoProcessor PlugIn)
        {
            if (ImageBuffers == null)
            {
                throw new Exception("Can't register a plug-in: video buffer has not been configured");
            }

            ImageBuffers.RegisterPlugin(PlugIn);
        }
 /// <summary>
 /// Clear all captured frames from all attached buffers.
 /// Buffers will refill if capture devices are running.
 /// </summary>
 public void ClearBuffers()
 {
     if (ImageBuffers != null)
     {
         ImageBuffers.WipeBuffer();
     }
     if (AudioBuffers != null)
     {
         AudioBuffers.WipeBuffer();
     }
 }
 /// <summary>
 /// Force a timed frame into the encoder's buffers.
 /// May cause unexpected operation. Use with caution!
 /// </summary>
 public void ForceInsertFrame(System.Drawing.Bitmap VideoFrame, double SimulatedCaptureTime)
 {
     if (ImageBuffers != null)
     {
         ImageBuffers.HandleCapturedFrame(this, new VideoDataEventArgs()
         {
             Frame = VideoFrame, CaptureTime = SimulatedCaptureTime
         });
     }
     else
     {
         throw new Exception("Can't send video frame to uninitialised buffer. Please include a video device in your config.");
     }
 }