/// <summary>
        /// Picks a thumbnail of the current media element.
        /// </summary>
        /// <param name="mediaData">The media data o the current element.</param>
        public void PickThumbnail(MediaData mediaData, ThumbnailType thumbnailType)
        {
            if (mediaData != null)
            {
                IRCESmoothStreamingMediaPlugin mediaElement = mediaData.MediaPlugin as IRCESmoothStreamingMediaPlugin;

                if (mediaElement != null)
                {
                    this.StartThumbnailBuffer();
                    bool     thumbnailSeekCompleted = false;
                    TimeSpan currentPosition        = mediaElement.Position;

                    IRCESmoothStreamingMediaPlugin plugin = new RCESmoothStreamingMediaPlugin();

                    DispatcherTimer thubmnailTimer = new DispatcherTimer {
                        Interval = new TimeSpan(0, 0, 0, 5)
                    };

                    thubmnailTimer.Tick += (sender, e) =>
                    {
                        if (thumbnailSeekCompleted)
                        {
                            thumbnailSeekCompleted = false;
                            thubmnailTimer.Stop();
                            WriteableBitmap writeableBitmap =
                                new WriteableBitmap(plugin.VisualElement, null);

                            // writeableBitmap.Render(mediaElement, null);
                            writeableBitmap.Invalidate();
                            this.Model.SetThumbnail(writeableBitmap, thumbnailType);
                            this.PlayerContainerGrid.Children.Remove(plugin.VisualElement);
                            plugin.Unload();
                            plugin         = null;
                            thubmnailTimer = null;
                            this.EndThumbnailBuffer();
                        }
                    };

                    thubmnailTimer.Start();

                    plugin.ManifestReady += e => plugin.SelectMaxAvailableBitrateTracks("cameraAngle", "camera1");

                    plugin.MediaOpened += e =>
                    {
                        e.Position = currentPosition;
                        e.VisualElement.Visibility = Visibility.Collapsed;
                    };

                    plugin.SeekCompleted += (e, success) => thumbnailSeekCompleted = true;
                    plugin.Load();
                    plugin.AutoPlay             = false;
                    plugin.Volume               = 0;
                    plugin.IsMuted              = true;
                    plugin.VisualElement.Width  = mediaElement.VisualElement.ActualWidth;
                    plugin.VisualElement.Height = mediaElement.VisualElement.ActualHeight;
                    this.PlayerContainerGrid.Children.Add(plugin.VisualElement);

                    plugin.AdaptiveSource = mediaElement.AdaptiveSource;
                }
            }
        }