Media Foundation Interfaces

Interfaces

Name Description
IMF2DBuffer Represents a buffer that contains a two-dimensional surface, such as a video frame.
IMF2DBuffer2 Represents a buffer that contains a two-dimensional surface, such as a video frame.
IMFActivate Enables the application to defer the creation of an object. This interface is exposed by activation objects.
IMFAsyncCallback Callback interface to notify the application when an asynchronous method completes.
IMFAsyncResult Provides information about the result of an asynchronous operation.
IMFAttributes Provides a generic way to store key/value pairs on an object. The keys are GUIDs, and the values can be any of the following data types: UINT32, UINT64, double, GUID, wide-character string, byte array, or IUnknown pointer. The standard implementation of this interface holds a thread lock while values are added, deleted, or retrieved.For a list of predefined attribute GUIDs, see Media Foundation Attributes. Each attribute GUID has an expected data type. The various “set” methods in IMFAttributes do not validate the type against the attribute GUID. It is the application’s responsibility to set the correct type for the attribute.To create an empty attribute store, call MFCreateAttributes.
IMFByteStream Represents a byte stream from some data source, which might be a local file, a network file, or some other source. The IMFByteStream interface supports the typical stream operations, such as reading, writing, and seeking.
IMFByteStreamBuffering Controls how a byte stream buffers data from a network. To get a pointer to this interface, call QueryInterface on the byte stream object.
IMFByteStreamCacheControl Controls how a network byte stream transfers data to a local cache. Optionally, this interface is exposed by byte streams that read data from a network, for example, through HTTP. To get a pointer to this interface, call QueryInterface on the byte stream object.
IMFByteStreamCacheControl2 Controls how a network byte stream transfers data to a local cache. This interface extends the IMFByteStreamCacheControl interface.
IMFByteStreamHandler Creates a media source from a byte stream.
IMFByteStreamTimeSeek Seeks a byte stream by time position.
IMFClock Provides timing information from a clock in Microsoft Media Foundation.Clocks and some media sinks expose this interface through QueryInterface.
IMFClockStateSink Receives state-change notifications from the presentation clock.
IMFCollection Represents a generic collection of IUnknown pointers.
IMFDXGIBuffer Represents a buffer that contains a Microsoft DirectX Graphics Infrastructure (DXGI) surface.
IMFDXGIDeviceManager Enables two threads to share the same Microsoft Direct3D 11 device.
IMFGetService Queries an object for a specified service interface.
IMFInputTrustAuthority Enables other components in the protected media path (PMP) to use the input protection system provided by an input trust authorities (ITA). An ITA is a component that implements an input protection system for media content. ITAs expose the IMFInputTrustAuthority interface.An ITA translates policy from the content’s native format into a common format that is used by other PMP components. It also provides a decrypter, if one is needed to decrypt the stream.The topology contains one ITA instance for every protected stream in the media source. The ITA is obtained from the media source by calling IMFTrustedInput::GetInputTrustAuthority.
IMFMediaBuffer Represents a block of memory that contains media data. Use this interface to access the data in the buffer.
IMFMediaEvent Represents an event generated by a Media Foundation object. Use this interface to get information about the event.To get a pointer to this interface, call IMFMediaEventGenerator::BeginGetEvent or IMFMediaEventGenerator::GetEvent on the event generator.
IMFMediaEventGenerator Retrieves events from any Media Foundation object that generates events.
IMFMediaEventQueue Provides an event queue for applications that need to implement the IMFMediaEventGenerator interface. This interface is exposed by a helper object that implements an event queue. If you are writing a component that implements the IMFMediaEventGenerator interface, you can use this object in your implementation. The event queue object is thread safe and provides methods to queue events and to pull them from the queue either synchronously or asynchronously. To create the event queue object, call MFCreateEventQueue.
IMFMediaSink Implemented by media sink objects. This interface is the base interface for all Media Foundation media sinks. Stream sinks handle the actual processing of data on each stream.
IMFMediaSinkPreroll Enables a media sink to receive samples before the presentation clock is started.To get a pointer to this interface, call QueryInterface on the media sink.
IMFMediaSource Implemented by media source objects.Media sources are objects that generate media data. For example, the data might come from a video file, a network stream, or a hardware device, such as a camera. Each media source contains one or more streams, and each stream delivers data of one type, such as audio or video.
IMFMediaSourceEx Extends the IMFMediaSource interface to provide additional capabilities for a media source.To get a pointer to this interface, call QueryInterface on the media source.
IMFMediaStream Represents one stream in a media source.
IMFMediaType Represents a description of a media format.
IMFMediaTypeHandler Gets and sets media types on an object, such as a media source or media sink.
IMFMetadata Manages metadata for an object. Metadata is information that describes a media file, stream, or other content. Metadata consists of individual properties, where each property contains a descriptive name and a value. A property may be associated with a particular language.To get this interface from a media source, use the IMFMetadataProvider interface.
IMFMetadataProvider Gets metadata from a media source or other object.If a media source supports this interface, it must expose the interface as a service. To get a pointer to this interface from a media source, call IMFGetService::GetService. The service identifier is MF_METADATA_PROVIDER_SERVICE. Other types of object can expose this interface through QueryInterface.Use this interface to get a pointer to the IMFMetadata interface.
IMFOutputPolicy Encapsulates a usage policy from an input trust authority (ITA). Output trust authorities (OTAs) use this interface to query which protection systems they are required to enforce by the ITA.
IMFOutputSchema Encapsulates information about an output protection system and its corresponding configuration data.
IMFOutputTrustAuthority Encapsulates the functionality of one or more output protection systems that a trusted output supports. This interface is exposed by output trust authority (OTA) objects. Each OTA represents a single action that the trusted output can perform, such as play, copy, or transcode. An OTA can represent more than one physical output if each output performs the same action.
IMFPMPClientApp Provides a mechanism for a media source to implement content protection functionality in a Microsoft Store apps.
IMFPMPHostApp Allows a media source to create a Windows Runtime object in the Protected Media Path (PMP) process.
IMFPresentationClock Represents a presentation clock, which is used to schedule when samples are rendered and to synchronize multiple streams.
IMFPresentationDescriptor Describes the details of a presentation. A presentation is a set of related media streams that share a common presentation time.
IMFPresentationTimeSource Provides the clock times for the presentation clock.
IMFProtectedEnvironmentAccess Provides a method that allows content protection systems to perform a handshake with the protected environment. This is needed because the CreateFile and DeviceIoControl APIs are not available to Microsoft Store apps.
IMFQualityAdvise Enables the quality manager to adjust the audio or video quality of a component in the pipeline.This interface is exposed by pipeline components that can adjust their quality. Typically it is exposed by decoders and stream sinks. For example, the enhanced video renderer (EVR) implements this interface. However, media sources can also implement this interface.To get a pointer to this interface from a media source, call IMFGetService::GetService with the service identifier MF_QUALITY_SERVICES. For all other pipeline objects (transforms and media sinks), call QueryInterface.
IMFQualityAdvise2 Enables a pipeline object to adjust its own audio or video quality, in response to quality messages.
IMFQualityAdviseLimits Queries an object for the number of quality modes it supports. Quality modes are used to adjust the trade-off between quality and speed when rendering audio or video.The default presenter for the enhanced video renderer (EVR) implements this interface. The EVR uses the interface to respond to quality messages from the quality manager.
IMFRateControl Gets or sets the playback rate.
IMFRateSupport Queries the range of playback rates that are supported, including reverse playback.To get a pointer to this interface, call IMFGetService::GetService with the service identifier MF_RATE_CONTROL_SERVICE.
IMFReadWriteClassFactory Creates an instance of either the sink writer or the source reader.
IMFRealTimeClientEx Notifies a pipeline object to register itself with the Multimedia Class Scheduler Service (MMCSS). This interface is a replacement for the IMFRealTimeClient interface.
IMFSample Represents a media sample, which is a container object for media data. For video, a sample typically contains one video frame. For audio data, a sample typically contains multiple audio samples, rather than a single sample of audio.A media sample contains zero or more buffers. Each buffer manages a block of memory, and is represented by the IMFMediaBuffer interface. A sample can have multiple buffers. The buffers are kept in an ordered list and accessed by index value. It is also valid to have an empty sample with no buffers.
IMFSampleOutputStream Writes media samples to a byte stream.
IMFSampleProtection Provides encryption for media data inside the protected media path (PMP).
IMFSchemeHandler Creates a media source or a byte stream from a URL.
IMFShutdown Exposed by some Media Foundation objects that must be explicitly shut down.
IMFSignedLibrary Provides a method that allows content protection systems to get the procedure address of a function in the signed library. This method provides the same functionality as GetProcAddress which is not available to Microsoft Store apps.
IMFSinkWriter Implemented by the Microsoft Media Foundation sink writer object.
IMFSinkWriterCallback Callback interface for the Microsoft Media Foundation sink writer.
IMFSinkWriterEx Extends the IMFSinkWriter interface.The Sink Writer implements this interface in Windows 8. To get a pointer to this interface, call QueryInterface on the Sink Writer.
IMFSourceReader Implemented by the Microsoft Media Foundation source reader object.
IMFSourceReaderCallback Callback interface for the Microsoft Media Foundation source reader.
IMFSourceReaderEx Extends the IMFSourceReader interface.The Source Reader implements this interface in Windows 8. To get a pointer to this interface, call QueryInterface on the Source Reader.
IMFSourceResolver Creates a media source from a URL or a byte stream. The Source Resolver implements this interface. To create the source resolver, call MFCreateSourceResolver function.
IMFStreamDescriptor Gets information about one stream in a media source.
IMFStreamingSinkConfig Passes configuration information to the media sinks that are used for streaming the content. Optionally, this interface is supported by media sinks. The built-in ASF streaming media sink and the MP3 media sink implement this interface.
IMFStreamSink Represents a stream on a media sink object.
IMFSystemId Provides a method that retireves system id data.
IMFTrackedSample Tracks the reference counts on a video media sample. Video samples created by the MFCreateVideoSampleFromSurface function expose this interface.
IMFTransform Implemented by all Media Foundation Transforms (MFTs).
IMFTrustedInput Implemented by components that provide input trust authorities (ITAs). This interface is used to get the ITA for each of the component’s streams.
IMFTrustedOutput Implemented by components that provide output trust authorities (OTAs). Any Media Foundation transform (MFT) or media sink that is designed to work within the protected media path (PMP) and also sends protected content outside the Media Foundation pipeline must implement this interface.The policy engine uses this interface to negotiate what type of content protection should be applied to the content. Applications do not use this interface directly.
IMFVideoSampleAllocator Allocates video samples for a video media sink.The stream sinks on the enhanced video renderer (EVR) expose this interface as a service. To obtain a pointer to the interface, call IMFGetService::GetService using the service identifier MR_VIDEO_ACCELERATION_SERVICE. Custom media sinks can also implement this interface. The Media Session uses this interface to allocate samples for the EVR, unless the upstream decoder supports DirectX Video Acceleration (DXVA).
IMFVideoSampleAllocatorCallback Enables an application to track video samples allocated by the enhanced video renderer (EVR).The stream sinks on the EVR expose this interface as a service. To get a pointer to the interface, call the IMFGetService::GetService method, using the MR_VIDEO_ACCELERATION_SERVICE service identifier.
IMFVideoSampleAllocatorEx Allocates video samples that contain Microsoft Direct3D 11 texture surfaces.
IMFVideoSampleAllocatorNotify The callback for the IMFVideoSampleAllocatorCallback interface.
IXboxColorConverter Interface for Xbox exclusive applications to convert a texture from one color space to another color space. Supports NV12->RGB and RGB->NV12 conversion.
IXboxNV12MFSampleRenderer Interface for Xbox exclusive applications to render a Media Foundation decoded sample (DXVA buffer in NV12 colorspace) in the current render target.