Ejemplo n.º 1
0
        protected override VideoFrame GetFrame(int n)
        {
            using var overlayStat = new FileOverlayStat(StatFile);
            using var sceneWriter = File.CreateText(SceneFile);

            var totalFrames = 0;
            var totalScenes = 1;
            var scene       = new List <OverlayInfo>();

            foreach (var frame in overlayStat.Frames)
            {
                totalFrames++;
                if (scene.Count > SceneMinLength && !OverlayUtils.CheckDev(scene.Append(frame), MaxDiffIncrease, false))
                {
                    scene.Clear();
                    totalScenes++;
                    sceneWriter.WriteLine(frame.FrameNumber);
                }
                else
                {
                    scene.Add(frame);
                }
            }

            return(GetSubtitledFrame($"Total scenes: {totalScenes}\nFrames processed: {totalFrames}"));
        }
        public void Generate()
        {
            var filters = typeof(OverlayFilter).Assembly
                          .GetCustomAttributes(typeof(AvisynthFilterClassAttribute), true)
                          .OfType <AvisynthFilterClassAttribute>()
                          .Where(p => typeof(OverlayFilter).IsAssignableFrom(p.FilterType));

            foreach (var filter in filters)
            {
                var annotatedProperties = OverlayUtils.GetAnnotatedProperties(filter.FilterType);
                var paramList           = annotatedProperties.Select(p => $"{TypeLabel(p.Item1.PropertyType)} {p.Item1.Name.ToLower()[0] + p.Item1.Name.Substring(1)}");
                var signature           = $"{filter.FilterName}({string.Join(", ", paramList)})";
                Console.WriteLine(signature);
                Console.WriteLine();
            }
        }