private void CloseConfig()
 {
     reader.Stop();
     reader.Close();
     sink.Disconnect();
     writer.EndWriting();
 }
Exemple #2
0
        /// <summary>
        /// Close the output and release the variables
        /// </summary>
        public void Close()
        {
            if (m_Init)   //We are currently writing
            {
                if (m_pWMWriter != null)
                {
                    // Close the file
                    try
                    {
                        m_pWMWriter.EndWriting();
                    }
                    catch { }
                }
                m_Init = false;
            }

            if (m_pInputProps != null)
            {
                Marshal.ReleaseComObject(m_pInputProps);
                m_pInputProps = null;
            }
            if (m_pWMWriter != null)
            {
                Marshal.ReleaseComObject(m_pWMWriter);
                m_pWMWriter = null;
            }
        }
Exemple #3
0
        //------------------------------------------------------------------------------
        // Name: CWMVCopy::Process()
        // Desc: Processes the samples from the reader..
        //------------------------------------------------------------------------------
        protected void Process()
        {
            //
            // Begin writing
            //
            m_pWriter.BeginWriting();

            m_hr         = S_Ok;
            m_fEOF       = false;
            m_dwProgress = 0;
            m_hEvent.Reset();

            Console.WriteLine("            0%-------20%-------40%-------60%-------80%-------100%");
            Console.Write("Process:    ");

            //
            // Start the reader
            //
            m_pReader.Start(0, 0, 1.0f, IntPtr.Zero);

            //
            // Wait until the reading is finished
            //
            WaitForCompletion();
            Console.WriteLine("");

            //
            // End writing
            //
            m_pWriter.EndWriting();
        }
Exemple #4
0
        public override void Close()

        {
            try

            {
                if (m_Writer != null)

                {
                    m_Writer.EndWriting();

                    IWMWriterAdvanced wa = (IWMWriterAdvanced)m_Writer;

                    wa.RemoveSink((IWMWriterSink)this);

                    m_Writer = null;

                    m_Profile = null;
                }
            }

            finally

            {
                base.Close();
            }
        }
Exemple #5
0
 /// <summary>
 /// Stop the encoder
 /// </summary>
 public void Stop()
 {
     try
     {
         writer.EndWriting();
         writerAdvanced.RemoveSink(netSink);
         netSink.Close();
     }
     catch (Exception e)
     {
         eventLog.WriteEntry("Failed to stop: " + e.ToString(), EventLogEntryType.Error, 1000);
         Debug.WriteLine("Failed to stop: " + e.ToString());
     }
 }
Exemple #6
0
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    if (_writer != null)
                    {
                        try
                        {
                            _writer.EndWriting();

                            Logger.WriteLogMessage("Finished writing to output file.");
                        }
                        catch (COMException)
                        {
                            // error handle
                            throw;

                            //if (e.ErrorCode == Constants.NS_E_INVALID_DATA)
                            //{
                            //    Logger.WriteLogMessage("Received NS_E_INVALID_DATA error from IWMWriter.EndWriting.");
                            //}
                            //else
                            //{
                            //    Logger.WriteLogMessage("Received unknown HRESULT [" + String.Format("0x{0:X}", e.ErrorCode) + "] from IWMWriter.EndWriting.");
                            //}
                        }
                    }

                    Logger.WriteLogMessage("Completed dispose.");
                }
            }

            base.Dispose(disposing);
        }
        private void TestWrite()
        {
            Bitmap b = new Bitmap(@"c:\sga.png");

            Initialize(b);

            m_Writer.SetOutputFilename(sFileName);

            m_Writer.BeginWriting();
            INSSBuffer pSample = WriteOne(b);

            m_Writer.WriteSample(0, 1, SampleFlag.CleanPoint, pSample);
            m_Writer.Flush();
            TestAdvanced(b);
            m_Writer.EndWriting();
        }
        private void Test()
        {
            Bitmap b = new Bitmap(@"c:\sga.png");

            Initialize(b);

            m_Writer.SetOutputFilename(sFileName);

            m_Writer.BeginWriting();
            INSSBuffer pSample = WriteOne(b);

            m_Writer.WriteSample(0, 1, SampleFlag.CleanPoint, pSample);
            m_Writer.Flush();
            m_Writer.EndWriting();

            Debug.Assert(m_OnHeader && m_IsRealTime && m_AllocateDataUnit && m_OnDataUnit && m_OnEndWriting);
        }
Exemple #9
0
 public void Dispose()
 {
     try
     {
         if (m_Writer != null)
         {
             m_Writer.EndWriting();
             IWMWriterAdvanced wa = (IWMWriterAdvanced)m_Writer;
             wa.RemoveSink((IWMWriterSink)this);
             m_Writer  = null;
             m_Profile = null;
         }
     }
     finally
     {
         m_outputStream.Close();
     }
 }
        private void TestSink()
        {
            IWMWriterAdvanced pWriterA;

            pWriterA = m_Writer as IWMWriterAdvanced;
            pWriterA.AddSink(this);

            Bitmap b = new Bitmap(@"c:\sga.png");

            Initialize(b);

            m_Writer.SetOutputFilename(sFileName);

            m_Writer.BeginWriting();
            INSSBuffer pSample = WriteOne(b);

            m_Writer.WriteSample(0, 1, SampleFlag.CleanPoint, pSample);
            m_Writer.Flush();
            m_Writer.EndWriting();
        }
