private void fullFileScanner_ResultDetected(object sender, FullFileScanner.FileScanResult scanresult)
        {
            IResultNode result = scanresult.Result;

            if (scanresult.Result == null)
            {
                return;
            }

            // First make sure the result is valid.
            List <IResultNode> allKeyframes = ThumbUtil.GetAllKeyFrames(scanresult.Result.Children.ToArray());

            if (allKeyframes.Count > 0)
            {
                ProjectKeyframeOverviewRow row = CreateAndAddKeyframeRow(_projectFiles[_activeScanFileIndex]);
                row.KeyframesSourceFragment = scanresult.SourceFragment;

                if (_fullFileScanner.ScanNumCodecStreams > 0)
                {
                    int codecCountNotScanned = scanresult.AvailableCodecStreams - _fullFileScanner.ScanNumCodecStreams;
                    if (scanresult.AvailableCodecStreams > 1)
                    {
                        // Warn that only 1 codecstream in the container is scanned for this row
                        row.WarnMoreCodecStreams(codecCountNotScanned);
                    }
                }

                List <IResultNode> keyFrames = ThumbUtil.CheckMaxThumbCount(allKeyframes, NumThumbs);
                foreach (IResultNode frame in keyFrames)
                {
                    _ffmpegManager.AddToConvertQueue(frame, row);
                }
            }
            else
            {
                // Invalidate the result, the scanner will scan the next codecstream (when available).
                scanresult.IsValid = false;
            }
        }
        public void DisplayIFramesAsThumbs(IResultNode[] resultNodes)
        {
            _currentThumbSource = resultNodes;
            if (_videoKeyframesWindow == null)
            {
                return;
            }
            _ffmpegManager.NewQueue();

            List <IResultNode> allKeyframes = ThumbUtil.GetAllKeyFrames(resultNodes);
            int allKeyframesCount           = allKeyframes.Count;
            List <IResultNode> keyFrames    = ThumbUtil.CheckMaxThumbCount(allKeyframes, _maxThumbs);

            if (keyFrames.Count > 0)
            {
                _videoKeyframesWindow.NewConvertBatch(keyFrames.Count, allKeyframesCount);

                foreach (IResultNode frame in keyFrames)
                {
                    _ffmpegManager.AddToConvertQueue(frame, this);
                }
            }
        }