Emby Emby Emby Learn
  • Emby Home
  • Video
  • Audio
  • Media Files
    • Subtitles and captions
    • Photos and images
    • Metadata and discovery
    • Libraries and media collections
    • Playback and streaming
    • Media hardware acceleration
    • Displays and AV connections
    • Live TV and recording
  1. Emby Learn
  2. Media hardware acceleration
  3. Media engines and acceleration interfaces
  4. Platform media APIs
  5. Windows
  6. Media Foundation transforms
Search Results for

    Show / Hide Table of Contents

    Media Foundation transforms and processing state

    A Media Foundation transform is a Windows media-processing component whose negotiated types, input/output state and resource context determine its decoding, encoding or processing role.

    A Media Foundation transform, or MFT, is a Windows media-processing component. The same component model can represent a decoder, encoder or picture-processing operation.

    The label describes an interface contract. Its actual implementation and device/resource context determine where the work runs.

    Media types define the transformation

    A transform negotiates the media types it accepts and produces. A decoder accepts encoded input and produces pictures; an encoder accepts suitable pictures and produces compressed output.

    An original Media Foundation diagram connects separate decoder, processor and encoder transforms with negotiated media types.

    Transform role Relationship
    Decoder Encoded configuration to accepted picture representation
    Processor One picture configuration to another
    Encoder Prepared pictures to selected compressed output

    The negotiated output must fit the next consumer. A decoded 10-bit picture format and an encoder expecting another format can need a suitable processing step between them.

    The transform framework coordinates those types; it does not make every proposed connection valid.

    A type must fit both sides of the connection

    An original negotiation model makes the cross-stage requirement concrete:

    Component Accepted input Offered output
    Decoder Selected encoded video NV12 or P010
    Processor NV12 NV12 or BGRA
    Encoder NV12 Selected compressed output

    The compatible route through these declarations uses NV12 from decoder to processor and NV12 from processor to encoder.

    Selecting P010 from the decoder would not fit this processor's declared input. Selecting BGRA from the processor would not fit this encoder's declared input. The existence of each individual component does not repair either connection.

    These are invented capability sets, not a Media Foundation enumeration. They illustrate how negotiation chooses a complete relationship rather than independently choosing a preferred format at every stage.

    The pipeline can select another processor or explicitly add an appropriate conversion when supported. That changes its negotiated route and resource requirements; it should not silently reinterpret P010 or BGRA bytes as NV12.

    Synchronous input/output state has backpressure

    The basic processing model exposes ProcessInput() and ProcessOutput(). Their results tell the caller whether another input can be accepted or whether output needs handling.

    This original synchronous trace illustrates the relationship:

    ProcessInput(A)  -> accepted
    ProcessInput(B)  -> MF_E_NOTACCEPTING
    ProcessOutput() -> completed result available
    ProcessInput(B)  -> accepted
    ProcessOutput() -> MF_E_TRANSFORM_NEED_MORE_INPUT
    

    The trace is a model, not an actual COM call sequence. It preserves B when the first attempt could not accept it.

    MF_E_NOTACCEPTING can describe a state that needs output progress, rather than an unsupported codec. MF_E_TRANSFORM_NEED_MORE_INPUT says that this output request needs further input under the transform's current processing state.

    The application interprets status, output data and the negotiated contract together. One accepted input does not universally promise exactly one immediately available output.

    Asynchronous transforms have another scheduling contract

    Media Foundation also provides an asynchronous processing model. Hardware MFTs have documented asynchronous and dynamic-format requirements.

    The caller follows event/readiness rules appropriate to that model rather than blindly using a synchronous polling loop. A host call returning and a media operation finishing can occur at different times.

    This lets queued work proceed while the application performs other coordination. The input and output resources still need valid ownership through their consumers' use.

    A software component can coordinate hardware decoding

    Microsoft's D3D11 decoder-integration documentation calls the codec-facing component a software decoder while the driver-backed decoder device performs accelerated reconstruction.

    That illustrates why component implementation, registered hardware-MFT category and execution of a particular media operation are different facts. An MFT name alone should not be read as a CPU-utilization measurement.

    A suitable device manager and decoder configuration connect that component to Direct3D resources. The resulting pictures still need compatible downstream types and context.

    A format change propagates to consumers

    A source or transform can change its output picture configuration. The application needs to establish the new accepted types and resource requirements with the affected pipeline.

    A different dimension or surface format can require new buffers or a different next-stage configuration. Continuing to interpret the new output using the old assumptions can make an otherwise supported source fail downstream.

    See Also

    • Direct3D 11 video acceleration (D3D11VA)
    • DirectX Video Acceleration (DXVA2)
    • Hardware decoding and software decoding
    • Hardware encoding and software encoding
    • How a transcoding pipeline works

    References

    • Microsoft: Media Foundation transform model
    • Microsoft: Hardware Media Foundation transforms
    • Microsoft: IMFTransform ProcessInput
    • Microsoft: IMFTransform ProcessOutput
    • Microsoft: Direct3D 11 decoding in Media Foundation
    On this Page
    2026 © EMBY LLC. Please see our terms of use and privacy policy.
    Back to Top