Esempio n. 1
0
 private void StartConvThread_Click(object sender, EventArgs e)
 {
     Settings.Interrupt = false;
     if (File.Exists(Data.MIDIToLoad))
     {
         if (IntPtr.Size == 4)
         {
             FileInfo MIDISizeCheck = new System.IO.FileInfo(Data.MIDIToLoad);
             if (MIDISizeCheck.Length >= 1073741824)
             {
                 MessageBox.Show("The MIDI is too big.\n\nConsider using the 64-bit release.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 return;
             }
         }
         CheckFFMpegFirst();
         SaveMovieTo.InitialDirectory = Properties.Settings.Default.LastExportFolder;
         SaveMovieTo.FileName         = String.Format("{0}.mov", Path.GetFileNameWithoutExtension(Data.MIDIToLoad));
         if (SaveMovieTo.ShowDialog() == DialogResult.OK)
         {
             Data.MovieOutput = SaveMovieTo.FileName;
             Properties.Settings.Default.LastExportFolder = Path.GetDirectoryName(SaveMovieTo.FileName);
             Properties.Settings.Default.Save();
             try { FrameConverter.RunWorkerAsync(); } catch { MessageBox.Show("The generator is busy.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
         }
     }
     else
     {
         MessageBox.Show("Invalid MIDI file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// <see cref="sws_getCachedContext(SwsContext*, int, int, AVPixelFormat, int, int, AVPixelFormat, int, SwsFilter*, SwsFilter*, double*)"/>
        /// <see cref="sws_scale(SwsContext*, byte*[], int[], int, int, byte*[], int[])"/>
        /// </summary>
        public static IEnumerable <Frame> ConvertFrames(this CodecContext c, IEnumerable <Frame> sourceFrames, ScaleFlag flags = ScaleFlag.Bilinear)
        {
            using var destFrame = c.CreateFrame();
            int pts = 0;

            if (c.Codec.Type == MediaType.Video)
            {
                using var frameConverter = new FrameConverter();
                foreach (var sourceFrame in sourceFrames)
                {
                    frameConverter.ConvertFrame(sourceFrame, destFrame, flags);
                    destFrame.Pts = pts++;
                    yield return(destFrame);
                }
            }
            else if (c.Codec.Type == MediaType.Audio)
            {
                using var frameConverter = new SampleConverter();
                foreach (var sourceFrame in sourceFrames)
                {
                    frameConverter.ConvertFrame(destFrame, sourceFrame);
                    destFrame.Pts = pts += c.FrameSize;
                    yield return(destFrame);
                }
            }
        }
        private static void WriteImageTo(Frame frame, FormatContext fc)
        {
            Codec codec       = Codec.FindEncoder(fc.OutputFormat.VideoCodec);
            var   mediaStream = new MediaStream(fc);

            using CodecContext codecContext = new CodecContext(codec)
                  {
                      PixelFormat = codec.PixelFormats.First(),
                      Width       = frame.Width,
                      Height      = frame.Height,
                      TimeBase    = new MediaRational(1, 25),
                      Flags       = fc.OutputFormat.Flags.HasFlag(FormatOutputFlag.Globalheader) ? CodecFlag.GlobalHeader : CodecFlag.None,
                  };
            codecContext.Open(codec);
            mediaStream.Codecpar.CopyFrom(codecContext);

            if ((PixelFormat)frame.Format == codecContext.PixelFormat)
            {
                WriteAction(frame, fc, codecContext);
            }
            else
            {
                using var tempFrame      = Frame.CreateWritableVideo(frame.Width, frame.Height, codecContext.PixelFormat);
                using var frameConverter = new FrameConverter();
                frameConverter.ConvertFrame(frame, tempFrame);
                WriteAction(tempFrame, fc, codecContext);
            }
        }
Esempio n. 4
0
 void fallUnderGravity()
 {
     moveDirection.y -= gravity * (1 + FrameConverter.convertFrameRate(airborneFramesTime) / floatingCoeficient) * Time.deltaTime;
     if (moveDirection.y < -limitFallSpeed)
     {
         moveDirection.y = -limitFallSpeed;
     }
 }
Esempio n. 5
0
 bool isFalling(float y)
 {
     if (moveDirection.y - gravity * (1 + FrameConverter.convertFrameRate(airborneFramesTime) / floatingCoeficient) * Time.deltaTime < 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Esempio n. 6
0
 public static void OutputAsPhaseSpace(string inputFile, string outputFile, decimal offset)
 {
     using (TrcReader reader = new TrcReader(inputFile)) {
         using (PhaseSpaceDataWriter writer = new PhaseSpaceDataWriter(outputFile)) {
             decimal ratio = 1 / decimal.Parse(reader.Header.DataRate);
             while (!reader.EndOfStream)
             {
                 TrcFrame trc = reader.ReadFrame();
                 trc = trc.TrimUnnamed(reader.Header);
                 PhaseSpaceFrame motion = FrameConverter.GetMotionFrame(trc);
                 motion.Time = offset + ratio * writer.Frames;
                 writer.WriteFrame(motion);
             }
         }
     }
 }