예제 #1
0
파일: avsW.cs 프로젝트: nuukcillo/PerrySub
        private void RefreshImageAVS()
        {
            string tmp = GetTempFileName();

            AVSTextBox a = GetAVSTextBox(tabControl.SelectedIndex);
            a.SaveFile(tmp, RichTextBoxStreamType.PlainText);
            try
            {
                File.SetAttributes(tmp, FileAttributes.Hidden);
            }
            catch { }

            try
            {

                TabPage t = (TabPage)tabControl.Controls[tabControl.SelectedIndex];
                int k = t.Handle.ToInt32();

                AviSynthScriptEnvironment env = new AviSynthScriptEnvironment();
                AviSynthClip clip = env.OpenScriptFile(tmp);

                if (AVSEnvironments.ContainsKey(k))
                    AVSEnvironments.Remove(k);
                AVSEnvironments.Add(k, env);

                if (AVSClips.ContainsKey(k))
                {
                    AviSynthClip old_clip = (AviSynthClip)AVSClips[k];
                    old_clip.cleanup(false);
                    AVSClips.Remove(k);
                }
                AVSClips.Add(k, clip);

                if (AVSActualFrames.ContainsKey(k))
                    AVSActualFrames.Remove(k);
                AVSActualFrames.Add(k, 0);

                DateTime inicio = DateTime.Now;
                PictureBox p = GetPictureBox(tabControl.SelectedIndex);
                Bitmap frame = AviSynthFunctions.getBitmapFromFrame(clip, 0, 0);
                p.Size = frame.Size;
                p.Image = frame;
                DateTime fin = DateTime.Now;
                TimeSpan tiempo = fin - inicio;
                int t_millis = tiempo.Milliseconds;
                label1.Text = "Tiempo de carga: " + t_millis.ToString() + "ms";

                updateFromAviSynthClip(clip);

                /*
                int tiempo_est = (t_millis * clip.num_frames);
                long ticks = tiempo_est * 10000000;
                TimeSpan t_est = new TimeSpan(ticks);
                label2.Text = "Tiempo estimado: " + t_est.ToString();
                */
            }
            catch (AviSynthException ase)
            {
                mW.errorMsg(ase.Message);
            }
        }