Exemple #11
0
 public override void Close()
 {
     try
     {
         if (m_Writer != null)
         {
             m_Writer.EndWriting();
             var wa = (IWMWriterAdvanced)m_Writer;
             wa.RemoveSink((IWMWriterSink)this);
             Marshal.ReleaseComObject(m_Writer);
             m_Writer  = null;
             m_Profile = null;
         }
     }
     finally
     {
         //Purposefully leaving the stream open since it gets passed in,
         //its the responsibility of the calling class to manage its own resources.
         base.Flush();
     }
 }
Exemple #12
0
        public void Close()
        {
            if (!this.closed)
            {
                try
                {
                    if (this.writingBegan)
                    {
                        m_pWriter.EndWriting();
                        this.writingBegan = false;
                    }
                }
                finally
                {
                    if (m_pWriter != null)
                    {
                        Marshal.ReleaseComObject(m_pWriter);
                        m_pWriter = null;
                    }
                }

                this.closed = true;
            }
        }
Exemple #13
0
        public static void CopyWmv(string inputFilePath, string outputFilePath, ulong startTime, long duration)
        {
            IWMWriterAdvanced writerAdvanced = null;
            IWMProfile        profile        = null;
            IWMStreamConfig   streamConfig   = null;
            uint streamCount = 0;
            uint inputCount  = 0;

            ushort[] streamNumbers = null;
            WMT_STREAM_SELECTION[] streamSelections = null;
            ulong      sampleTime, sampleDuration;
            uint       flags, outputNum;
            ushort     streamNum;
            INSSBuffer sample = null;

            IWMSyncReader reader = Helpers.CreateSyncReader(WMT_RIGHTS.WMT_RIGHT_NO_DRM);
            IWMWriter     writer = Helpers.CreateWriter();

            try
            {
                reader.Open(inputFilePath);

                Logger.WriteLogMessage("Opened file [" + inputFilePath + "] for reading.");

                profile = (IWMProfile)reader;

                profile.GetStreamCount(out streamCount);

                streamNumbers = new ushort[streamCount];

                streamSelections = new WMT_STREAM_SELECTION[streamCount];

                for (uint i = 0; i < streamCount; i++)
                {
                    profile.GetStream(i, out streamConfig);

                    streamConfig.GetStreamNumber(out streamNumbers[i]);

                    streamSelections[i] = WMT_STREAM_SELECTION.WMT_ON;

                    //
                    // Read compressed samples
                    //
                    reader.SetReadStreamSamples(streamNumbers[i], true);
                }

                //
                // select all streams
                //
                reader.SetStreamsSelected((ushort)streamCount, streamNumbers, streamSelections);

                writer.SetProfile(profile);

                writer.GetInputCount(out inputCount);

                for (uint i = 0; i < inputCount; i++)
                {
                    writer.SetInputProps(i, null);                     // write compressed samples
                }

                writer.SetOutputFilename(outputFilePath);

                Logger.WriteLogMessage("Set output filename [" + outputFilePath + "] for writing.");

                writerAdvanced = (IWMWriterAdvanced)writer;

                // Copy attributes avoided
                // Copy Codec Info avoided
                // Copy all scripts in the header avoided

                writer.BeginWriting();

                //
                // startTime, duration are in 100-nsec ticks
                //
                reader.SetRange(startTime, duration);                 // seek

                Logger.WriteLogMessage("Set range on reader, startTime [" + startTime + "], duration [" + duration + "].");

                for (uint streamsRead = 0; streamsRead < streamCount;)
                {
                    try
                    {
                        streamNum = 0;

                        reader.GetNextSample(0, out sample, out sampleTime, out sampleDuration, out flags, out outputNum, out streamNum);

                        Logger.WriteLogMessage("Grabbed next video sample, sampleTime [" + sampleTime + "], duration [" + sampleDuration + "], flags [" + flags + "], outputNum [" + outputNum + "], streamNum [" + streamNum + "].");

                        writerAdvanced.WriteStreamSample(streamNum, sampleTime, 0, sampleDuration, flags, sample);

                        Logger.WriteLogMessage("Wrote sample, sampleTime [" + sampleTime + "], duration [" + sampleDuration + "], flags [" + flags + "], outputNum [" + outputNum + "], streamNum [" + streamNum + "].");
                    }
                    catch (COMException e)
                    {
                        if (e.ErrorCode == Constants.NS_E_NO_MORE_SAMPLES)
                        {
                            streamsRead++;
                        }
                        else
                        {
                            throw;
                        }
                    }
                }

                writer.EndWriting();
            }
            finally
            {
                reader.Close();
            }
        }