using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; namespace NAudio.MediaFoundation { /// /// Implemented by the Microsoft Media Foundation sink writer object. /// [ComImport, Guid("3137f1cd-fe5e-4805-a5d8-fb477448cb3d"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IMFSinkWriter { /// /// Adds a stream to the sink writer. /// void AddStream([In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pTargetMediaType, out int pdwStreamIndex); /// /// Sets the input format for a stream on the sink writer. /// void SetInputMediaType([In] int dwStreamIndex, [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pInputMediaType, [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pEncodingParameters); /// /// Initializes the sink writer for writing. /// void BeginWriting(); /// /// Delivers a sample to the sink writer. /// void WriteSample([In] int dwStreamIndex, [In, MarshalAs(UnmanagedType.Interface)] IMFSample pSample); /// /// Indicates a gap in an input stream. /// void SendStreamTick([In] int dwStreamIndex, [In] long llTimestamp); /// /// Places a marker in the specified stream. /// void PlaceMarker([In] int dwStreamIndex, [In] IntPtr pvContext); /// /// Notifies the media sink that a stream has reached the end of a segment. /// void NotifyEndOfSegment([In] int dwStreamIndex); /// /// Flushes one or more streams. /// void Flush([In] int dwStreamIndex); /// /// (Finalize) Completes all writing operations on the sink writer. /// void DoFinalize(); /// /// Queries the underlying media sink or encoder for an interface. /// void GetServiceForStream([In] int dwStreamIndex, [In] ref Guid guidService, [In] ref Guid riid, out IntPtr ppvObject); /// /// Gets statistics about the performance of the sink writer. /// void GetStatistics([In] int dwStreamIndex, [In, Out] MF_SINK_WRITER_STATISTICS pStats); } }