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);
}
}