private OpenVideoResult InstanciateGenerator(SyntheticVideo video)
        {
            OpenVideoResult res = OpenVideoResult.NotSupported;

            generator   = new FrameGeneratorSyntheticVideo(video);
            res         = generator.Initialize(null);
            initialized = res == OpenVideoResult.Success;
            return(res);
        }
        private static SyntheticVideo Parse(XmlReader r)
        {
            SyntheticVideo video = new SyntheticVideo();

            r.MoveToContent();

            if (!(r.Name == "KinoveaSyntheticVideo"))
            {
                return(video);
            }

            r.ReadStartElement();
            r.ReadElementContentAsString("FormatVersion", "");

            while (r.NodeType == XmlNodeType.Element)
            {
                switch (r.Name)
                {
                case "ImageSize":
                    video.ImageSize = XmlHelper.ParseSize(r.ReadElementContentAsString());
                    break;

                case "FramesPerSecond":
                    video.FramePerSecond = r.ReadElementContentAsDouble();
                    break;

                case "DurationFrames":
                    video.DurationFrames = r.ReadElementContentAsInt();
                    break;

                case "BackgroundColor":
                    video.BackgroundColor = XmlHelper.ParseColor(r.ReadElementContentAsString(), Color.White);
                    break;

                case "FrameNumber":
                    video.FrameNumber = XmlHelper.ParseBoolean(r.ReadElementContentAsString());
                    break;

                case "Objects":
                    video.Objects = ParseObjects(r);
                    break;

                default:
                    // Skip unparsed nodes.
                    string unparsed = r.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KSV XML: {0}", unparsed);
                    break;
                }
            }

            r.ReadEndElement();

            return(video);
        }
        public override OpenVideoResult Open(string filePath)
        {
            this.filePath = filePath;
            this.video    = SyntheticVideoSerializer.Deserialize(filePath);

            if (video == null)
            {
                return(OpenVideoResult.NotSupported);
            }

            OpenVideoResult res = InstanciateGenerator(video);

            if (res != OpenVideoResult.Success)
            {
                return(res);
            }

            SetupVideoInfo();
            workingZone = new VideoSection(0, videoInfo.DurationTimeStamps - videoInfo.AverageTimeStampsPerFrame);

            return(res);
        }
        public static SyntheticVideo Deserialize(string file)
        {
            if (!File.Exists(file))
            {
                return(null);
            }

            XmlReaderSettings settings = new XmlReaderSettings();

            settings.IgnoreComments = true;
            settings.IgnoreProcessingInstructions = true;
            settings.IgnoreWhitespace             = true;
            settings.CloseInput = true;

            SyntheticVideo video = null;

            using (XmlReader r = XmlReader.Create(file, settings))
            {
                video = Parse(r);
            }

            return(video);
        }
 public FrameGeneratorSyntheticVideo(SyntheticVideo video)
 {
     this.video  = video;
     errorBitmap = new Bitmap(640, 480);
 }