コード例 #1
0
 private void AddKeyFramesToList(IResultNode node, KeyFrameList keyFrames)
 {
     if (node.IsKeyframe())
     {
         ICodecDetector detector = node.Detectors.Where(d => d is ICodecDetector).SingleOrDefault() as ICodecDetector;
         keyFrames.Add(new KeyFrame(BuildRangeList(detector.GetVideoHeaders(node)), BuildRangeList(detector.GetVideoData(node))));
     }
     else
     {
         foreach (var childNode in node.Children)
         {
             AddKeyFramesToList(childNode, keyFrames);
         }
     }
 }
コード例 #2
0
        private static IEnumerable <IResultNode> FindKeyFrame(IResultNode node)
        {
            if (node.Detectors.Any(d => node.IsKeyframe()))
            {
                yield return(node);
            }

            foreach (IResultNode childNode in node.Children)
            {
                foreach (IResultNode keyFrameNode in FindKeyFrame(childNode))
                {
                    yield return(keyFrameNode);
                }
            }
            yield break;
        }
コード例 #3
0
        private static IResultNode FindKeyFrame(IResultNode node)
        {
            if (node.Detectors.Any(d => node.IsKeyframe()))
            {
                return(node);
            }

            foreach (IResultNode childNode in node.Children)
            {
                IResultNode keyFrameNode = FindKeyFrame(childNode);
                if (keyFrameNode != null)
                {
                    return(keyFrameNode);
                }
            }
            return(null);
        }
コード例 #4
0
        private static IResultNode RecursiveKeyframeLookup(IResultNode node)
        {
            if (node.IsKeyframe())
            {
                return(node);
            }

            foreach (IResultNode childNode in node.Children)
            {
                IResultNode childResult = RecursiveKeyframeLookup(childNode);
                if (childResult != null)
                {
                    return(childResult);
                }
            }
            return(null);
        }
        public void AskChangeDefaultCodecHeader(FFmpegResult ffmpegResult, IWin32Window windowOwner)
        {
            if (ffmpegResult.Bitmap == null && !IsWindowOpen() && !_backgroundFileScanner.IsBusy)
            {
                // Check if it is a key frame. When true we should be able to decode it.
                IResultNode resultNode = ffmpegResult.SourcePacket;

                if (resultNode != null && resultNode.IsKeyframe())
                {
                    if (DialogResult.Yes ==
                        MessageBox.Show(
                            "Defraser couldn't detect the video headers of this frame. Do you want to use a reference header to decode this frame?",
                            "Header Not Found.", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
                            MessageBoxDefaultButton.Button2))
                    {
                        EditDefaultCodecHeader editDefaultCodecHeader = CreateEditDefaultCodecHeaderWindow();
                        editDefaultCodecHeader.SelectCodec(ffmpegResult.SourcePacket.DataFormat);
                        editDefaultCodecHeader.ShowDialog(windowOwner);
                    }
                }
            }
        }