/// <summary>
        /// Add frames to the queue
        /// </summary>
        /// <param name="frame">The frame to add</param>
        /// <returns>A task</returns>
        public void Enqueue(T frame)
        {
            if (!Timer.IsRunning)
            {
                return;
            }

            try
            {
                if (FrameQueue.IsCompleted || FrameQueue.IsAddingCompleted || cancellationToken.IsCancellationRequested)
                {
                    return;
                }
                FrameQueue.TryAdd(frame, -1, cancellationToken.Token);
            }
            catch (InvalidOperationException ex)
            {
                Debug.WriteLine("Failed to add to queue:" + ex.ToString());
            }
        }