Mandatory/Optional APIs and Features

Disclaimer

The specification implementer may implement any subset of the oneVPL specification. The specification makes no claim that that any codec, encoder, decoder or VPP filter or their underlying features are mandatory for the implementation. The oneVPL API is designed in a way so that the implementation user has several options to discover implementation capabilities:

  1. Before session creation user can get implementation capabilities by using MFXEnumImplementations() function to discover supported encoders/decoders or VPP filters with their supported color format and memory types.

  2. Once session is created, use can use Query functions to obtain low level implementation capabilities.

Functions must be exposed by any implementation

The Exported Functions/API Version table shows the list of functions exported by any implementation with corresponding API version. Implementation of all those functions is mandatory, while majority of them can return mfxStatus::MFX_ERR_NOT_IMPLEMENTED.

Exported Functions/API Version

Function

API Version

MFXInit

1.0

MFXClose

1.0

MFXQueryIMPL

1.0

MFXQueryVersion

1.0

MFXJoinSession

1.0

MFXDisjoinSession

1.0

MFXCloneSession

1.0

MFXSetPriority

1.0

MFXGetPriority

1.0

MFXVideoCORE_SetFrameAllocator

1.0

MFXVideoCORE_SetHandle

1.0

MFXVideoCORE_GetHandle

1.0

MFXVideoCORE_SyncOperation

1.0

MFXVideoENCODE_Query

1.0

MFXVideoENCODE_QueryIOSurf

1.0

MFXVideoENCODE_Init

1.0

MFXVideoENCODE_Reset

1.0

MFXVideoENCODE_Close

1.0

MFXVideoENCODE_GetVideoParam

1.0

MFXVideoENCODE_GetEncodeStat

1.0

MFXVideoENCODE_EncodeFrameAsync

1.0

MFXVideoDECODE_Query

1.0

MFXVideoDECODE_DecodeHeader

1.0

MFXVideoDECODE_QueryIOSurf

1.0

MFXVideoDECODE_Init

1.0

MFXVideoDECODE_Reset

1.0

MFXVideoDECODE_Close

1.0

MFXVideoDECODE_GetVideoParam

1.0

MFXVideoDECODE_GetDecodeStat

1.0

MFXVideoDECODE_SetSkipMode

1.0

MFXVideoDECODE_GetPayload

1.0

MFXVideoDECODE_DecodeFrameAsync

1.0

MFXVideoVPP_Query

1.0

MFXVideoVPP_QueryIOSurf

1.0

MFXVideoVPP_Init

1.0

MFXVideoVPP_Reset

1.0

MFXVideoVPP_Close

1.0

MFXVideoVPP_GetVideoParam

1.0

MFXVideoVPP_GetVPPStat

1.0

MFXVideoVPP_RunFrameVPPAsync

1.0

MFXVideoVPP_RunFrameVPPAsyncEx

1.10

MFXInitEx

1.14

MFXVideoCORE_QueryPlatform

1.19

MFXMemory_GetSurfaceForVPP

2.0

MFXMemory_GetSurfaceForEncode

2.0

MFXMemory_GetSurfaceForDecode

2.0

MFXQueryImplsDescription

2.0

MFXReleaseImplDescription

2.0

Mandatory API for each implementation

Each implementation must implement following functions:

  1. Functions required for the dispatcher to create session: MFXInitEx(), MFXClose().

  2. Functions required for the dispatcher to return implementation capabilities: MFXQueryImplsDescription(), MFXReleaseImplDescription().

  3. If implementation implements any encoder, than those functions are mandatory for the implementation: MFXVideoENCODE_Init(), MFXVideoENCODE_Close(), MFXVideoENCODE_Query(), MFXVideoENCODE_EncodeFrameAsync().

  4. If implementation implements any decoder, than those functions are mandatory for the implementation: MFXVideoDECODE_Init(), MFXVideoDECODE_Close(), MFXVideoDECODE_Query(), MFXVideoDECODE_DecodeFrameAsync().

  5. If implementation implements any VPP filter, than those functions are mandatory for the implementation: MFXVideoVPP_Init(), MFXVideoVPP_Close(), MFXVideoVPP_Query(), MFXVideoVPP_RunFrameVPPAsync().

  6. Function required for the asynchronous operations synchronization MFXVideoCORE_SyncOperation() is mandatory for the implementation.

  7. Any other functions or extension buffers are optional for the implementation.

If implementation implements either decoder or encoder or VPP filter, its capabilities must be provided by using mfxImplDescription structure, which lists mandatory capabilities of the implementation.

Note

Mandatory function must have implementation and must not return MFX_ERR_NOT_IMPLEMENTED status.