private void CloseConfig() { reader.Stop(); reader.Close(); sink.Disconnect(); writer.EndWriting(); }
/// <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; } }
//------------------------------------------------------------------------------ // 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(); }
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(); } }
/// <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()); } }
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); }
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(); }
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(); } }
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; } }
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(); } }