diff --git a/latest/.buildinfo b/latest/.buildinfo deleted file mode 100644 index 10cd8ebc..00000000 --- a/latest/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 12f9c0ab7389bf776a2e7c7261dd64b9 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/latest/.nojekyll b/latest/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/latest/API_ref/VPL_enums.html b/latest/API_ref/VPL_enums.html index 0d0c9d11..0e03b0b7 100644 --- a/latest/API_ref/VPL_enums.html +++ b/latest/API_ref/VPL_enums.html @@ -490,6 +490,7 @@
In this mode, super Resolution is optimized or trained to have high sharpness level. This mode is recommended to be used in video conference(camera noise) or similar usage scenario.
+In this mode, Super Resolution is optimized or trained to remove encoding artifacts with medium sharpness level. This mode is recommended to be used in video surveillance or similar usage scenarios which may have camera noise and encoding artifacts due to limited network bandwidth.
+Values:
+Super Resolution algorithm by default. The library selects the most appropriate super resolution algorithm.
+Super Resolution algorithm1.
+Super Resolution algorithm2, MFX_AI_SUPER_RESOLUTION_ALGORITHM_2 video quality is expected to be better than MFX_AI_SUPER_RESOLUTION_ALGORITHM_1.
+AI based frame interpolation in best speed.
+AI based frame interpolation in best quality.
+FrameRate
Specify the frame rate with the following formula: FrameRateExtN / FrameRateExtD.
-For encoding, frame rate must be specified. For decoding, frame rate may be unspecified (FrameRateExtN and FrameRateExtD are all zeros.) In this case, the frame rate is defaulted to 30 frames per second.
+For encoding, frame rate must be specified. For decoding, frame rate may be unspecified (FrameRateExtN and FrameRateExtD are all zeros.) In this case, the frame rate is defaulted to 0 frames per second, and timestamp will be calculated by 30fps in SDK.
+In decoding process:
+If there is frame rate information in bitstream, MFXVideoDECODE_DecodeHeader will carry actual frame rate in FrameRateExtN and FrameRateExtD parameters. MFXVideoDECODE_Init, MFXVideoDECODE_Query, MFXVideoDECODE_DecodeFrameAsync and MFXVideoDECODE_GetVideoParam will also carry these values for frame rate. Timestamp will be calculated by the actual frame rate.
+If there is no frame rate information in bitstream, MFXVideoDECODE_DecodeHeader will assign 0 for frame rate in FrameRateExtN and FrameRateExtD parameters. MFXVideoDECODE_Init, MFXVideoDECODE_Query, MFXVideoDECODE_DecodeFrameAsync and MFXVideoDECODE_GetVideoParam will also assign 0 for frame rate. Timestamp will be calculated by 30fps.
+If these two parameters are modified through MFXVideoDECODE_Init, then the modified values for frame rate will be used in MFXVideoDECODE_Query, MFXVideoDECODE_DecodeFrameAsync and MFXVideoDECODE_GetVideoParam. Timestamps will be calculated using the modified values.
Indicates Super Resolution Mode. mfxAISuperResolutionMode enumerator.
Indicates Super Resolution Algorithm. mfxAISuperResolutionAlgorithm enumerator.
+Reserved for future use.
2.14
2.14
2.14
2.14
2.14
New in this release:
+Added decode HEVC level8.5 (general_level_idc=255) support:
++++
Experimental API: Introduced best quality and best speed mode for AI based video frame interpolation:
+++
Updated description for decode FrameRate in mfxFrameInfo
Experimental API: Introduced sharpen, artifact removal mode and algorithm setting for AI based super resolution:
+++
Made mfxvideo++.h session wrappers explicitly non-copyable:
++++
+- +
MFXVideoENCODE
- +
MFXVideoDECODE
- +
MFXVideoVPP
- +
MFXVideoDECODE_VPP
New in this release:
Moved to production API:
@@ -436,7 +479,7 @@New in this release:
Experimental API: Added new structures and enumerated types for importing and exporting surfaces:
@@ -468,7 +511,7 @@New in this release:
Experimental API: introduced mfxExtAV1ScreenContentTools
to support screen content tools setting for encoder.
New in this release:
Experimental API: introduced MFX_CORRUPTION_HW_RESET
to support media reset info report.
New in this release:
Deprecated mfxExtCodingOption2::BitrateLimit
.
New in this release:
Introduced MFX_FOURCC_ABGR16F
FourCC for 16-bit float point (per channel) 4:4:4 ABGR format.
New in this release:
mfxExtVppAuxData::RepeatedFrame
flag is actual again and returned back from deprecation state.
New in this release:
New development practice to treat some new API features as experimental was introduced. @@ -681,7 +724,7 @@
New in this release:
Added mfxMediaAdapterType to capability reporting.
Added ability to retrieve path to the shared library with the implementation.
Added 3DLUT (Three-Dimensional Look Up Table) filter in VPP.
Encoding in Hyper mode.
New product names for platforms:
@@ -779,6 +822,7 @@Specification Version
-This document contains Intel® VPL specification version 2.13.0.
+This document contains Intel® VPL specification version 2.14.0.
Latest published version of Intel® VPL specification: https://intel.github.io/libvpl.
The current version of mfxDeviceDescription structure.
+The current version of mfxImplDescription structure.
+The corresponding version of the Intel(r) Media SDK legacy API that is used as a basis for the current API.
+Use the Dispatcher API to load and execute the appropriate library implementation +and get capabilities for the implementations available on the platform.
+ +Maximum allowed length of the implementation name.
+Maximum allowed length of the implementation name.
+Helper macro definitions to add property with single value.
+Adds single property of mfxU32 type.
+loader – [in] Valid mfxLoader object
name – [in] Property name string
value – [in] Property value
Adds single property of mfxU16 type.
+loader – [in] Valid mfxLoader object
name – [in] Property name string
value – [in] Property value
Adds single property of pointer type.
+loader – [in] Valid mfxLoader object
name – [in] Property name string
value – [in] Property value
Helper macro definitions to update existing property.
+Update existing property of mfxU32 type.
+loader – [in] Valid mfxLoader object
config – [in] Valid mfxConfig object
name – [in] Property name string
value – [in] Property value
Update existing property of mfxU16 type.
+loader – [in] Valid mfxLoader object
config – [in] Valid mfxConfig object
name – [in] Property name string
value – [in] Property value
Update existing property of pointer type.
+loader – [in] Valid mfxLoader object
config – [in] Valid mfxConfig object
name – [in] Property name string
value – [in] Property value
This enum itemizes hardware acceleration stack to use.
+Values:
+Hardware acceleration is not applicable.
+Hardware acceleration goes through the Microsoft* Direct3D9* infrastructure.
+Hardware acceleration goes through the Microsoft* Direct3D11* infrastructure.
+Hardware acceleration goes through the Linux* VA-API infrastructure.
+Hardware acceleration goes through the Linux* VA-API infrastructure with DRM RENDER MODE as default acceleration access point.
+Hardware acceleration goes through the Linux* VA-API infrastructure with DRM MODESET as default acceleration access point.
+Hardware acceleration goes through the Linux* VA-API infrastructure with OpenGL Extension to the X Window System as default acceleration access point.
+Hardware acceleration goes through the Linux* VA-API infrastructure with X11 as default acceleration access point.
+Hardware acceleration goes through the Linux* VA-API infrastructure with Wayland as default acceleration access point.
+Hardware acceleration goes through the HDDL* Unite*.
+Creates dispatcher configuration.
+Creates the dispatcher internal configuration, which is used to filter out available implementations. This configuration is used to walk through selected implementations to gather more details and select the appropriate implementation to load. The loader object remembers all created mfxConfig objects and destroys them during the mfxUnload function call.
+Multiple configurations per single mfxLoader object are possible.
+Usage example:
mfxLoader loader = MFXLoad();
+mfxConfig cfg = MFXCreateConfig(loader);
+MFXCreateSession(loader,0,&session);
+
This function is available since API version 2.0.
+loader – [in] Loader handle.
+Config handle or NULL pointer is failed.
+Loads and initializes the implementation.
+mfxLoader loader = MFXLoad();
+int i=0;
+while(1) {
+ mfxImplDescription *idesc;
+ MFXEnumImplementations(loader, i, MFX_IMPLCAPS_IMPLDESCSTRUCTURE, (mfxHDL*)&idesc);
+ if(is_good(idesc)) {
+ MFXCreateSession(loader, i,&session);
+ // ...
+ MFXDispReleaseImplDescription(loader, idesc);
+ }
+ else
+ {
+ MFXDispReleaseImplDescription(loader, idesc);
+ break;
+ }
+}
+
This function is available since API version 2.0.
+loader – [in] Loader handle.
i – [in] Index of the implementation.
session – [out] Pointer to the session handle.
MFX_ERR_NONE The function completed successfully. The session contains a pointer to the session handle.
+MFX_ERR_NULL_PTR If loader is NULL.
+MFX_ERR_NULL_PTR If session is NULL.
+MFX_ERR_NOT_FOUND Provided index is out of possible range.
+ +Destroys handle allocated by the MFXEnumImplementations function.
+This function is available since API version 2.0.
+loader – [in] Loader handle.
hdl – [in] Handle to destroy. Can be equal to NULL.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR If loader is NULL.
+ + MFX_ERR_INVALID_HANDLE Provided hdl handle is not associated with this loader. +Iterates over filtered out implementations to gather their details. This function allocates memory to store a structure or string corresponding to the type specified by format. For example, if format is set to MFX_IMPLCAPS_IMPLDESCSTRUCTURE, then idesc will return a pointer to a structure of type mfxImplDescription. Use the MFXDispReleaseImplDescription function to free memory allocated to this structure or string.
+This function is available since API version 2.0.
+loader – [in] Loader handle.
i – [in] Index of the implementation.
format – [in] Format in which capabilities need to be delivered. See the mfxImplCapsDeliveryFormat enumerator for more details.
idesc – [out] Pointer to the structure or string corresponding to the requested format.
MFX_ERR_NONE The function completed successfully. The idesc contains valid information.
+MFX_ERR_NULL_PTR If loader is NULL.
+MFX_ERR_NULL_PTR If idesc is NULL.
+MFX_ERR_NOT_FOUND Provided index is out of possible range.
+ + MFX_ERR_UNSUPPORTED If requested format is not supported. +Adds additional filter properties (any fields of the mfxImplDescription structure) to the configuration of the loader object.
+This function is available since API version 2.0.
+Note
+Each new call with the same parameter name will overwrite the previously set value. This may invalidate other properties.
+config – [in] Config handle.
name – [in] Name of the parameter (see mfxImplDescription structure and example).
value – [in] Value of the parameter.
MFX_ERR_NONE The function completed successfully. MFX_ERR_NULL_PTR If config is NULL.
+MFX_ERR_NULL_PTR If name is NULL.
+ + MFX_ERR_NOT_FOUND If name contains unknown parameter name. MFX_ERR_UNSUPPORTED If value data type does not equal the parameter with provided name. +The mfxDecoderDescription structure represents the description of a decoder.
+Public Members
+Version of the structure.
+Pointer to the array of decoders.
+This structure represents the decoder description.
+Public Members
+ + + + +Maximum supported codec level. See the CodecProfile enumerator for possible values.
+Pointer to the array of profiles supported by the codec.
+This structure represents the codec profile description.
+Public Members
+ + + + + + +Pointer to the array of memory types.
+This structure represents the underlying details of the memory type.
+Public Members
+Memory handle type.
+Range of supported image widths.
+Range of supported image heights.
+This structure represents device description.
+Public Members
+Version of the structure.
+Graphics adapter type. See the mfxMediaAdapterType enumerator for a list of possible values.
+Number of available uniform sub-devices. Pure software implementation can report 0.
+Pointer to the array of available sub-devices.
+This structure represents sub-device description.
+ +This structure represents an encoder description.
+Public Members
+Version of the structure.
+Pointer to the array of encoders.
+This structure represents encoder description.
+Public Members
+ + +Maximum supported codec level. See the CodecProfile enumerator for possible values.
+Indicates what type of statistics can be reported: block/slice/tile/frame.
+Pointer to the array of profiles supported by the codec.
+This structure represents the codec profile description.
+Public Members
+ + + + + + +Pointer to the array of memory types.
+This structure represents the underlying details of the memory type.
+Public Members
+Memory handle type.
+Range of supported image widths.
+Range of supported image heights.
+This structure represents the implementation description.
+Public Members
+Version of the structure.
+Impl type: software/hardware.
+Default Hardware acceleration stack to use. OS dependent parameter. Use VA for Linux* and DX* for Windows*.
+Supported API version.
+Null-terminated string with implementation name given by vendor.
+Null-terminated string with comma-separated list of license names of the implementation.
+Null-terminated string with comma-separated list of keywords specific to this implementation that dispatcher can search for.
+Supported device.
+Decoder configuration.
+Encoder configuration.
+VPP configuration.
+Supported acceleration modes.
+Supported surface pool polices.
+Array of extension buffers.
+Extension buffers. Reserved for future.
+The mfxVariantType enumerator data types for mfxVariant type.
+Public Members
+Version of the structure.
+Value type.
+Value data member.
+The mfxVariantType enumerator data types for mfxVariantType.
+Values:
+Undefined type.
+8-bit unsigned integer.
+8-bit signed integer.
+16-bit unsigned integer.
+16-bit signed integer.
+32-bit unsigned integer.
+32-bit signed integer.
+64-bit unsigned integer.
+64-bit signed integer.
+32-bit single precision floating point.
+64-bit double precision floating point.
+Generic type pointer.
+16-bit half precision floating point.
+This structure represents VPP description.
+Public Members
+Version of the structure.
+Pointer to the array of supported filters.
+This structure represents the VPP filters description.
+Public Members
+ + + + + + + + +Pointer to the array of memory types.
+This structure represents the underlying details of the memory type.
+Public Members
+Memory handle type.
+Range of supported image widths.
+Range of supported image heights.
+Pointer to the array of supported formats.
+This structure represents the input color format description.
+Public Members
+ + + + + + + + +This structure represents acceleration modes description.
+Public Members
+Version of the structure.
+Pointer to the array of supported acceleration modes.
+This structure represents the list of names of implemented functions.
+ +Specifies various physical device properties for device matching and identification outside of oneAPI Video Processing Library (oneVPL).
+Public Members
+Version of the structure.
+PCI bus domain. Equals to ‘0’ if OS doesn’t support it or has sequential numbering of buses across domains.
+Bitfield identifying the node within a linked device adapter corresponding to the device.
+Boolean value that will be 1 if DeviceLUID contains a valid LUID and LUIDDeviceNodeMask contains a valid node mask, and 0 if they do not.
+Number of the DRM render node from the path /dev/dri/RenderD<num>. Value equals to 0 means that this field doesn’t contain valid DRM Render Node number.
+This structure represents pool policy description.
+Public Members
+Version of the structure.
+Pointer to the array of supported pool policies.
+Cross domain structure to define device UUID. It is defined here to check backward compatibility.
+Public Members
+PCI vendor ID. Same as mfxExtendedDeviceId::VendorID.
+PCI device ID. Same as mfxExtendedDeviceId::DeviceID.
+PCI revision ID. Same as mfxExtendedDeviceId::RevisionID.
+PCI bus domain. Same as mfxExtendedDeviceId::PCIDomain.
+The number of the bus that the physical device is located on. Same as mfxExtendedDeviceId::PCIBus.
+The index of the physical device on the bus. Same as mfxExtendedDeviceId::PCIDevice.
+The function number of the device on the physical device. Same as mfxExtendedDeviceId::PCIFunction.
+The Angle enumerator itemizes valid rotation angles.
+0 degrees.
+90 degrees.
+180 degrees.
+270 degrees.
+The BitstreamDataFlag enumerator uses bit-ORed values to itemize additional +information about the bitstream buffer.
+The bitstream doesn’t contain any flags.
+The bitstream buffer contains a complete frame or complementary field pair of data for the bitstream. For decoding, this means that the decoder can proceed with this buffer without waiting for the start of the next frame, which effectively reduces decoding latency. If this flag is set, but the bitstream buffer contains incomplete frame or pair of field, then decoder will produce corrupted output.
+The bitstream buffer contains the end of the stream. For decoding, this means that the application does not have any additional bitstream data to send to decoder.
+The BPSEIControl enumerator is used to control insertion of buffering period SEI +in the encoded bitstream.
+encoder decides when to insert BP SEI.
+BP SEI should be inserted with every I-frame
+The BRCStatus enumerator itemizes instructions to the encoder by
+mfxExtBrc::Update
.
CodedFrameSize is acceptable, no further recoding/padding/skip required, proceed to next frame.
+Coded frame is too big, recoding required.
+Coded frame is too small, recoding required.
+Coded frame is too big, no further recoding possible - skip frame.
+Coded frame is too small, no further recoding possible - required padding to mfxBRCFrameStatus::MinFrameSize.
+The BRefControl enumerator is used to control usage of B frames as reference in +AVC encoder.
+Default value, it is up to the encoder to use B-frames as reference.
+Do not use B-frames as reference.
+Arrange B-frames in so-called “B pyramid” reference structure.
+The ChromaFormatIdc enumerator itemizes color-sampling formats.
+Monochrome.
+4:2:0 color.
+4:2:2 color.
+4:4:4 color.
+Equal to monochrome.
+4:1:1 color.
+4:2:2 color, horizontal sub-sampling. It is equal to 4:2:2 color.
+4:2:2 color, vertical sub-sampling.
+Reserved.
+Color sampling specified via mfxInfoMFX::SamplingFactorH and SamplingFactorV.
+The ChromaSiting enumerator defines chroma location. Use bit-OR’ed values to +specify the desired location.
+Unspecified.
+Chroma samples are co-sited vertically on the top with the luma samples.
+Chroma samples are not co-sited vertically with the luma samples.
+Chroma samples are co-sited vertically on the bottom with the luma samples.
+Chroma samples are co-sited horizontally on the left with the luma samples.
+Chroma samples are not co-sited horizontally with the luma samples.
+The CodecFormatFourCC enumerator itemizes codecs in the FourCC format.
+AVC, H.264, or MPEG-4, part 10 codec.
+HEVC codec.
+VVC codec.
+MPEG-2 codec.
+VC-1 codec.
+VP9 codec.
+AV1 codec.
+JPEG codec
+The CodecLevel enumerator itemizes codec levels for all codecs.
+Unspecified level.
+The CodecProfile enumerator itemizes codec profiles for all codecs.
+Unspecified profile.
+Combined with H.264 profile, these flags impose additional constraints. See the +H.264 specification for the list of constraints.
+Baseline JPEG profile.
+The CodingOptionValue enumerator defines a three-state coding option setting.
+Unspecified.
+Coding option set.
+Coding option not set.
+Reserved.
+The ColorFourCC enumerator itemizes color formats.
+NV12 color planes. Native format for 4:2:0/8b Gen hardware implementation.
+Same as NV12 but with weaved V and U values.
+YV12 color planes.
+Same as YV12 except that the U and V plane order is reversed.
+Alias for the IYUV color format.
+Same as YV16 except that the U and V plane order is reversed
+4:2:2 color format with similar to NV12 layout.
+YUY2 color planes.
+2 bytes per pixel, uint16 in little-endian format, where 0-4 bits are blue, bits 5-10 are green and bits 11-15 are red.
+RGB 24 bit planar layout (3 separate channels, 8-bits per sample each). This format should be mapped to D3DFMT_R8G8B8 or VA_FOURCC_RGBP.
+RGB4 (RGB32) color planes. BGRA is the order, ‘B’ is 8 MSBs, then 8 bits for ‘G’ channel, then ‘R’ and ‘A’ channels.
+Alias for the RGB4 color format.
+Internal color format. The application should use the following functions to create a surface that corresponds to the Direct3D* version in use.
+For Direct3D* 9: IDirectXVideoDecoderService::CreateSurface()
+For Direct3D* 11: ID3D11Device::CreateBuffer()
+Internal color format. The application should use the following functions to create a surface that corresponds to the Direct3D* version in use.
+For Direct3D 9: IDirectXVideoDecoderService::CreateSurface()
+For Direct3D 11: ID3D11Device::CreateTexture2D()
+P010 color format. This is 10 bit per sample format with similar to NV12 layout. This format should be mapped to DXGI_FORMAT_P010.
+10-bit YUV 4:2:0, each component has its own plane.
+10-bit YUV 4:2:2, each component has its own plane.
+P016 color format. This is 16 bit per sample format with similar to NV12 layout. This format should be mapped to DXGI_FORMAT_P016.
+10 bit per sample 4:2:2 color format with similar to NV12 layout.
+RGBA color format. It is similar to MFX_FOURCC_RGB4 but with different order of channels. ‘R’ is 8 MSBs, then 8 bits for ‘G’ channel, then ‘B’ and ‘A’ channels.
+10 bits ARGB color format packed in 32 bits. ‘A’ channel is two MSBs, then ‘R’, then ‘G’ and then ‘B’ channels. This format should be mapped to DXGI_FORMAT_R10G10B10A2_UNORM or D3DFMT_A2R10G10B10.
+10 bits ARGB color format packed in 64 bits. ‘A’ channel is 16 MSBs, then ‘R’, then ‘G’ and then ‘B’ channels. This format should be mapped to DXGI_FORMAT_R16G16B16A16_UINT or D3DFMT_A16B16G16R16 formats.
+10 bits ABGR color format packed in 64 bits. ‘A’ channel is 16 MSBs, then ‘B’, then ‘G’ and then ‘R’ channels. This format should be mapped to DXGI_FORMAT_R16G16B16A16_UINT or D3DFMT_A16B16G16R16 formats.
+16 bits single channel color format. This format should be mapped to DXGI_FORMAT_R16_TYPELESS or D3DFMT_R16F.
+YUV 4:4:4, AYUV color format. This format should be mapped to DXGI_FORMAT_AYUV.
+RGB4 stored in AYUV surface. This format should be mapped to DXGI_FORMAT_AYUV.
+UYVY color planes. Same as YUY2 except the byte order is reversed.
+10 bit per sample 4:2:2 packed color format with similar to YUY2 layout. This format should be mapped to DXGI_FORMAT_Y210.
+10 bit per sample 4:4:4 packed color format. This format should be mapped to DXGI_FORMAT_Y410.
+16 bit per sample 4:2:2 packed color format with similar to YUY2 layout. This format should be mapped to DXGI_FORMAT_Y216.
+16 bit per sample 4:4:4 packed color format. This format should be mapped to DXGI_FORMAT_Y416.
+BGR 24 bit planar layout (3 separate channels, 8-bits per sample each). This format should be mapped to VA_FOURCC_BGRP.
+8bit per sample 4:4:4 format packed in 32 bits, X=unused/undefined, ‘X’ channel is 8 MSBs, then ‘Y’, then ‘U’, and then ‘V’ channels. This format should be mapped to VA_FOURCC_XYUV.
+16 bits float point ABGR color format packed in 64 bits. ‘A’ channel is 16 MSBs, then ‘B’, then ‘G’ and then ‘R’ channels. This format should be mapped to DXGI_FORMAT_R16G16B16A16_FLOAT or D3DFMT_A16B16G16R16F formats..
+The ContentInfo enumerator itemizes content types for the encoding session.
+The Corruption enumerator itemizes the decoding corruption types. It is a +bit-OR’ed value of the following.
+No corruption.
+Minor corruption in decoding certain macro-blocks.
+Major corruption in decoding the frame - incomplete data, for example.
+Top field of frame is absent in bitstream. Only bottom field has been decoded.
+Bottom field of frame is absent in bitstream. Only top filed has been decoded.
+Decoding used a corrupted reference frame. A corrupted reference frame was used for decoding this frame. For example, if the frame uses a reference frame that was decoded with minor/major corruption flag, then this frame is also marked with a reference corruption flag.
+The reference list information of this frame does not match what is specified in the Reference Picture Marking Repetition SEI message. (ITU-T H.264 D.1.8 dec_ref_pic_marking_repetition)
+The hardware reset is reported from media driver.
+Note
+Flag MFX_CORRUPTION_ABSENT_TOP_FIELD/MFX_CORRUPTION_ABSENT_BOTTOM_FIELD +is set by the AVC decoder when it detects that one of fields is not +present in the bitstream. Which field is absent depends on value of +bottom_field_flag (ITU-T* H.264 7.4.3).
+The DeinterlacingMode enumerator itemizes VPP deinterlacing modes.
+BOB deinterlacing mode.
+Advanced deinterlacing mode.
+Auto mode with deinterlacing double frame rate output.
+Auto mode with deinterlacing single frame rate output.
+Deinterlace only mode with full frame rate output.
+Deinterlace only Mode with half frame rate output.
+24 fps fixed output mode.
+Fixed telecine pattern removal mode.
+30 fps fixed output mode.
+Only interlace detection.
+Advanced deinterlacing mode without using of reference frames.
+Advanced deinterlacing mode with scene change detection.
+Field weaving.
+The ErrorTypes enumerator uses bit-ORed values to itemize bitstream error types.
+No error in bitstream.
+Invalid/corrupted PPS.
+Invalid/corrupted SPS.
+Invalid/corrupted slice header.
+Invalid/corrupted slice data.
+Missed frames.
+Invalid/corrupted APP0 marker.
+Invalid/corrupted APP1 marker.
+Invalid/corrupted APP2 marker.
+Invalid/corrupted APP3 marker.
+Invalid/corrupted APP4 marker.
+Invalid/corrupted APP5 marker.
+Invalid/corrupted APP6 marker.
+Invalid/corrupted APP7 marker.
+Invalid/corrupted APP8 marker.
+Invalid/corrupted APP9 marker.
+Invalid/corrupted APP10 marker.
+Invalid/corrupted APP11 marker.
+Invalid/corrupted APP12 marker.
+Invalid/corrupted APP13 marker.
+Invalid/corrupted APP14 marker.
+Invalid/corrupted DQT marker.
+Invalid/corrupted SOF0 marker.
+Invalid/corrupted DHT marker.
+Invalid/corrupted DRI marker.
+Invalid/corrupted SOS marker.
+Unknown Marker.
+The ExtendedBufferID enumerator itemizes and defines identifiers (BufferId) for +extended buffers or video processing algorithm identifiers.
+mfxExtThreadsParam buffer ID.
+This extended buffer defines additional encoding controls. See the mfxExtCodingOption structure for details. The application can attach this buffer to the structure for encoding initialization.
+This extended buffer defines sequence header and picture header for encoders and decoders. See the mfxExtCodingOptionSPSPPS structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization, and for obtaining raw headers from the decoders and encoders.
+This extended buffer defines a list of VPP algorithms that applications should not use. See the mfxExtVPPDoNotUse structure for details. The application can attach this buffer to the mfxVideoParam structure for video processing initialization.
+This extended buffer defines auxiliary information at the VPP output. See the mfxExtVppAuxData structure for details. The application can attach this buffer to the mfxEncodeCtrl structure for per-frame encoding control.
+The extended buffer defines control parameters for the VPP denoise filter algorithm. See the mfxExtVPPDenoise2 structure for details. The application can attach this buffer to the mfxVideoParam structure for video processing initialization.
+See the mfxExtVPP3DLut structure for more details.
+Reserved for future use.
+The extended buffer defines control parameters for the VPP ProcAmp filter algorithm. See the mfxExtVPPProcAmp structure for details. The application can attach this buffer to the mfxVideoParam structure for video processing initialization or to the mfxFrameData structure in the mfxFrameSurface1 structure of output surface for per-frame processing configuration.
+The extended buffer defines control parameters for the VPP detail filter algorithm. See the mfxExtVPPDetail structure for details. The application can attach this buffer to the structure for video processing initialization.
+This extended buffer defines video signal type. See the mfxExtVideoSignalInfo structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization, and for retrieving such information from the decoders. If video signal info changes per frame, the application can attach this buffer to the mfxFrameData structure for video processing.
+This extended buffer defines video signal type. See the mfxExtVideoSignalInfo structure for details. The application can attach this buffer to the mfxVideoParam structure for the input of video processing if the input video signal information changes in sequence base.
+This extended buffer defines video signal type. See the mfxExtVideoSignalInfo structure for details. The application can attach this buffer to the mfxVideoParam structure for the output of video processing if the output video signal information changes in sequence base.
+This extended buffer defines a list of VPP algorithms that applications should use. See the mfxExtVPPDoUse structure for details. The application can attach this buffer to the structure for video processing initialization.
+This extended buffer defines additional encoding controls for reference list. See the mfxExtAVCRefListCtrl structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding & decoding initialization, or the mfxEncodeCtrl structure for per-frame encoding configuration.
+This extended buffer defines control parameters for the VPP frame rate conversion algorithm. See the mfxExtVPPFrameRateConversion structure for details. The application can attach this buffer to the mfxVideoParam structure for video processing initialization.
+This extended buffer configures the H.264 picture timing SEI message. See the mfxExtPictureTimingSEI structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization, or the mfxEncodeCtrl structure for per-frame encoding configuration.
+This extended buffer configures the structure of temporal layers inside the encoded H.264 bitstream. See the mfxExtAvcTemporalLayers structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization.
+This extended buffer defines additional encoding controls. See the mfxExtCodingOption2 structure for details. The application can attach this buffer to the structure for encoding initialization.
+This extended buffer defines control parameters for the VPP image stabilization filter algorithm. See the mfxExtVPPImageStab structure for details. The application can attach this buffer to the mfxVideoParam structure for video processing initialization.
+This extended buffer is used to retrieve encoder capability. See the mfxExtEncoderCapability structure for details. The application can attach this buffer to the mfxVideoParam structure before calling MFXVideoENCODE_Query function.
+This extended buffer is used to control encoder reset behavior and also to query possible encoder reset outcome. See the mfxExtEncoderResetOption structure for details. The application can attach this buffer to the mfxVideoParam structure before calling MFXVideoENCODE_Query or MFXVideoENCODE_Reset functions.
+This extended buffer is used by the encoder to report additional information about encoded picture. See the mfxExtAVCEncodedFrameInfo structure for details. The application can attach this buffer to the mfxBitstream structure before calling MFXVideoENCODE_EncodeFrameAsync function.
+This extended buffer is used to control composition of several input surfaces in the one output. In this mode, the VPP skips any other filters. The VPP returns error if any mandatory filter is specified and filter skipped warning for optional filter. The only supported filters are deinterlacing and interlaced scaling.
+This extended buffer is used to control transfer matrix and nominal range of YUV frames. The application should provide it during initialization.
+This extended buffer is used by the application to specify different Region Of Interests during encoding. The application should provide it at initialization or at runtime.
+This extended buffer is used by the application to specify different deinterlacing algorithms.
+This extended buffer specifies reference lists for the encoder.
+See the mfxExtDecVideoProcessing structure for details.
+The extended buffer defines control parameters for the VPP field-processing algorithm. See the mfxExtVPPFieldProcessing structure for details. The application can attach this buffer to the mfxVideoParam structure for video processing initialization or to the mfxFrameData structure during runtime.
+This extended buffer defines additional encoding controls. See the mfxExtCodingOption3 structure for details. The application can attach this buffer to the structure for encoding initialization.
+This extended buffer defines chroma samples location information. See the mfxExtChromaLocInfo structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization.
+This extended buffer defines per-macroblock QP. See the mfxExtMBQP structure for details. The application can attach this buffer to the mfxEncodeCtrl structure for per-frame encoding configuration.
+This extended buffer defines per-macroblock force intra flag. See the mfxExtMBForceIntra structure for details. The application can attach this buffer to the mfxEncodeCtrl structure for per-frame encoding configuration.
+This extended buffer defines additional encoding controls for HEVC tiles. See the mfxExtHEVCTiles structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization.
+This extended buffer defines macroblock map for current frame which forces specified macroblocks to be non skip. See the mfxExtMBDisableSkipMap structure for details. The application can attach this buffer to the mfxEncodeCtrl structure for per-frame encoding configuration.
+See the mfxExtHEVCParam structure for details.
+This extended buffer is used by decoders to report additional information about decoded frame. See the mfxExtDecodedFrameInfo structure for more details.
+See the mfxExtTimeCode structure for more details.
+This extended buffer specifies the region to encode. The application can attach this buffer to the mfxVideoParam structure during HEVC encoder initialization.
+See the mfxExtPredWeightTable structure for details.
+See the mfxExtDirtyRect structure for details.
+See the mfxExtMoveRect structure for details.
+See the mfxExtCodingOptionVPS structure for details.
+See the mfxExtVPPRotation structure for details.
+See the mfxExtEncodedSlicesInfo structure for details.
+See the mfxExtVPPScaling structure for details.
+This extended buffer defines additional encoding controls for reference list. See the mfxExtAVCRefListCtrl structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding & decoding initialization, or the mfxEncodeCtrl structure for per-frame encoding configuration.
+This extended buffer specifies reference lists for the encoder.
+This extended buffer configures the structure of temporal layers inside the encoded H.265 bitstream. See the mfxExtHEVCTemporalLayers structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization.
+See the mfxExtVPPMirroring structure for details.
+See the mfxExtMVOverPicBoundaries structure for details.
+See the mfxExtVPPColorFill structure for details.
+This extended buffer is used by decoders to report error information before frames get decoded. See the mfxExtDecodeErrorReport structure for more details.
+See the mfxExtColorConversion structure for details.
+This extended buffer configures HDR SEI message. See the mfxExtContentLightLevelInfo structure for details.
+This extended buffer configures HDR SEI message. See the mfxExtMasteringDisplayColourVolume structure for details. If color volume changes per frame, the application can attach this buffer to the mfxFrameData structure for video processing.
+This extended buffer configures HDR SEI message. See the mfxExtMasteringDisplayColourVolume structure for details. The application can attach this buffer to the mfxVideoParam structure for the input of video processing if the mastering display color volume changes per sequence. In this case, this buffer should be together with MFX_EXTBUFF_CONTENT_LIGHT_LEVEL_INFO to indicate the light level and mastering color volume of the input of video processing. If color Volume changes per frame instead of per sequence, the application can attach MFX_EXTBUFF_MASTERING_DISPLAY_COLOUR_VOLUME to mfxFrameData for frame based processing.
+This extended buffer configures HDR SEI message. See the mfxExtMasteringDisplayColourVolume structure for details. The application can attach this buffer to the mfxVideoParam structure for the output of video processing if the mastering display color volume changes per sequence. If color volume changes per frame instead of per sequence, the application can attach the buffer with MFX_EXTBUFF_MASTERING_ DISPLAY_COLOUR_VOLUME to mfxFrameData for frame based processing.
+See the mfxExtEncodedUnitsInfo structure for details.
+This video processing algorithm identifier is used to enable MCTF via mfxExtVPPDoUse and together with mfxExtVppMctf
+Extends mfxVideoParam structure with VP9 segmentation parameters. See the mfxExtVP9Segmentation structure for details.
+Extends mfxVideoParam structure with parameters for VP9 temporal scalability. See the mfxExtVP9TemporalLayers structure for details.
+Extends mfxVideoParam structure with VP9-specific parameters. See the mfxExtVP9Param structure for details.
+See the mfxExtAVCRoundingOffset structure for details.
+See the mfxExtPartialBitstreamParam structure for details.
+This extended buffer describes VP8 encoder configuration parameters. See the mfxExtVP8CodingOption structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding initialization.
+This extended buffer defines quantization tables for JPEG encoder.
+This extended buffer defines Huffman tables for JPEG encoder.
+See the mfxExtEncoderIPCMArea structure for details.
+See the mfxExtInsertHeaders structure for details.
+This extended buffer describes the MVC stream information of view dependencies, view identifiers, and operation points. See the ITU*-T H.264 specification chapter H.7.3.2.1.4 for details.
+This extended buffer defines target views at the decoder output.
+This structure is used to pass decryption status report index for Common Encryption usage model. See the mfxExtCencParam structure for more details.
+See the mfxExtDeviceAffinityMask structure for details.
+See the mfxExtInCrops structure for details.
+See the mfxExtAV1FilmGrainParam structure for more details.
+See the mfxExtAV1Segmentation structure for more details.
+See the mfxExtAllocationHints structure for more details.
+See the mfxExtTemporalLayers structure for more details.
+This extended buffer defines additional encoding controls for reference list. See the mfxExtRefListCtrl structure for details. The application can attach this buffer to the mfxVideoParam structure for encoding & decoding initialization, or the mfxEncodeCtrl structure for per-frame encoding configuration.
+See the mfxExtEncodeStats structure for details.
+See the mfxExtTuneEncodeQuality structure for details.
+See the mfxExtVPPPercEncPrefilter structure for details.
+Memory page for persistent use.
+The ExtMemFrameType enumerator specifies the memory type of frame. It is a +bit-ORed value of one of the following. For information on working with video +memory surfaces, see the Working with Hardware Acceleration section.
+Frames are in video memory and belong to video decoder render targets.
+Frames are in video memory and belong to video processor render targets.
+Frames are in video memory and belong to video decoder render targets.
+Frames are in video memory and belong to video processor render targets.
+The frames are in system memory.
+Allocation request comes from an ENCODE function
+Allocation request comes from a DECODE function
+Allocation request comes from a VPP function for input frame allocation
+Allocation request comes from a VPP function for output frame allocation
+Allocation request comes from an ENC function
+Allocation request for internal frames
+Allocation request for I/O frames
+Application requests frame handle export to some associated object. For Linux frame handle can be considered to be exported to DRM Prime FD, DRM FLink or DRM FrameBuffer Handle. Specifics of export types and export procedure depends on external frame allocator implementation
+For DX11 allocation use shared resource bind flag.
+Frames are in video memory and belong to video encoder render targets.
+Indicates that time stamp is unknown for this frame/bitstream portion.
+Unused entry or API functions that generate the frame output do not use this frame.
+Indicates the time stamp of this frame is unknown and will be calculated by SDK.
+Indicates the time stamp of this frame is not calculated and is a pass-through of the original time stamp.
+The FrameType enumerator itemizes frame types. Use bit-ORed values to specify +all that apply.
+Frame type is unspecified.
+This frame or the first field is encoded as an I-frame/field.
+This frame or the first field is encoded as an P-frame/field.
+This frame or the first field is encoded as an B-frame/field.
+This frame or the first field is either an SI- or SP-frame/field.
+This frame or the first field is encoded as a reference.
+This frame or the first field is encoded as an IDR.
+The second field is encoded as an I-field.
+The second field is encoded as an P-field.
+The second field is encoded as an S-field.
+The second field is an SI- or SP-field.
+The second field is encoded as a reference.
+The second field is encoded as an IDR.
+The FrcAlgm enumerator itemizes frame rate conversion algorithms. See description +of mfxExtVPPFrameRateConversion structure for more details.
+Frame dropping/repetition based frame rate conversion algorithm with preserved original time stamps. Any inserted frames will carry MFX_TIMESTAMP_UNKNOWN.
+Frame dropping/repetition based frame rate conversion algorithm with distributed time stamps. The algorithm distributes output time stamps evenly according to the output frame rate.
+Frame rate conversion algorithm based on frame interpolation. This flag may be combined with MFX_FRCALGM_PRESERVE_TIMESTAMP or MFX_FRCALGM_DISTRIBUTED_TIMESTAMP flags.
+The GeneralConstraintFlags enumerator uses bit-ORed values to itemize HEVC bitstream +indications for specific profiles. Each value indicates for format range extensions profiles. +To specify HEVC Main 10 Still Picture profile applications have to set +mfxInfoMFX::CodecProfile == MFX_PROFILE_HEVC_MAIN10 and +mfxExtHEVCParam::GeneralConstraintFlags == MFX_HEVC_CONSTR_REXT_ONE_PICTURE_ONLY.
+The GopOptFlag enumerator itemizes special properties in the GOP (Group of +Pictures) sequence.
+The encoder generates closed GOP if this flag is set. Frames in this GOP do not use frames in previous GOP as reference.
+The encoder generates open GOP if this flag is not set. In this GOP frames prior to the first frame of GOP in display order may use frames from previous GOP as reference. Frames subsequent to the first frame of GOP in display order do not use frames from previous GOP as reference.
+The AVC encoder ignores this flag if IdrInterval in mfxInfoMFX structure is set to 0, i.e. if every GOP starts from IDR frame. In this case, GOP is encoded as closed.
+This flag does not affect long-term reference frames.
+The encoder must strictly follow the given GOP structure as defined by parameter GopPicSize, GopRefDist etc in the mfxVideoParam structure. Otherwise, the encoder can adapt the GOP structure for better efficiency, whose range is constrained by parameter GopPicSize and GopRefDist etc. See also description of AdaptiveI and AdaptiveB fields in the mfxExtCodingOption2 structure.
+Use default mode for the legacy Intel(r) Media SDK implementation.
+The hint to enable GPU accelerated copying when it is supported by the library. If the library doesn’t support GPU accelerated copy the operation will be made by CPU. Buffer caching usage decision is up to runtime to decide, for explicit hints please use MFX_GPUCOPY_SAFE or MFX_GPUCOPY_FAST
+Disable GPU accelerated copying.
+The hint to disable buffer caching for GPU accelerated copying. Actual when GPU accelerated copying is supported by the library.
+The hint to enable buffer caching for GPU accelerated copying. Actual when GPU accelerated copying is supported by the library.
+The HEVCRegionEncoding enumerator itemizes HEVC region’s encoding.
+The HEVCRegionType enumerator itemizes type of HEVC region.
+Slice type.
+The ImageStabMode enumerator itemizes image stabilization modes. See description +of mfxExtVPPImageStab structure for more details.
+Upscale mode.
+Boxing mode.
+The InsertHDRPayload enumerator itemizes HDR payloads insertion rules.
+Do not insert payload when encoding; Clip does not have valid HDR information when decoding.
+Insert payload on IDR frames when encoding; Clip has valid HDR information when decoding.
+The InterpolationMode enumerator specifies type of interpolation method used by +VPP scaling filter.
+Default interpolation mode for scaling. Library selects the most appropriate scaling method.
+Nearest neighbor interpolation method.
+Bilinear interpolation method.
+Advanced interpolation method is defined by each implementation and usually gives best quality.
+The mfxDataType enumerates data type for mfxDataType.
+Values:
+Undefined type.
+8-bit unsigned integer.
+8-bit signed integer.
+16-bit unsigned integer.
+16-bit signed integer.
+32-bit unsigned integer.
+32-bit signed integer.
+64-bit unsigned integer.
+64-bit signed integer.
+32-bit single precision floating point.
+64-bit double precision floating point.
+Generic type pointer.
+16-bit half precision floating point.
+The mfx3DLutChannelMapping enumerator specifies the channel mapping of 3DLUT.
+Values:
+Default 3DLUT channel mapping. The library selects the most appropriate 3DLUT channel mapping.
+3DLUT RGB channels map to RGB channels.
+3DLUT YUV channels map to RGB channels.
+3DLUT VUY channels map to RGB channels.
+The mfx3DLutMemoryLayout enumerator specifies the memory layout of 3DLUT.
+Values:
+Default 3DLUT memory layout. The library selects the most appropriate 3DLUT memory layout.
+The enumeration to separate default above and vendor specific.
+Intel specific memory layout. The enumerator indicates the attributes and memory layout of 3DLUT. 3DLUT size is 17(the number of elements per dimension), 4 channels(3 valid channels, 1 channel is reserved), every channel must be 16-bit unsigned integer. 3DLUT contains 17x17x32 entries with holes that are not filled. Take RGB as example, the nodes RxGx17 to RxGx31 are not filled, are “don’t care” bits, and not accessed for the 17x17x17 nodes.
+Intel specific memory layout. The enumerator indicates the attributes and memory layout of 3DLUT. 3DLUT size is 33(the number of elements per dimension), 4 channels(3 valid channels, 1 channel is reserved), every channel must be 16-bit unsigned integer. 3DLUT contains 33x33x64 entries with holes that are not filled. Take RGB as example, the nodes RxGx33 to RxGx63 are not filled, are “don’t care” bits, and not accessed for the 33x33x33 nodes.
+Intel specific memory layout. The enumerator indicates the attributes and memory layout of 3DLUT. 3DLUT size is 65(the number of elements per dimension), 4 channels(3 valid channels, 1 channel is reserved), every channel must be 16-bit unsigned integer. 3DLUT contains 65x65x128 entries with holes that are not filled. Take RGB as example, the nodes RxGx65 to RxGx127 are not filled, are “don’t care” bits, and not accessed for the 65x65x65 nodes.
+The mfx3DLutInterpolationMethod enumerator specifies the 3DLUT interpolation method.
+Values:
+Default 3DLUT interpolation Method. The library selects the most appropriate 3DLUT interpolation method.
+3DLUT Trilinear interpolation method.
+3DLUT Tetrahedral interpolation method.
+IntraPredBlockSize/InterPredBlockSize specifies minimum block size of inter-prediction.
+Unspecified.
+16x16 minimum block size.
+8x8 minimum block size. May be 16x16 or 8x8.
+4x4 minimum block size. May be 16x16, 8x8, or 4x4.
+The IntraRefreshTypes enumerator itemizes types of intra refresh.
+Encode without refresh.
+Vertical refresh, by column of MBs.
+Horizontal refresh, by rows of MBs.
+Horizontal refresh by slices without overlapping.
+The IOPattern enumerator itemizes memory access patterns for API functions. +Use bit-ORed values to specify input and output access patterns.
+Input to functions is a video memory surface.
+Input to functions is a linear buffer directly in system memory or in system memory through an external allocator.
+Output to functions is a video memory surface.
+Output to functions is a linear buffer directly in system memory or in system memory through an external allocator.
+The JPEGColorFormat enumerator itemizes the JPEG color format options.
+Unknown color format. The decoder tries to determine color format from available in bitstream information. If such information is not present, then MFX_JPEG_COLORFORMAT_YCbCr color format is assumed.
+Bitstream contains Y, Cb and Cr components.
+The JPEGScanType enumerator itemizes the JPEG scan types.
+Unknown scan type.
+Interleaved scan.
+Non-interleaved scan.
+The LongTermIdx specifies long term index of picture control
+Long term index of picture is undefined.
+The LookAheadDownSampling enumerator is used to control down sampling in look +ahead bitrate control mode in AVC encoder.
+Default value, it is up to the encoder what down sampling value to use.
+Do not use down sampling, perform estimation on original size frames. This is the slowest setting that produces the best quality.
+Down sample frames two times before estimation.
+Down sample frames four times before estimation. This option may significantly degrade quality.
+The MBQPMode enumerator itemizes QP update modes.
+QP array contains QP values.
+QP array contains deltas for QP.
+QP array contains deltas for QP or absolute QP values.
+The mfxHandleType enumerator itemizes system handle types that implementations might use.
+Values:
+Pointer to the IDirect3DDeviceManager9 interface. See Working with Microsoft* DirectX* Applications for more details on how to use this handle.
+Pointer to the IDirect3DDeviceManager9 interface. See Working with Microsoft* DirectX* Applications for more details on how to use this handle.
+Pointer to the ID3D11Device interface. See Working with Microsoft* DirectX* Applications for more details on how to use this handle.
+VADisplay interface. See Working with VA-API Applications for more details on how to use this handle.
+Pointer to VAConfigID interface. It represents external VA config for Common Encryption usage model.
+Pointer to VAContextID interface. It represents external VA context for Common Encryption usage model.
+Pointer to CmDevice interface ( Intel(r) C for Metal Runtime ).
+Pointer to HddlUnite::WorkloadContext interface.
+Pointer to PXP context for protected content support.
+Pointer to interface of type mfxConfigInterface.
+Pointer to interface of type mfxMemoryInterface.
+This enumerator itemizes implementation types. The implementation type is a bit OR’ed value of the base type and any decorative flags.
+Note
+This enumerator is for legacy dispatcher compatibility only. The new dispatcher does not use it.
+Auto Selection/In or Not Supported/Out.
+Pure software implementation.
+Hardware accelerated implementation (default device).
+Auto selection of any hardware/software implementation.
+Auto selection of any hardware implementation.
+Hardware accelerated implementation (2nd device).
+Hardware accelerated implementation (3rd device).
+Hardware accelerated implementation (4th device).
+This value cannot be used for session initialization. It may be returned by the MFXQueryIMPL function to show that the session has been initialized in run-time mode.
+Hardware acceleration can go through any supported OS infrastructure. This is the default value. The default value is used by the legacy Intel(r) Media SDK if none of the MFX_IMPL_VIA_xxx flags are specified by the application.
+Hardware acceleration goes through the Microsoft* Direct3D* 9 infrastructure.
+Hardware acceleration goes through the Microsoft* Direct3D* 11 infrastructure.
+Hardware acceleration goes through the Linux* VA-API infrastructure.
+Hardware acceleration goes through the HDDL* Unite*.
+One of the MFXQueryIMPL returns.
+The application can use the macro MFX_IMPL_BASETYPE(x) to obtain the base implementation type.
+The mfxImplCapsDeliveryFormat enumerator specifies delivery format of the implementation capability.
+Values:
+Deliver capabilities as mfxImplDescription structure.
+Deliver capabilities as mfxImplementedFunctions structure.
+Deliver pointer to the null-terminated string with the path to the implementation. String is delivered in a form of buffer of mfxChar type.
+Deliver extended device ID information as mfxExtendedDeviceId structure.
+Deliver capabilities as mfxSurfaceTypesSupported structure.
+The mfxMediaAdapterType enumerator itemizes types of graphics adapters.
+Values:
+Unknown type.
+Integrated graphics adapter.
+Discrete graphics adapter.
+The mfxMemoryFlags enumerator specifies memory access mode.
+Values:
+The surface is mapped for reading.
+The surface is mapped for writing.
+The surface is mapped for reading and writing.
+The mapping would be done immediately without any implicit synchronizations.
This flag is optional.
+Specifies NAL unit types supported by the HEVC encoder.
+The encoder will decide what NAL unit type to use.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+See Table 7-1 of the ITU-T H.265 specification for the definition of these type.
+The mfxPriority enumerator describes the session priority.
+Values:
+Low priority: the session operation halts when high priority tasks are executing and more than 75% of the CPU is being used for normal priority tasks.
+Normal priority: the session operation is halted if there are high priority tasks.
+High priority: the session operation blocks other lower priority session operations.
+The mfxResourceType enumerator specifies types of different native data frames and buffers.
+Values:
+System memory.
+Pointer to VA surface index.
+Pointer to VA surface index.
+Pointer to VA buffer index.
+Pointer to VA buffer index.
+Pointer to IDirect3DSurface9.
+Pointer to ID3D11Texture2D.
+Pointer to ID3D12Resource.
+DMA resource.
+HDDL Unite Remote memory handle.
+Itemizes status codes returned by API functions.
+Values:
+No error.
+Unknown error.
+Null pointer.
+Unsupported feature.
+Failed to allocate memory.
+Insufficient buffer at input/output.
+Invalid handle.
+Failed to lock the memory block.
+Member function called before initialization.
+The specified object is not found.
+Expect more data at input.
+Expect more surface at output.
+Operation aborted.
+Lose the hardware acceleration device.
+Incompatible video parameters.
+Invalid video parameters.
+Undefined behavior.
+Device operation failure.
+Expect more bitstream buffers at output.
+Device operation failure caused by GPU hang.
+Bigger output surface required.
+Write access is already acquired and user requested another write access, or read access with MFX_MEMORY_NO_WAIT flag.
+Feature or function not implemented.
+Expect additional extended configuration buffer.
+The previous asynchronous operation is in execution.
+The hardware acceleration device is busy.
+The video parameters are changed during decoding.
+Software acceleration is used.
+Incompatible video parameters.
+The value is saturated based on its valid range.
+The value is out of valid range.
+One of requested filters has been skipped.
+Frame is not ready, but bitstream contains partial output.
+Timeout expired for internal frame allocation.
+Task has been completed.
+There is some more work to do.
+Task is waiting for resources.
+Return MFX_ERR_MORE_DATA but submit internal asynchronous task.
+The MirroringType enumerator itemizes mirroring types.
+The mfxDenoiseMode enumerator itemizes denoise modes.
+The mfxDenoiseMode enumerator specifies the mode of denoise.
+Values:
+Default denoise mode. The library selects the most appropriate denoise mode.
+The enumeration to separate common denoise mode above and vendor specific.
+Indicates auto BD rate improvement in pre-processing before video encoding, ignore Strength.
+Indicates auto subjective quality improvement in pre-processing before video encoding, ignore Strength.
+Indicates auto adjust subjective quality in post-processing (after decoding) for video playback, ignore Strength.
+Indicates manual mode for pre-processing before video encoding, allow to adjust the denoise strength manually.
+Indicates manual mode for post-processing for video playback, allow to adjust the denoise strength manually.
+Multi-view high profile. The encoding of VDEnc or LowPower ON is not supported.
+Stereo high profile. The encoding of VDEnc or LowPower ON is not supported.
+The MVPrecision enumerator specifies the motion estimation precision
+The NominalRange enumerator itemizes pixel’s value nominal range.
+Range is not defined.
+Range is from 0 to 255.
+Range is from 16 to 235.
+The PartialBitstreamOutput enumerator indicates flags of partial bitstream output +type.
+Do not use partial output
+Partial bitstream output will be aligned to slice granularity
+Partial bitstream output will be aligned to user-defined block size granularity
+Partial bitstream output will be return any coded data available at the end of SyncOperation timeout
+The PayloadCtrlFlags enumerator itemizes additional payload properties.
+Insert this payload into HEVC Suffix SEI NAL-unit.
+The PicStruct enumerator itemizes picture structure. Use bit-OR’ed values to +specify the desired picture type.
+Unspecified or mixed progressive/interlaced/field pictures.
+Progressive picture.
+Top field in first interlaced picture.
+Bottom field in first interlaced picture.
+First field repeated: pic_struct=5 or 6 in H.264.
+Double the frame for display: pic_struct=7 in H.264.
+Triple the frame for display: pic_struct=8 in H.264.
+Single field in a picture.
+Top field in a picture: pic_struct = 1 in H.265.
+Bottom field in a picture: pic_struct = 2 in H.265.
+Paired with previous field: pic_struct = 9 or 10 in H.265.
+Paired with next field: pic_struct = 11 or 12 in H.265
+The PicType enumerator itemizes picture type.
+Picture type is unknown.
+Picture is a frame.
+Picture is a top field.
+Picture is a bottom field.
+The PRefType enumerator itemizes models of reference list construction and DPB +management when GopRefDist=1.
+Allow encoder to decide.
+Regular sliding window used for DPB removal process.
+Let N be the max reference list’s size. Encoder treats each N’s frame as a ‘strong’ reference and the others as ‘weak’ references. The encoder uses a ‘weak’ reference only for prediction of the next frame and removes it from DPB immediately after use. ‘Strong’ references are removed from DPB by a sliding window.
+The TuneQuality enumerator specifies tuning option for encode. Multiple tuning options +can be combined using bit mask.
+Tuning quality is disabled.
+The encoder optimizes quality according to Peak Signal-to-Noise Ratio (PSNR) metric.
+The encoder optimizes quality according to Structural Similarity Index Measure (SSIM) metric.
+The encoder optimizes quality according to Multi-Scale Structural Similarity Index Measure (MS-SSIM) metric.
+The encoder optimizes quality according to Video Multi-Method Assessment Fusion (VMAF) metric.
+The encoder makes perceptual quality optimization.
+The Protected enumerator describes the protection schemes.
+The protection scheme is based on the Widevine* DRM from Google*.
+The protection scheme is based on the Widevine* Modular DRM* from Google*.
+The RateControlMethod enumerator itemizes bitrate control methods.
+Use the constant bitrate control algorithm.
+Use the variable bitrate control algorithm.
+Use the constant quantization parameter algorithm.
+Use the average variable bitrate control algorithm.
+Use the VBR algorithm with look ahead. It is a special bitrate control mode in the AVC encoder that has been designed to improve encoding quality. It works by performing extensive analysis of several dozen frames before the actual encoding and as a side effect significantly increases encoding delay and memory consumption.
+The only available rate control parameter in this mode is mfxInfoMFX::TargetKbps. Two other parameters, MaxKbps and InitialDelayInKB, are ignored. To control LA depth the application can use mfxExtCodingOption2::LookAheadDepth parameter.
+This method is not HRD compliant.
+Use the Intelligent Constant Quality algorithm. This algorithm improves subjective video quality of encoded stream. Depending on content, it may or may not decrease objective video quality. Only one control parameter is used - quality factor, specified by mfxInfoMFX::ICQQuality.
+Use the Video Conferencing Mode algorithm. This algorithm is similar to the VBR and uses the same set of parameters mfxInfoMFX::InitialDelayInKB, TargetKbpsandMaxKbps. It is tuned for IPPP GOP pattern and streams with strong temporal correlation between frames. It produces better objective and subjective video quality in these conditions than other bitrate control algorithms. It does not support interlaced content, B-frames and produced stream is not HRD compliant.
+Use Intelligent Constant Quality algorithm with look ahead. Quality factor is specified by mfxInfoMFX::ICQQuality. To control LA depth the application can use mfxExtCodingOption2::LookAheadDepth parameter.
+This method is not HRD compliant.
+MFX_RATECONTROL_LA_EXT has been removed
+Use HRD compliant look ahead rate control algorithm.
+Use the variable bitrate control algorithm with constant quality. This algorithm trying to achieve the target subjective quality with the minimum number of bits, while the bitrate constraint and HRD compliance are satisfied. It uses the same set of parameters as VBR and quality factor specified by mfxExtCodingOption3::QVBRQuality.
+The ROImode enumerator itemizes QP adjustment mode for ROIs.
+Priority mode.
+QP mode
+Absolute QP
+The Rotation enumerator itemizes the JPEG rotation options.
+No rotation.
+90 degree rotation.
+180 degree rotation.
+270 degree rotation.
+The SampleAdaptiveOffset enumerator uses bit-ORed values to itemize corresponding +HEVC encoding feature.
+Use default value for platform/TargetUsage.
+Disable SAO. If set during Init leads to SPS sample_adaptive_offset_enabled_flag = 0. If set during Runtime, leads to to slice_sao_luma_flag = 0 and slice_sao_chroma_flag = 0 for current frame.
+Enable SAO for luma (slice_sao_luma_flag = 1).
+Enable SAO for chroma (slice_sao_chroma_flag = 1).
+The ScalingMode enumerator itemizes variants of scaling filter implementation.
+Default scaling mode. The library selects the most appropriate scaling method.
+Low power scaling mode which is applicable for library implementations. The exact scaling algorithm is defined by the library.
+The best quality scaling mode.
+The enumeration to separate common scaling controls above and vendor specific.
+The mode to run scaling operation on Execution Units (EUs).
+The special optimization mode where scaling operation running on SFC (Scaler & Format Converter) is coupled with VDBOX (also known as Multi-Format Codec Engines). This mode is applicable for DECODE_VPP domain functions.
+The ScenarioInfo enumerator itemizes scenarios for the encoding session.
+The SegmentFeature enumerator indicates features enabled for the segment. +These values are used with the mfxVP9SegmentParam::FeatureEnabled parameter.
+Quantization index delta.
+Loop filter level delta.
+Reference frame.
+Skip.
+The SegmentIdBlockSize enumerator indicates the block size represented by each +segment_id in segmentation map. These values are used with the +mfxExtVP9Segmentation::SegmentIdBlockSize parameter.
+Unspecified block size.
+8x8 block size.
+16x16 block size.
+32x32 block size.
+64x64 block size.
+The SkipFrame enumerator is used to define usage of mfxEncodeCtrl::SkipFrame +parameter.
+Frame skipping is disabled, mfxEncodeCtrl::SkipFrame is ignored.
+Skipping is allowed, when mfxEncodeCtrl::SkipFrame is set encoder inserts into bitstream frame where all macroblocks are encoded as skipped. Only non-reference P- and B-frames can be skipped. If GopRefDist = 1 and mfxEncodeCtrl::SkipFrame is set for reference P-frame, it will be encoded as non-reference.
+Similar to MFX_SKIPFRAME_INSERT_DUMMY, but when mfxEncodeCtrl::SkipFrame is set encoder inserts nothing into bitstream.
+mfxEncodeCtrl::SkipFrame indicates number of missed frames before the current frame. Affects only BRC, current frame will be encoded as usual.
+The TargetUsage enumerator itemizes a range of numbers from MFX_TARGETUSAGE_1, +best quality, to MFX_TARGETUSAGE_7, best speed. It indicates trade-offs between +quality and speed. The application can use any number in the range. The actual +number of supported target usages depends on implementation. If the specified +target usage is not supported, the encoder will use the closest supported value.
+Best quality
+Balanced quality and speed.
+Best speed
+Unspecified target usage.
+Best quality.
+Balanced quality and speed.
+Best speed.
+The TelecinePattern enumerator itemizes telecine patterns.
+3:2 telecine.
+2:3:3:2 telecine.
+One frame repeat telecine.
+4:1 telecine.
+User must provide position inside a sequence of 5 frames where the artifacts start.
+The TimeStampCalc enumerator itemizes time-stamp calculation methods.
+The time stamp calculation is based on the input frame rate if time stamp is not explicitly specified.
+Adjust time stamp to 29.97fps on 24fps progressively encoded sequences if telecine attributes are available in the bitstream and time stamp is not explicitly specified. The input frame rate must be specified.
+The TransferMatrix enumerator itemizes color transfer matrices.
+Transfer matrix is not specified
+Transfer matrix from ITU-R BT.709 standard.
+Transfer matrix from ITU-R BT.601 standard.
+The TrellisControl enumerator is used to control trellis quantization in AVC +encoder. The application can turn it on or off for any combination of I, P, and +B frames by combining different enumerator values. For example, +MFX_TRELLIS_I | MFX_TRELLIS_B turns it on for I and B frames.
+Default value, it is up to the encoder to turn trellis quantization on or off.
+Turn trellis quantization off for all frame types.
+Turn trellis quantization on for I-frames.
+Turn trellis quantization on for P-frames.
+Turn trellis quantization on for B-frames.
+The VP9ReferenceFrame enumerator itemizes reference frame type by +the mfxVP9SegmentParam::ReferenceFrame parameter.
+Intra.
+Last.
+Golden.
+Alternative reference.
+The VPPFieldProcessingMode enumerator is used to control VPP field processing +algorithm.
+Copy the whole frame.
+Copy only one field.
+Swap top and bottom fields.
+The WeightedPred enumerator itemizes weighted prediction modes.
+Allow encoder to decide.
+Use default weighted prediction.
+Use explicit weighted prediction.
+Use implicit weighted prediction (for B-frames only).
+The FilmGrainFlags enumerator itemizes flags in AV1 film grain parameters.
+Film grain isn’t added to this frame.
+Film grain is added to this frame.
+New set of film grain parameters is sent for this frame.
+Chroma scaling is inferred from luma scaling.
+Overlap between film grain blocks is applied.
+Clipping to the restricted (studio) range is applied after adding the film grain.
+The mfxHyperMode enumerator describes HyperMode implementation behavior.
+Values:
+Don’t use HyperMode implementation.
+Enable HyperMode implementation and return error if some issue on initialization.
+Enable HyperMode implementation and switch to single fallback if some issue on initialization.
+Specifies the surface pool allocation policies.
+Values:
+Recommends to limit max pool size by sum of requested surfaces asked by components.
+Dynamic allocation with no limit.
+Max pool size is limited by NumberToPreAllocate + DeltaToAllocateOnTheFly.
+The mfxAV1SegmentIdBlockSize enumerator indicates the block size represented by each segment_id in segmentation map.
+The AV1 SegmentIdBlockSize enumerator indicates the block size represented by each segment_id in segmentation map. These values are used with the mfxExtAV1Segmentation::SegmentIdBlockSize parameter.
+Values:
+Unspecified block size.
+block size 4x4
+block size 8x8
+block size 16x16
+block size 32x32
+block size 64x64
+block size 128x128
+The AV1SegmentFeature enumerator indicates features enabled for the segment.
+use alternate Quantizer.
+use alternate loop filter value on y plane vertical.
+use alternate loop filter value on y plane horizontal.
+use alternate loop filter value on u plane.
+use alternate loop filter value on v plane.
+use segment reference frame.
+use segment (0,0) + skip mode.
+use global motion vector.
+Flags to specify what statistics will be reported by the implementation.
+Block level statistics.
+Frame level statistics.
+The mfxSurfaceComponent enumerator specifies the internal surface pool to use when importing surfaces.
+Values:
+Unknown surface component.
+Shared surface for encoding.
+Shared surface for decoding.
+Shared surface for VPP input.
+Shared surface for VPP output.
+The mfxSurfaceType enumerator specifies the surface type described by mfxSurfaceHeader.
+Values:
+Unknown surface type.
+D3D11 surface of type ID3D11Texture2D.
+VA-API surface.
+OpenCL 2D image (cl_mem).
+D3D12 surface of type ID3D12Resource with 2D texture type.
+Vulkan 2D image (VkImage).
+The mfxStructureType enumerator specifies the structure type for configuration with the string interface.
+Values:
+Unknown structure type.
+Structure of type mfxVideoParam.
+The mfxAISuperResolutionMode enumerator specifies the mode of AI based super resolution.
+Values:
+Super Resolution is disabled.
+Default super resolution mode. The library selects the most appropriate super resolution mode.
+In this mode, super Resolution is optimized or trained to have high sharpness level. This mode is recommended to be used in video conference(camera noise) or similar usage scenario.
+In this mode, Super Resolution is optimized or trained to remove encoding artifacts with medium sharpness level. This mode is recommended to be used in video surveillance or similar usage scenarios which may have camera noise and encoding artifacts due to limited network bandwidth.
+Values:
+Super Resolution algorithm by default. The library selects the most appropriate super resolution algorithm.
+Super Resolution algorithm1.
+Super Resolution algorithm2, MFX_AI_SUPER_RESOLUTION_ALGORITHM_2 video quality is expected to be better than MFX_AI_SUPER_RESOLUTION_ALGORITHM_1.
+Values:
+AI based frame interpolation is disabled. The library duplicates the frame if AI frame interpolation is disabled.
+Default AI based frame interpolation mode. The library selects the most appropriate AI based frame interpolation mode.
+AI based frame interpolation in best speed.
+AI based frame interpolation in best quality.
+The AlphaChannelMode enumerator specifies alpha is pre-multiplied or straight.
+RGB and alpha are independent, then the alpha value specifies how solid it is. We set it to the default value, i.e., the alpha source data is already pre-multiplied, so that the decoded samples of the associated primary picture should not be multiplied by the interpretation sample values of the auxiliary coded picture in the display process after output from the decoding process.
+RGB and alpha are linked, then the alpha value specifies how much it obscures whatever is behind it. Therefore, the decoded samples of the associated primary picture should be multiplied by the interpretation sample values of the auxiliary coded picture in the display process after output from the decoding process.
+Functions that identify graphics adapters for Microsoft* DirectX* video +processing, encoding, and decoding.
+Returns a list of adapters that are suitable to handle workload input_info
. The list is sorted in priority order, with iGPU given the highest precedence. This rule may change in the future. If the input_info
pointer is NULL, the list of all available adapters will be returned.
Deprecated in API version 2.9. Use MFXEnumImplementations and MFXSetConfigFilterProperty to query adapter capabilities and to select a suitable adapter for the input workload. Use MFX_DEPRECATED_OFF macro to turn off the deprecation message visualization.
+This function is available since API version 1.31.
+input_info – [in] Pointer to workload description. See mfxComponentInfo description for details.
adapters – [out] Pointer to output description of all suitable adapters for input workload. See mfxAdaptersInfo description for details.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR
+input_info
or adapters pointer is NULL.
+MFX_ERR_NOT_FOUND No suitable adapters found.
+ +MFX_WRN_OUT_OF_RANGE Not enough memory to report back entire list of adapters. In this case as many adapters as possible will be returned. +Returns list of adapters that are suitable to decode the input bitstream. The list is sorted in priority order, with iGPU given the highest precedence. This rule may change in the future. This function is a simplification of MFXQueryAdapters, because bitstream is a description of the workload itself.
+Deprecated in API version 2.9. Use MFXEnumImplementations and MFXSetConfigFilterProperty to query adapter capabilities and to select a suitable adapter for the input workload. Use MFX_DEPRECATED_OFF macro to turn off the deprecation message visualization.
+This function is available since API version 1.31.
+bitstream – [in] Pointer to bitstream with input data.
codec_id – [in] Codec ID to determine the type of codec for the input bitstream.
adapters – [out] Pointer to the output list of adapters. Memory should be allocated by user. See mfxAdaptersInfo description for details.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR bitstream or
+adapters
pointer is NULL.
+MFX_ERR_NOT_FOUND No suitable adapters found.
+ +MFX_WRN_OUT_OF_RANGE Not enough memory to report back entire list of adapters. In this case as many adapters as possible will be returned. +Returns the number of detected graphics adapters. It can be used before calling MFXQueryAdapters to determine the size of input data that the user will need to allocate.
+Deprecated in API version 2.9. Use MFXEnumImplementations and MFXSetConfigFilterProperty to query adapter capabilities and to select a suitable adapter for the input workload. Use MFX_DEPRECATED_OFF macro to turn off the deprecation message visualization.
+This function is available since API version 1.31.
+num_adapters – [out] Pointer for the output number of detected graphics adapters.
+MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR num_adapters pointer is NULL.
+ +Functions to report capabilities of available implementations and create +user-requested library implementations.
+Delivers implementation capabilities in the requested format according to the format value.
+This function is available since API version 2.0.
+format – [in] Format in which capabilities must be delivered. See mfxImplCapsDeliveryFormat for more details.
num_impls – [out] Number of the implementations.
Array of handles to the capability report or NULL in case of unsupported format or NULL num_impls pointer. Length of array is equal to num_impls.
+Important
+The MFXQueryImplsDescription()
function is mandatory for any implementation.
Destroys the handle allocated by the MFXQueryImplsDescription function. Implementation must remember which handles are released. Once the last handle is released, this function must release memory allocated for the array of handles.
+This function is available since API version 2.0.
+hdl – [in] Handle to destroy. Can be equal to NULL.
+MFX_ERR_NONE The function completed successfully.
+Important
+The MFXReleaseImplDescription()
function is mandatory for any implementation.
Functions for internal memory allocation and management.
+Returns surface which can be used as input for VPP.
+VPP should be initialized before this call. Surface should be released with mfxFrameSurface1::FrameInterface.Release(…) after usage. The value of mfxFrameSurface1::Data.Locked for the returned surface is 0.
+This function is available since API version 2.0.
+session – [in] Session handle.
surface – [out] Pointer is set to valid mfxFrameSurface1 object.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR If double-pointer to the
+surface
is NULL.
+MFX_ERR_INVALID_HANDLE If
+session
was not initialized.
+MFX_ERR_NOT_INITIALIZED If VPP was not initialized (allocator needs to know surface size from somewhere).
+MFX_ERR_MEMORY_ALLOC In case of any other internal allocation error.
+MFX_WRN_ALLOC_TIMEOUT_EXPIRED In case of waiting timeout expired (if set with
+mfxExtAllocationHints). +Alias below, can be used as well:
+Alias for MFXMemory_GetSurfaceForVPP function.
+Returns surface which can be used as output of VPP.
+VPP should be initialized before this call. Surface should be released with mfxFrameSurface1::FrameInterface.Release(…) after usage. The value of mfxFrameSurface1::Data.Locked for the returned surface is 0.
+This function is available since API version 2.1.
+session – [in] Session handle.
surface – [out] Pointer is set to valid mfxFrameSurface1 object.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR If double-pointer to the
+surface
is NULL.
+MFX_ERR_INVALID_HANDLE If
+session
was not initialized.
+MFX_ERR_NOT_INITIALIZED If VPP was not initialized (allocator needs to know surface size from somewhere).
+MFX_ERR_MEMORY_ALLOC In case of any other internal allocation error.
+MFX_WRN_ALLOC_TIMEOUT_EXPIRED In case of waiting timeout expired (if set with
+mfxExtAllocationHints). +Returns a surface which can be used as input for the encoder.
+Encoder should be initialized before this call. Surface should be released with mfxFrameSurface1::FrameInterface.Release(…) after usage. The value of mfxFrameSurface1::Data.Locked for the returned surface is 0.
+This function is available since API version 2.0.
+session – [in] Session handle.
surface – [out] Pointer is set to valid mfxFrameSurface1 object.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If session was not initialized.
+MFX_ERR_NOT_INITIALIZED If the encoder was not initialized (allocator needs to know surface size from somewhere).
+MFX_ERR_MEMORY_ALLOC In case of any other internal allocation error.
+MFX_WRN_ALLOC_TIMEOUT_EXPIRED In case of waiting timeout expired (if set with
+mfxExtAllocationHints). +Returns a surface which can be used as output of the decoder.
+Decoder should be initialized before this call. Surface should be released with mfxFrameSurface1::FrameInterface.Release(…) after usage. The value of mfxFrameSurface1::Data.Locked for the returned surface is 0.’
+This function is available since API version 2.0.
+Note
+This function was added to simplify transition from legacy surface management to the proposed internal allocation approach. Previously, the user allocated surfaces for the working pool and fed them to the decoder using DecodeFrameAsync calls. With MFXMemory_GetSurfaceForDecode it is possible to change the existing pipeline by just changing the source of work surfaces. Newly developed applications should prefer direct usage of DecodeFrameAsync with internal allocation.
+session – [in] Session handle.
surface – [out] Pointer is set to valid mfxFrameSurface1 object.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If session was not initialized.
+MFX_ERR_NOT_INITIALIZED If the decoder was not initialized (allocator needs to know surface size from somewhere).
+MFX_ERR_MEMORY_ALLOC Other internal allocation error.
+MFX_WRN_ALLOC_TIMEOUT_EXPIRED In case of waiting timeout expired (if set with
+mfxExtAllocationHints). +Functions to manage sessions.
+Creates and initializes a session in the legacy mode for compatibility with Intel(r) Media SDK applications. This function is deprecated starting from API version 2.0, applications must use MFXLoad with mfxCreateSession to select the implementation and initialize the session.
+Call this function before calling any other API function. If the desired implementation specified by impl
is MFX_IMPL_AUTO, the function will search for the platform-specific implementation. If the function cannot find the platform-specific implementation, it will use the software implementation instead.
The ver
argument indicates the desired version of the library implementation. The loaded implementation will have an API version compatible to the specified version (equal in the major version number, and no less in the minor version number.) If the desired version is not specified, the default is to use the API version from the library release with which an application is built.
Production applications should always specify the minimum API version that meets the functional requirements. For example, if an application uses only H.264 decoding as described in API v1.0, the application should initialize the library with API v1.0. This ensures backward compatibility.
+Deprecated in API version 2.3. Use MFXLoad and MFXCreateSession to initialize the session. Use MFX_DEPRECATED_OFF macro to turn off the deprecation message visualization.
+This function is available since API version 1.0.
+impl – [in] mfxIMPL enumerator that indicates the desired legacy Intel(r) Media SDK implementation.
ver – [in] Pointer to the minimum library version or zero, if not specified.
session – [out] Pointer to the legacy Intel(r) Media SDK session handle.
MFX_ERR_NONE The function completed successfully. The output parameter contains the handle of the session.
+MFX_ERR_UNSUPPORTED The function cannot find the desired legacy Intel(r) Media SDK implementation or version.
+ +Creates and initializes a session in the legacy mode for compatibility with Intel(r) Media SDK applications. This function is deprecated starting from API version 2.0, applications must use MFXLoad with mfxCreateSession to select the implementation and initialize the session.
+Call this function before calling any other API functions. If the desired implementation specified by par
is MFX_IMPL_AUTO, the function will search for the platform-specific implementation. If the function cannot find the platform-specific implementation, it will use the software implementation instead.
The argument par.Version
indicates the desired version of the implementation. The loaded implementation will have an API version compatible to the specified version (equal in the major version number, and no less in the minor version number.) If the desired version is not specified, the default is to use the API version from the library release with which an application is built.
Production applications should always specify the minimum API version that meets the functional requirements. For example, if an application uses only H.264 decoding as described in API v1.0, the application should initialize the library with API v1.0. This ensures backward compatibility.
+The argument par.ExternalThreads
specifies threading mode. Value 0 means that the implementation should create and handle work threads internally (this is essentially the equivalent of the regular MFXInit).
Deprecated in API version 2.3. Use MFXLoad and MFXCreateSession to initialize the session. Use MFX_DEPRECATED_OFF macro to turn off the deprecation message visualization.
+This function is available since API version 1.14.
+par – [in] mfxInitParam structure that indicates the desired implementation, minimum library version and desired threading mode.
session – [out] Pointer to the session handle.
MFX_ERR_NONE The function completed successfully. The output parameter contains the handle of the session.
+MFX_ERR_UNSUPPORTED The function cannot find the desired implementation or version.
+ +Creates and initializes a session starting from API version 2.0. This function is used by the dispatcher. The dispatcher creates and fills the mfxInitializationParam structure according to mfxConfig values set by an application. Calling this function directly is not recommended. Instead, applications must call the mfxCreateSession function.
+This function is available since API version 2.0.
+par – [in] mfxInitializationParam structure that indicates the minimum library version and acceleration type.
session – [out] Pointer to the session handle.
MFX_ERR_NONE The function completed successfully. The output parameter contains the handle of the session.
+MFX_ERR_UNSUPPORTED The function cannot find the desired implementation or version.
+ +Important
+The MFXInitialize()
function is mandatory for any implementation.
Completes and deinitializes a session. Any active tasks in execution or in queue are aborted. The application cannot call any API function after calling this function.
+All child sessions must be disjoined before closing a parent session.
This function is available since API version 1.0.
+session – [in] session handle.
+MFX_ERR_NONE The function completed successfully.
+Important
+The MFXClose()
function is mandatory for any implementation.
Returns the implementation type of a given session.
+This function is available since API version 1.0.
+session – [in] Session handle.
impl – [out] Pointer to the implementation type
MFX_ERR_NONE The function completed successfully.
+Returns the implementation version.
+This function is available since API version 1.0.
+session – [in] Session handle.
version – [out] Pointer to the returned implementation version.
MFX_ERR_NONE The function completed successfully.
+Joins the child session to the current session.
+After joining, the two sessions share thread and resource scheduling for asynchronous operations. However, each session still maintains its own device manager and buffer/frame allocator. Therefore, the application must use a compatible device manager and buffer/frame allocator to share data between two joined sessions.
+The application can join multiple sessions by calling this function multiple times. When joining the first two sessions, the current session becomes the parent responsible for thread and resource scheduling of any later joined sessions.
+Joining of two parent sessions is not supported.
+This function is available since API version 1.1.
+session – [inout] The current session handle.
child – [in] The child session handle to be joined
MFX_ERR_NONE The function completed successfully.
+MFX_WRN_IN_EXECUTION Active tasks are executing or in queue in one of the sessions. Call this function again after all tasks are completed.
+ + MFX_ERR_UNSUPPORTED The child session cannot be joined with the current session. +Removes the joined state of the current session.
+ After disjoining, the current session becomes independent. The application must ensure there is no active task running in the session before calling this API function.
+
This function is available since API version 1.1.
+session – [inout] The current session handle.
+MFX_ERR_NONE The function completed successfully.
+MFX_WRN_IN_EXECUTION Active tasks are executing or in queue in one of the sessions. Call this function again after all tasks are completed.
+ + MFX_ERR_UNDEFINED_BEHAVIOR The session is independent, or this session is the parent of all joined sessions. +Creates a clean copy of the current session.
+ The cloned session is an independent session and does not inherit any user-defined buffer, frame allocator, or device manager handles from the current session.
+ This function is a light-weight equivalent of MFXJoinSession after MFXInit.
+
This function is available since API version 1.1.
+session – [in] The current session handle.
clone – [out] Pointer to the cloned session handle.
MFX_ERR_NONE The function completed successfully.
+Sets the current session priority.
+This function is available since API version 1.1.
+session – [in] The current session handle.
priority – [in] Priority value.
MFX_ERR_NONE The function completed successfully.
+Returns the current session priority.
+This function is available since API version 1.1.
+session – [in] The current session handle.
priority – [out] Pointer to the priority value.
MFX_ERR_NONE The function completed successfully.
+Functions that implement a complete decoder that decompresses input bitstreams +directly to output frame surfaces.
+Works in one of two modes:
+If the in
parameter is zero, the function returns the class configurability in the output structure. A non-zero value in each field of the output structure indicates that the field is configurable by the implementation with the MFXVideoDECODE_Init function.
If the in
parameter is non-zero, the function checks the validity of the fields in the input structure. Then the function returns the corrected values to the output structure. If there is insufficient information to determine the validity or correction is impossible, the function zeros the fields. This feature can verify whether the implementation supports certain profiles, levels, or bitrates.
CodecId
field of the output structure is a mandated field (to be filled by the application) to identify the coding standard.
+This function is available since API version 1.0.
+session – [in] Session handle.
in – [in] Pointer to the mfxVideoParam structure as input.
out – [out] Pointer to the mfxVideoParam structure as output.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_UNSUPPORTED The function failed to identify a specific implementation for the required features.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The decoding may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Important
+The MFXVideoDECODE_Query()
is mandatory when implementing a decoder.
Parses the input bitstream and fills the mfxVideoParam structure with appropriate values, such as resolution and frame rate, for the Init API function.
+The application can then pass the resulting structure to the MFXVideoDECODE_Init function for decoder initialization.
+An application can call this API function at any time before or after decoder initialization. If the library finds a sequence header in the bitstream, the function moves the bitstream pointer to the first bit of the sequence header. Otherwise, the function moves the bitstream pointer close to the end of the bitstream buffer but leaves enough data in the buffer to avoid possible loss of start code.
+The CodecId
field of the mfxVideoParam structure is a mandated field (to be filled by the application) to identify the coding standard.
The application can retrieve a copy of the bitstream header, by attaching the mfxExtCodingOptionSPSPPS structure to the mfxVideoParam structure.
+This function is available since API version 1.0.
+session – [in] Session handle.
bs – [in] Pointer to the bitstream.
par – [in] Pointer to the mfxVideoParam structure.
MFX_ERR_NONE The function successfully filled the structure. It does not mean that the stream can be decoded by the library. The application should call MFXVideoDECODE_Query function to check if decoding of the stream is supported.
MFX_ERR_MORE_DATA The function requires more bitstream data.
MFX_ERR_UNSUPPORTED CodecId
field of the mfxVideoParam structure indicates some unsupported codec.
MFX_ERR_INVALID_HANDLE Session is not initialized.
MFX_ERR_NULL_PTR bs
or par
pointer is NULL.
Returns minimum and suggested numbers of the output frame surfaces required for decoding initialization and their type.
+Init will call the external allocator for the required frames with the same set of numbers. The use of this function is recommended.
For more information, see the Working with Hardware Acceleration section.
+ +The CodecId
field of the mfxVideoParam structure is a mandated field (to be filled by the application) to identify the coding standard. This function does not validate I/O parameters except those used in calculating the number of output surfaces.
This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure as input.
request – [in] Pointer to the mfxFrameAllocRequest structure as output.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range, or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The encoding may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Allocates memory and prepares tables and necessary structures for encoding.
+This function also does extensive validation to ensure if the configuration, as specified in the input parameters, is supported.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range, or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The encoding may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +MFX_ERR_UNDEFINED_BEHAVIOR The function is called twice without a close. +Important
+The MFXVideoDECODE_Init()
is mandatory when implementing a decoder.
Stops the current decoding operation and restores internal structures or parameters for a new decoding operation.
+Reset serves two purposes:
+It recovers the decoder from errors.
It restarts decoding from a new position
This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected that video parameters are wrong or they conflict with initialization parameters. Reset is impossible.
+MFX_ERR_INCOMPATIBLE_VIDEO_PARAM The function detected that video parameters provided by the application are incompatible with initialization parameters. Reset requires additional memory allocation and cannot be executed. The application should close the component and then reinitialize it.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Terminates the current decoding operation and de-allocates any internal tables or structures.
+This function is available since API version 1.0.
+session – [in] Session handle.
+MFX_ERR_NONE The function completed successfully.
+Important
+The MFXVideoDECODE_Close()
is mandatory when implementing a decoder.
Retrieves current working parameters to the specified output structure.
+If extended buffers are to be returned, the application must allocate those extended buffers and attach them as part of the output structure. The application can retrieve a copy of the bitstream header, by attaching the mfxExtCodingOptionSPSPPS structure to the mfxVideoParam structure.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the corresponding parameter structure.
MFX_ERR_NONE The function completed successfully.
+Obtains statistics collected during decoding.
+This function is available since API version 1.0.
+session – [in] Session handle.
stat – [in] Pointer to the mfxDecodeStat structure.
MFX_ERR_NONE The function completed successfully.
+Sets the decoder skip mode.
+The application may use this API function to increase decoding performance by sacrificing output quality. Increasing the skip level first results in skipping of some decoding operations like deblocking and then leads to frame skipping; first B, then P. Particular details are platform dependent.
+This function is available since API version 1.0.
+session – [in] Session handle.
mode – [in] Decoder skip mode. See the mfxSkipMode enumerator for details.
MFX_ERR_NONE The function completed successfully and the output surface is ready for decoding
+MFX_WRN_VALUE_NOT_CHANGED The skip mode is not affected as the maximum or minimum skip range is reached.
+ +Extracts user data (MPEG-2) or SEI (H.264) messages from the bitstream.
+Internally, the decoder implementation stores encountered user data or SEI messages. The application may call this API function multiple times to retrieve the user data or SEI messages, one at a time.
+If there is no payload available, the function returns with payload->NumBit=0.
+This function is available since API version 1.0.
+session – [in] Session handle.
ts – [in] Pointer to the user data time stamp in units of 90 KHz; divide ts by 90,000 (90 KHz) to obtain the time in seconds; the time stamp matches the payload with a specific decoded frame.
payload – [in] Pointer to the mfxPayload structure; the payload contains user data in MPEG-2 or SEI messages in H.264.
MFX_ERR_NONE The function completed successfully and the output buffer is ready for decoding.
+MFX_ERR_NOT_ENOUGH_BUFFER The payload buffer size is insufficient.
+ +Decodes the input bitstream to a single output frame.
+The surface_work
parameter provides a working frame buffer for the decoder. The application should allocate the working frame buffer, which stores decoded frames. If the function requires caching frames after decoding, it locks the frames and the application must provide a new frame buffer in the next call.
If, and only if, the function returns MFX_ERR_NONE, the pointer surface_out
points to the output frame in the display order. If there are no further frames, the function will reset the pointer to zero and return the appropriate status code.
Before decoding the first frame, a sequence header (sequence parameter set in H.264 or sequence header in MPEG-2 and VC-1) must be present. The function skips any bitstreams before it encounters the new sequence header.
+The input bitstream bs
can be of any size. If there are not enough bits to decode a frame, the function returns MFX_ERR_MORE_DATA, and consumes all input bits except if a partial start code or sequence header is at the end of the buffer. In this case, the function leaves the last few bytes in the bitstream buffer. If there is more incoming bitstream, the application should append the incoming bitstream to the bitstream buffer. Otherwise, the application should ignore the remaining bytes in the bitstream buffer and apply the end of stream procedure described below.
The application must set bs
to NULL to signal end of stream. The application may need to call this API function several times to drain any internally cached frames until the function returns MFX_ERR_MORE_DATA.
If more than one frame is in the bitstream buffer, the function decodes until the buffer is consumed. The decoding process can be interrupted for events such as if the decoder needs additional working buffers, is readying a frame for retrieval, or encountering a new header. In these cases, the function returns appropriate status code and moves the bitstream pointer to the remaining data.
+The decoder may return MFX_ERR_NONE without taking any data from the input bitstream buffer. If the application appends additional data to the bitstream buffer, it is possible that the bitstream buffer may contain more than one frame. It is recommended that the application invoke the function repeatedly until the function returns MFX_ERR_MORE_DATA, before appending any more data to the bitstream buffer.
+Starting from API 2.0 it is possible to pass NULL instead of surface_work. In such case runtime will allocate output frames internally.
+This function is asynchronous.
+This function is available since API version 1.0.
+session – [in] Session handle.
bs – [in] Pointer to the input bitstream.
surface_work – [in] Pointer to the working frame buffer for the decoder.
surface_out – [out] Pointer to the output frame in the display order.
syncp – [out] Pointer to the sync point associated with this operation.
MFX_ERR_NONE The function completed successfully and the output surface is ready for decoding.
+MFX_ERR_MORE_DATA The function requires more bitstream at input before decoding can proceed.
+MFX_ERR_MORE_SURFACE The function requires more frame surface at output before decoding can proceed.
+MFX_ERR_DEVICE_LOST Hardware device was lost.
+See the Working with Microsoft* DirectX* Applications section for further information.
+ +MFX_WRN_DEVICE_BUSY Hardware device is currently busy. Call this function again after MFXVideoCORE_SyncOperation or in a few milliseconds.
+MFX_WRN_VIDEO_PARAM_CHANGED The decoder detected a new sequence header in the bitstream. Video parameters may have changed.
+MFX_ERR_INCOMPATIBLE_VIDEO_PARAM The decoder detected incompatible video parameters in the bitstream and failed to follow them.
+MFX_ERR_REALLOC_SURFACE Bigger surface_work required. May be returned only if
+mfxInfoMFX::EnableReallocRequestwas set to ON during initialization.
+MFX_WRN_ALLOC_TIMEOUT_EXPIRED Timeout expired for internal output frame allocation (if set with
+mfxExtAllocationHints and NULL passed as surface_work). Repeat the call in a few milliseconds or re-initialize decoder with higher surface limit. +Important
+The MFXVideoDECODE_DecodeFrameAsync()
is mandatory when implementing a decoder.
Functions that implement combined operation of decoding and video processing +with multiple output frame surfaces.
+Initialize the SDK in (decode + vpp) mode. The logic of this function is similar to MFXVideoDECODE_Init, but application has to provide array of pointers to mfxVideoChannelParam and num_channel_param - number of channels. Application is responsible for memory allocation for mfxVideoChannelParam parameters and for each channel it should specify channel IDs: mfxVideoChannelParam::mfxFrameInfo::ChannelId. ChannelId should be unique value within one session. ChannelID equals to the 0 is reserved for the original decoded frame. The application can attach mfxExtInCrops to mfxVideoChannelParam::ExtParam to annotate input video frame if it wants to enable letterboxing operation.
+This function is available since API version 2.1.
+session – [in] SDK session handle.
decode_par – [in] Pointer to the mfxVideoParam structure which contains initialization parameters for decoder.
vpp_par_array – [in] Array of pointers to mfxVideoChannelParam
structures. Each mfxVideoChannelParam contains initialization parameters for each VPP channel.
num_vpp_par – [in] Size of array of pointers to mfxVideoChannelParam structures.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range, or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+MFX_ERR_UNDEFINED_BEHAVIOR The component is already initialized.
+ +MFX_WRN_FILTER_SKIPPED The VPP skipped one or more filters requested by the application. +Important
+The MFXVideoDECODE_VPP_Init()
is mandatory when implementing a combined decode plus vpp.
This function is similar to MFXVideoDECODE_Reset and stops the current decoding and vpp operation, and restores internal structures or parameters for a new decoding plus vpp operation. It resets the state of the decoder and/or all initialized vpp channels. Applications have to care about draining of buffered frames for decode and all vpp channels before call this function. The application can attach mfxExtInCrops to mfxVideoChannelParam::ExtParam to annotate input video frame if it wants to enable letterboxing operation.
+This function is available since API version 2.1.
+session – [in] Session handle.
decode_par – [in] Pointer to the mfxVideoParam
structure which contains new initialization parameters for decoder. Might be NULL if application wants to Reset only VPP channels.
vpp_par_array – [in] Array of pointers to mfxVideoChannelParam structures. Each mfxVideoChannelParam contains new initialization parameters for each VPP channel.
num_vpp_par – [in] Size of array of pointers to mfxVideoChannelParam structures.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected that video parameters are wrong or they conflict with initialization parameters. Reset is impossible.
+MFX_ERR_INCOMPATIBLE_VIDEO_PARAM The function detected that video parameters provided by the application are incompatible with initialization parameters. Reset requires additional memory allocation and cannot be executed. The application should close the component and then reinitialize it.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved. MFX_ERR_NULL_PTR Both pointers decode_par and vpp_par_array` equal to zero.
+ +Returns actual VPP parameters for selected channel which should be specified by application through mfxVideoChannelParam::mfxFrameInfo::ChannelId.
+This function is available since API version 2.1.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoChannelParam
structure which allocated by application
channel_id – [in] specifies the requested channel’s info
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR par pointer is NULL.
+ +MFX_ERR_NOT_FOUND the library is not able to find VPP channel with such channel_id. +This function is similar to MFXVideoDECODE_DecodeFrameAsync and inherits all bitstream processing logic. As output, it allocates and returns surf_array_out
array of processed surfaces according to the chain of filters specified by application in MFXVideoDECODE_VPP_Init, including original decoded frames. In the surf_array_out
, the original decoded frames are returned through surfaces with mfxFrameInfo::ChannelId == 0, followed by each of the subsequent frame surfaces for each of the requested mfxVideoChannelParam entries provided to the MFXVideoCECODE_VPP_Init function. At maximum, the number of frame surfaces return is 1 + the value of num_vpp_par
to the MFXVideoDECODE_VPP_Init function, but the application must be prepared to the case when some particular filters are not ready to output surfaces, so the length of surf_array_out
will be less. Application should use mfxFrameInfo::ChannelId parameter to match output surface against configured filter.
An application must synchronize each output surface from the surf_array_out
surface array independently.
This function is available since API version 2.1.
+session – [in] SDK session handle.
bs – [in] Pointer to the input bitstream.
skip_channels – [in] Pointer to the array of ChannelId
s which specifies channels with skip output frames. Memory for the array is allocated by application.
num_skip_channels – [in] Number of channels addressed by skip_channels.
surf_array_out – [out] The address of a pointer to the structure with frame surfaces.
MFX_ERR_NONE The function completed successfully and the output surface is ready for decoding.
+MFX_ERR_MORE_DATA The function requires more bitstream at input before decoding can proceed.
+MFX_ERR_MORE_SURFACE The function requires more frame surface at output before decoding can proceed.
+MFX_ERR_DEVICE_LOST Hardware device was lost.
+See the Working with Microsoft* DirectX* Applications section for further information.
+ +MFX_WRN_DEVICE_BUSY Hardware device is currently busy. Call this function again after MFXVideoCORE_SyncOperation or in a few milliseconds.
+MFX_WRN_VIDEO_PARAM_CHANGED The decoder detected a new sequence header in the bitstream. Video parameters may have changed.
+MFX_ERR_INCOMPATIBLE_VIDEO_PARAM The decoder detected incompatible video parameters in the bitstream and failed to follow them.
+MFX_ERR_NULL_PTR num_skip_channels doesn’t equal to 0 when skip_channels is NULL.
+ +Important
+The MFXVideoDECODE_VPP_DecodeFrameAsync()
is mandatory when implementing a combined decode plus vpp.
This function is similar to MFXVideoDECODE_Close. It terminates the current decoding and vpp operation and de-allocates any internal tables or structures.
+This function is available since API version 2.1.
+session – [in] Session handle.
+MFX_ERR_NONE The function completed successfully.
+Important
+The MFXVideoDECODE_VPP_Close()
is mandatory when implementing a combined decode plus vpp.
Functions that perform the entire encoding pipeline from the input video frames +to the output bitstream.
+Works in either of four modes:
+If the in
parameter is zero, the function returns the class configurability in the output structure. The application must set to zero the fields it wants to check for support. If the field is supported, function sets non-zero value to this field, otherwise it would be ignored. It indicates that the SDK implementation can configure the field with Init.
If the in
parameter is non-zero, the function checks the validity of the fields in the input structure. Then the function returns the corrected values in the output structure. If there is insufficient information to determine the validity or correction is impossible, the function zeroes the fields. This feature can verify whether the implementation supports certain profiles, levels or bitrates.
If the in
parameter is non-zero and mfxExtEncoderResetOption structure is attached to it, the function queries for the outcome of the MFXVideoENCODE_Reset function and returns it in the mfxExtEncoderResetOption structure attached to out. The query function succeeds if a reset is possible and returns an error otherwise. Unlike other modes that are independent of the encoder state, this one checks if reset is possible in the present encoder state. This mode also requires a completely defined mfxVideoParam structure, unlike other modes that support partially defined configurations. See mfxExtEncoderResetOption description for more details.
If the in
parameter is non-zero and mfxExtEncoderCapability structure is attached to it, the function returns encoder capability in the mfxExtEncoderCapability structure attached to out. It is recommended to fill in the mfxVideoParam structure and set the hardware acceleration device handle before calling the function in this mode.
CodecId
field of the output structure is a mandated field (to be filled by the application) to identify the coding standard.
+This function is available since API version 1.0.
+session – [in] Session handle.
in – [in] Pointer to the mfxVideoParam structure as input.
out – [out] Pointer to the mfxVideoParam structure as output.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_UNSUPPORTED The function failed to identify a specific implementation for the required features.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The encoding may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Important
+The MFXVideoENCODE_Query()
function is mandatory when
+implementing an encoder.
Returns minimum and suggested numbers of the input frame surfaces required for encoding initialization and their type.
+Init will call the external allocator for the required frames with the same set of numbers. This function does not validate I/O parameters except those used in calculating the number of input surfaces.
+The use of this function is recommended.
For more information, see the Working with Hardware Acceleration section.
+ +This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure as input.
request – [in] Pointer to the mfxFrameAllocRequest structure as output.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The encoding may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Allocates memory and prepares tables and necessary structures for encoding.
+This function also does extensive validation to ensure if the configuration, as specified in the input parameters, is supported.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range, or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The encoding may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +MFX_ERR_UNDEFINED_BEHAVIOR The function is called twice without a close; +Important
+The MFXVideoENCODE_Init()
function is mandatory when
+implementing an encoder.
Stops the current encoding operation and restores internal structures or parameters for a new encoding operation, possibly with new parameters.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range, or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_ERR_INCOMPATIBLE_VIDEO_PARAM The function detected that video parameters provided by the application are incompatible with initialization parameters. Reset requires additional memory allocation and cannot be executed. The application should close the component and then reinitialize it.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Terminates the current encoding operation and de-allocates any internal tables or structures.
+This function is available since API version 1.0.
+session – [in] Session handle.
+MFX_ERR_NONE The function completed successfully.
+Important
+The MFXVideoENCODE_Close()
function is mandatory when
+implementing an encoder.
Retrieves current working parameters to the specified output structure.
+If extended buffers are to be returned, the application must allocate those extended buffers and attach them as part of the output structure. The application can retrieve a copy of the bitstream header by attaching the mfxExtCodingOptionSPSPPS structure to the mfxVideoParam structure.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the corresponding parameter structure.
MFX_ERR_NONE The function completed successfully.
+Obtains statistics collected during encoding.
+This function is available since API version 1.0.
+session – [in] Session handle.
stat – [in] Pointer to the mfxEncodeStat structure.
MFX_ERR_NONE The function completed successfully.
+Takes a single input frame in either encoded or display order and generates its output bitstream.
+In the case of encoded ordering, the mfxEncodeCtrl structure must specify the explicit frame type. In the case of display ordering, this function handles frame order shuffling according to the GOP structure parameters specified during initialization.
+Since encoding may process frames differently from the input order, not every call of the function generates output and the function returns MFX_ERR_MORE_DATA. If the encoder needs to cache the frame, the function locks the frame. The application should not alter the frame until the encoder unlocks the frame. If there is output (with return status MFX_ERR_NONE), the return is a frame’s worth of bitstream.
+It is the calling application’s responsibility to ensure that there is sufficient space in the output buffer. The value BufferSizeInKB
in the mfxVideoParam structure at encoding initialization specifies the maximum possible size for any compressed frames. This value can also be obtained from the MFXVideoENCODE_GetVideoParam function after encoding initialization.
To mark the end of the encoding sequence, call this function with a NULL surface pointer. Repeat the call to drain any remaining internally cached bitstreams (one frame at a time) until MFX_ERR_MORE_DATA is returned.
+This function is asynchronous.
+This function is available since API version 1.0.
+session – [in] Session handle.
ctrl – [in] Pointer to the mfxEncodeCtrl structure for per-frame encoding control; this parameter is optional (it can be NULL) if the encoder works in the display order mode. ctrl can be freed right after successful MFXVideoENCODE_EncodeFrameAsync (it is copied inside), but not the ext buffers attached to this ctrl. If the ext buffers are allocated by the user, do not move, alter or delete unless surface.Data.Locked is zero.
surface – [in] Pointer to the frame surface structure. For surfaces allocated by oneAPI Video Processing Library (oneVPL) RT it is safe to call mfxFrameSurface1::FrameInterface->Release after successful MFXVideoENCODE_EncodeFrameAsync. If it is allocated by user, do not move, alter or delete unless surface.Data.Locked is zero.
bs – [out] Pointer to the output bitstream.
syncp – [out] Pointer to the returned sync point associated with this operation.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NOT_ENOUGH_BUFFER The bitstream buffer size is insufficient.
+MFX_ERR_MORE_DATA The function requires more data to generate any output.
+MFX_ERR_DEVICE_LOST Hardware device was lost.
+See the Working with Microsoft* DirectX* Applications section for further information.
+ +MFX_WRN_DEVICE_BUSY Hardware device is currently busy. Call this function again after MFXVideoCORE_SyncOperation or in a few milliseconds.
+MFX_ERR_INCOMPATIBLE_VIDEO_PARAM Inconsistent parameters detected not conforming to Configuration Parameter Constraints.
+ +Important
+The MFXVideoENCODE_EncodeFrameAsync()
function is mandatory when
+implementing an encoder.
Functions that perform video processing before encoding, rendering, or standalone.
+Works in one of two modes:
+If the in
pointer is zero, the function returns the class configurability in the output structure. A non-zero value in a field indicates that the implementation can configure it with Init.
If the in
parameter is non-zero, the function checks the validity of the fields in the input structure. Then the function returns the corrected values to the output structure. If there is insufficient information to determine the validity or correction is impossible, the function zeroes the fields.
This function is available since API version 1.0.
+session – [in] Session handle.
in – [in] Pointer to the mfxVideoParam structure as input.
out – [out] Pointer to the mfxVideoParam structure as output.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_UNSUPPORTED The implementation does not support the specified configuration.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The video processing may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Important
+The MFXVideoVPP_Query()
function is mandatory when implementing a VPP filter.
Returns minimum and suggested numbers of the input frame surfaces required for video processing initialization and their type.
+The parameter request[0]
refers to the input requirements; request[1]
refers to output requirements. Init will call the external allocator for the required frames with the same set of numbers. This function does not validate I/O parameters except those used in calculating the number of input surfaces.
The use of this function is recommended.
For more information, see the Working with Hardware Acceleration section.
+ +This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure as input.
request – [in] Pointer to the mfxFrameAllocRequest structure; use request[0]
for input requirements and request[1]
for output requirements for video processing.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range, or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The video processing may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Allocates memory and prepares tables and necessary structures for video processing.
+This function also does extensive validation to ensure if the configuration, as specified in the input parameters, is supported.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected invalid video parameters. These parameters may be out of the valid range, or the combination of them resulted in incompatibility. Incompatibility not resolved.
+MFX_WRN_PARTIAL_ACCELERATION The underlying hardware does not fully support the specified video parameters. The video processing may be partially accelerated. Only hardware implementations may return this status code.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+MFX_ERR_UNDEFINED_BEHAVIOR The function is called twice without a close.
+MFX_WRN_FILTER_SKIPPED The VPP skipped one or more filters requested by the application.
+ +Important
+The MFXVideoVPP_Init()
function is mandatory when implementing a VPP filter.
Stops the current video processing operation and restores internal structures or parameters for a new operation.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the mfxVideoParam structure.
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_INVALID_VIDEO_PARAM The function detected that video parameters are wrong or they conflict with initialization parameters. Reset is impossible.
+MFX_ERR_INCOMPATIBLE_VIDEO_PARAM The function detected that video parameters provided by the application are incompatible with initialization parameters. Reset requires additional memory allocation and cannot be executed. The application should close the component and then reinitialize it.
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM The function detected some video parameters were incompatible with others; incompatibility resolved.
+ +Terminates the current video processing operation and de-allocates any internal tables or structures.
+This function is available since API version 1.0.
+session – [in] Session handle.
+MFX_ERR_NONE The function completed successfully.
+Important
+The MFXVideoVPP_Close()
function is mandatory when implementing a VPP filter.
Retrieves current working parameters to the specified output structure.
+If extended buffers are to be returned, the application must allocate those extended buffers and attach them as part of the output structure.
+This function is available since API version 1.0.
+session – [in] Session handle.
par – [in] Pointer to the corresponding parameter structure.
MFX_ERR_NONE The function completed successfully.
+Obtains statistics collected during video processing.
+This function is available since API version 1.0.
+session – [in] Session handle.
stat – [in] Pointer to the mfxVPPStat structure.
MFX_ERR_NONE The function completed successfully.
+Processes a single input frame to a single output frame.
+Retrieval of the auxiliary data is optional; the encoding process may use it. The video processing process may not generate an instant output given an input.
See the Video Processing Procedures section for details on how to +correctly send input and retrieve output.
+ +At the end of the stream, call this function with the input argument in=NULL
to retrieve any remaining frames, until the function returns MFX_ERR_MORE_DATA. This function is asynchronous.
This function is available since API version 1.0.
+session – [in] Session handle.
in – [in] Pointer to the input video surface structure.
out – [out] Pointer to the output video surface structure.
aux – [in] Optional pointer to the auxiliary data structure.
syncp – [out] Pointer to the output sync point.
MFX_ERR_NONE The output frame is ready after synchronization.
+MFX_ERR_MORE_DATA Need more input frames before VPP can produce an output.
+MFX_ERR_MORE_SURFACE The output frame is ready after synchronization. Need more surfaces at output for additional output frames available.
+MFX_ERR_DEVICE_LOST Hardware device was lost.
+See the Working with Microsoft* DirectX* Applications section for further information.
+ + +MFX_WRN_DEVICE_BUSY Hardware device is currently busy. Call this function again after MFXVideoCORE_SyncOperation or in a few milliseconds. +The function processes a single input frame to a single output frame with internal allocation of output frame.
+At the end of the stream, call this function with the input argument in=NULL
to retrieve any remaining frames, until the function returns MFX_ERR_MORE_DATA. This function is asynchronous.
This function is available since API version 2.1.
+session – [in] Session handle.
in – [in] Pointer to the input video surface structure.
out – [out] Pointer to the output video surface structure which is reference counted object allocated by the library.
MFX_ERR_NONE The output frame is ready after synchronization.
+MFX_ERR_MORE_DATA Need more input frames before VPP can produce an output.
+MFX_ERR_MEMORY_ALLOC The function failed to allocate output video frame.
+MFX_ERR_DEVICE_LOST Hardware device was lost.
+See the Working with Microsoft* DirectX* Applications section for further information.
+ +MFX_WRN_DEVICE_BUSY Hardware device is currently busy. Call this function again after MFXVideoCORE_SyncOperation or in a few milliseconds.
+MFX_WRN_ALLOC_TIMEOUT_EXPIRED Timeout expired for internal output frame allocation (if set with
+mfxExtAllocationHints). Repeat the call in a few milliseconds or reinitialize VPP with higher surface limit. +Important
+Either MFXVideoVPP_RunFrameVPPAsync()
or MFXVideoVPP_ProcessFrameAsync()
function is mandatory when implementing a VPP filter.
Functions to perform external device and memory management and synchronization.
+Sets the external allocator callback structure for frame allocation.
+If the allocator argument is NULL, the library uses the default allocator, which allocates frames from system memory or hardware devices. The behavior of the API is undefined if it uses this function while the previous allocator is in use. A general guideline is to set the allocator immediately after initializing the session.
+This function is available since API version 1.0.
+session – [in] Session handle.
allocator – [in] Pointer to the mfxFrameAllocator structure
MFX_ERR_NONE The function completed successfully.
+Sets any essential system handle that the library might use. The handle must remain valid until after the application calls the MFXClose function.
+If the specified system handle is a COM interface, the reference counter of the COM interface will increase. The counter will decrease when the session closes.
+This function is available since API version 1.0.
+session – [in] Session handle.
type – [in] Handle type
hdl – [in] Handle to be set
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_UNDEFINED_BEHAVIOR The same handle is redefined. For example, the function has been called twice with the same handle type or an internal handle has been created before this function call. MFX_ERR_DEVICE_FAILED The SDK cannot initialize using the handle.
+ +Obtains system handles previously set by the MFXVideoCORE_SetHandle function.
+If the handler is a COM interface, the reference counter of the interface increases. The calling application must release the COM interface.
+This function is available since API version 1.0.
+session – [in] Session handle.
type – [in] Handle type
hdl – [in] Pointer to the handle to be set
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_UNDEFINED_BEHAVIOR Specified handle type not found.
+ +Returns information about current hardware platform in the Legacy mode.
++Notes: Deprecated mfxPlatform::CodeName will be filled with MFX_PLATFORM_MAXIMUM for future new platforms.
This function is available since API version 1.19.
+session – [in] Session handle.
platform – [out] Pointer to the mfxPlatform structure
MFX_ERR_NONE The function completed successfully.
+Initiates execution of an asynchronous function not already started and returns the status code after the specified asynchronous operation completes. If wait is zero, the function returns immediately.
+This function is available since API version 1.0.
+session – [in] Session handle.
syncp – [in] Sync point
wait – [in] wait time in milliseconds
MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NONE_PARTIAL_OUTPUT The function completed successfully, bitstream contains a portion of the encoded frame according to required granularity.
+MFX_WRN_IN_EXECUTION The specified asynchronous function is in execution.
+MFX_ERR_ABORTED The specified asynchronous function aborted due to data dependency on a previous asynchronous function that did not complete.
+ +Important
+The MFXVideoCORE_SyncOperation()
function is mandatory for
+any implementation.
Functions that implement a complete decoder that decompresses input bitstreams +directly to output frame surfaces.
+Functions that perform the entire encoding pipeline from the input video frames +to the output bitstream.
+Functions that perform video processing before encoding, rendering, or standalone.
+Functions to perform external device and memory management and synchronization.
+Functions to manage sessions.
+Functions for internal memory allocation and management.
+Functions to report capabilities of available implementations and create +user-requested library implementations.
+Functions that identify graphics adapters for Microsoft* DirectX* video +processing, encoding, and decoding.
+Functions that implement combined operation of decoding and video processing +with multiple output frame surfaces.
+GUID to obtain mfxSurfacePoolInterface.
+UTF-8 byte.
+Single-precision floating point, 32 bit type.
+Double-precision floating point, 64 bit type.
+Handle type.
+Signed integer, 8 bit type.
+Signed integer, 16 bit type.
+Signed integer, 32 bit type.
+Signed integer, 64 bit type.
+Signed integer, 32 bit type.
+Thread task type.
+Unsigned integer, 8 bit type.
+Unsigned integer, 16 bit type.
+Unsigned integer, 32 bit type.
+Unsigned integer, 64 bit type.
+Unsigned integer, 32 bit type.
+Config handle.
+Loader handle.
+Session handle.
+Synchronization point object handle.
+Structures used for type definitions.
+Structures used for memory.
+Structures used for implementation management.
+Structures used across library components.
+Structures used by Decode only.
+Structures used by Encode only.
+Structures used by VPP only.
+Protected structures.
+Structures used by DECODE_VPP only.
+Structures used by Camera Raw Acceleration Processing.
+Structures used by Camera Raw Acceleration Processing.
+A hint structure that configures Camera White Balance filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_WHITE_BALANCE.
+A hint structure that configures Camera Total Color Control filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_TOTAL_COLOR_CONTROL.
+A hint structure that configures Camera YUV to RGB format conversion.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_CSC_YUV_RGB.
+Specifies offset for conversion from full range RGB input to limited range YUV for input color coordinate.
+A hint structure that configures Camera Hot Pixel Removal filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_HOT_PIXEL_REMOVAL.
+Public Members
+A hint structure that configures Camera black level correction. Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_BLACK_LEVEL_CORRECTION.
+A structure that defines Camera Vignette Correction Element.
+ +A structure that defines Camera Vignette Correction Parameters.
+Public Members
+Red correction element.
+Green top correction element.
+Blue Correction element.
+Green bottom correction element.
+A hint structure that configures Camera Vignette Correction filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_VIGNETTE_CORRECTION.
+Width of Correction Map 2D buffer in mfxCamVignetteCorrectionParam elements.
+Height of Correction Map 2D buffer in mfxCamVignetteCorrectionParam elements.
+Pitch of Correction Map 2D buffer in mfxCamVignetteCorrectionParam elements.
+2D buffer of mfxCamVignetteCorrectionParam elements.
+A hint structure that configures Camera Bayer denoise filter.
+ +A hint structure that configures Camera Color correction filter.
+ +A hint structure that configures Camera Padding.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_PADDING.
+Specify number of padded columns respectively. Currently only 8 pixels supported for all dimensions.
+Specify number of padded columns respectively. Currently only 8 pixels supported for all dimensions.
+Specify number of padded rows respectively. Currently only 8 pixels supported for all dimensions.
+A hint structure that configures camera pipe control.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_PIPECONTROL.
+A structure that specifies forward gamma segment.
+ +A hint structure that configures Camera Forward Gamma Correction filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_FORWARD_GAMMA_CORRECTION.
+Pointer to Gamma segments array.
+A hint structure that configures Camera Lens Geometry Distortion and Chroma Aberration Correction filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_LENS_GEOM_DIST_CORRECTION.
+A structure that defines 3DLUT entry.
+ +A hint structure that configures Camera 3DLUT filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUF_CAM_3DLUT.
+Pointer to mfxCam3DLutEntry, size of each dimension depends on LUT size, e.g. LUT[17][17][17] for 17x17x17 look up table.
+Structures used across library components.
+Contains workload description, which is accepted by MFXQueryAdapters function.
+Public Members
+Type of workload: Encode, Decode, VPP. See mfxComponentType enumerator for values.
+Detailed description of workload. See mfxVideoParam for details.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_HEVC_PARAM.
+Specifies the width of each coded picture in units of luma samples.
+Specifies the height of each coded picture in units of luma samples.
+Additional flags to specify exact profile and constraints. See the GeneralConstraintFlags enumerator for values of this field.
+Specifies Huffman tables. The application may specify up to 2 quantization table pairs for baseline process. The encoder assigns an ID to each table. That ID is equal to the table index in the DCTables and ACTables arrays. Table “0” is used for encoding of the Y component and table “1” is used for encoding of the U and V component. The application may specify only one table, in which case the table will be used for all components in the image. The following table illustrates this behavior.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_JPEG_HUFFMAN.
+Array of DC tables.
+List of the 8-bit symbol values.
+Table ID |
+0 |
+1 |
+
---|---|---|
Number of tables |
++ | + |
0 |
+Y, U, V |
++ |
1 |
+Y |
+U, V |
+
Specifies quantization tables. The application may specify up to 4 quantization tables. The encoder assigns an ID to each table. That ID is equal to the table index in the Qm array. Table “0” is used for encoding of the Y component, table “1” for the U component, and table “2” for the V component. The application may specify fewer tables than the number of components in the image. If two tables are specified, then table “1” is used for both U and V components. If only one table is specified then it is used for all components in the image. The following table illustrates this behavior.
+ +Table ID |
+0 |
+1 |
+2 |
+
---|---|---|---|
Number of tables |
++ | + | + |
0 |
+Y, U, V |
++ | + |
1 |
+Y |
+U, V |
++ |
2 |
+Y |
+U |
+V |
+
Describes the MVC stream information of view dependencies, view identifiers, and operation points. See the ITU*-T H.264 specification chapter H.7.3.2.1.4 for details.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MVC_SEQUENCE_DESCRIPTION.
+Pointer to a list of the mfxMVCViewDependency.
+Pointer to a list of the mfxMVCOperationPoint structure.
+Configures views for the decoding output.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MVC_TARGET_VIEWS.
+Defines the video signal information.
+For H.264, see Annex E of the ISO/IEC 14496-10 specification for the definition of these parameters.
+For MPEG-2, see section 6.3.6 of the ITU* H.262 specification for the definition of these parameters. The field VideoFullRange is ignored.
+For VC-1, see section 6.1.14.5 of the SMPTE* 421M specification. The fields VideoFormat and VideoFullRange are ignored.
+Note
+If ColourDescriptionPresent is zero, the color description information (including ColourPrimaries, TransferCharacteristics, and MatrixCoefficients) does not present in the bitstream.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VIDEO_SIGNAL_INFO.
+Structure attached to the mfxVideoParam structure. Extends the mfxVideoParam structure with VP9-specific parameters. Used by both decoder and encoder.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VP9_PARAM.
+Set this option to ON to make the encoder insert IVF container headers to the output stream. The NumFrame field of the IVF sequence header will be zero. It is the responsibility of the application to update the NumFrame field with the correct value. See the CodingOptionValue enumerator for values of this option.
+Number of tile rows. Should be power of two. The maximum number of tile rows is 4, per the VP9 specification. In addition, the maximum supported number of tile rows may depend on the underlying library implementation.
+Use the Query API function to check if a particular pair of values (NumTileRows, NumTileColumns) is supported. In VP9, tile rows have dependencies and cannot be encoded or decoded in parallel. Therefore, tile rows are always encoded by the library in serial mode (one-by-one).
+Number of tile columns. Should be power of two. Restricted with maximum and minimum tile width in luma pixels, as defined in the VP9 specification (4096 and 256 respectively). In addition, the maximum supported number of tile columns may depend on the underlying library implementation.
+Use the Query API function to check if a particular pair of values (NumTileRows, NumTileColumns) is supported. In VP9, tile columns do not have dependencies and can be encoded/decoded in parallel. Therefore, tile columns can be encoded by the library in both parallel and serial modes.
+Parallel mode is automatically utilized by the library when NumTileColumns exceeds 1 and does not exceed the number of tile coding engines on the platform. In other cases, serial mode is used. Parallel mode is capable of encoding more than 1 tile row (within limitations provided by VP9 specification and particular platform). Serial mode supports only tile grids 1xN and Nx1.
+Describes the view and layer of a frame picture.
+ +Specifies configurations for decoding, encoding, and transcoding processes. A zero value in any of these fields indicates that the field is not explicitly specified.
+Public Members
+ + +Hint to enable low power consumption mode for encoders. See the CodingOptionValue enumerator for values of this option. Use the Query API function to check if this feature is supported.
+Specifies a multiplier for bitrate control parameters. Affects the following variables: InitialDelayInKB, BufferSizeInKB, TargetKbps, MaxKbps, WinBRCMaxAvgKbps. If this value is not equal to zero, the encoder calculates BRC parameters as value * BRCParamMultiplier
.
mfxFrameInfo structure that specifies frame parameters.
+Specifies the codec format identifier in the FourCC code; see the CodecFormatFourCC enumerator for details. This is a mandated input parameter for the QueryIOSurf and Init API functions.
+Specifies the codec profile; see the CodecProfile enumerator for details. Specify the codec profile explicitly or the API functions will determine the correct profile from other sources, such as resolution and bitrate.
+Codec level; see the CodecLevel enumerator for details. Specify the codec level explicitly or the functions will determine the correct level from other sources, such as resolution and bitrate.
+Target usage model that guides the encoding process; see the TargetUsage enumerator for details.
+Number of pictures within the current GOP (Group of Pictures); if GopPicSize = 0, then the GOP size is unspecified. If GopPicSize = 1, only I-frames are used. The following pseudo-code that shows how the library uses this parameter:
mfxU16 get_gop_sequence (...) {
+ pos=display_frame_order;
+ if (pos == 0)
+ return MFX_FRAMETYPE_I | MFX_FRAMETYPE_IDR | MFX_FRAMETYPE_REF;
+
+ If (GopPicSize == 1) // Only I-frames
+ return MFX_FRAMETYPE_I | MFX_FRAMETYPE_REF;
+
+ if (GopPicSize == 0)
+ frameInGOP = pos; //Unlimited GOP
+ else
+ frameInGOP = pos%GopPicSize;
+
+ if (frameInGOP == 0)
+ return MFX_FRAMETYPE_I | MFX_FRAMETYPE_REF;
+
+ if (GopRefDist == 1 || GopRefDist == 0) // Only I,P frames
+ return MFX_FRAMETYPE_P | MFX_FRAMETYPE_REF;
+
+ frameInPattern = (frameInGOP-1)%GopRefDist;
+ if (frameInPattern == GopRefDist - 1)
+ return MFX_FRAMETYPE_P | MFX_FRAMETYPE_REF;
+
+ return MFX_FRAMETYPE_B;
+ }
+
Distance between I- or P (or GPB) - key frames; if it is zero, the GOP structure is unspecified. Note: If GopRefDist = 1, there are no regular B-frames used (only P or GPB); if mfxExtCodingOption3::GPB is ON, GPB frames (B without backward references) are used instead of P.
+ORs of the GopOptFlag enumerator indicate the additional flags for the GOP specification.
+For H.264, specifies IDR-frame interval in terms of I-frames. For example:
If IdrInterval = 0, then every I-frame is an IDR-frame.
If IdrInterval = 1, then every other I-frame is an IDR-frame.
If IdrInterval = 1, then every I-frame is an IDR-frame.
If IdrInterval = 2, then every other I-frame is an IDR-frame.
If IdrInterval = 0 (default), then the sequence header is inserted once at the beginning of the stream.
If IdrInterval = N, then the sequence header is inserted before every Nth I-frame.
Initial size of the Video Buffering Verifier (VBV) buffer.
+Note
+In this context, KB is 1000 bytes and Kbps is 1000 bps.
+Quantization Parameter (QP) for I-frames for constant QP mode (CQP). Zero QP is not valid and means that the default value is assigned by the library. Non-zero QPI might be clipped to supported QPI range.
+Note
+In the HEVC design, a further adjustment to QPs can occur based on bit depth. Adjusted QPI value = QPI - (6 * (BitDepthLuma - 8)) for BitDepthLuma in the range [8,14]. For HEVC_MAIN10, we minus (6*(10-8)=12) on our side and continue.
+Note
+In av1 design, valid range is 0 to 255 inclusive, and if QPI=QPP=QPB=0, the encoder is in lossless mode.
+Note
+In vp9 design, valid range is 1 to 255 inclusive, and zero QP that the default value is assigned by the library.
+Note
+Default QPI value is implementation dependent and subject to change without additional notice in this document.
+Constant bitrate TargetKbps. Used to estimate the targeted frame size by dividing the frame rate by the bitrate.
+Quantization Parameter (QP) for P-frames for constant QP mode (CQP). Zero QP is not valid and means that the default value is assigned by the library. Non-zero QPP might be clipped to supported QPI range.
+Note
+In the HEVC design, a further adjustment to QPs can occur based on bit depth. Adjusted QPP value = QPP - (6 * (BitDepthLuma - 8)) for BitDepthLuma in the range [8,14]. For HEVC_MAIN10, we minus (6*(10-8)=12) on our side and continue.
+Note
+In av1 design, valid range is 0 to 255 inclusive, and if QPI=QPP=QPB=0, the encoder is in lossless mode.
+Note
+In vp9 design, valid range is 1 to 255 inclusive, and zero QP that the default value is assigned by the library.
+Note
+Default QPP value is implementation dependent and subject to change without additional notice in this document.
+Used by the Intelligent Constant Quality (ICQ) bitrate control algorithm. Values are in the 1 to 51 range, where 1 corresponds the best quality.
+The maximum bitrate at which the encoded data enters the Video Buffering Verifier (VBV) buffer.
+Quantization Parameter (QP) for B-frames for constant QP mode (CQP). Zero QP is not valid and means that the default value is assigned by the library. Non-zero QPI might be clipped to supported QPB range.
+Note
+In the HEVC design, a further adjustment to QPs can occur based on bit depth. Adjusted QPB value = QPB - (6 * (BitDepthLuma - 8)) for BitDepthLuma in the range [8,14]. For HEVC_MAIN10, we minus (6*(10-8)=12) on our side and continue.
+Note
+In av1 design, valid range is 0 to 255 inclusive, and if QPI=QPP=QPB=0, the encoder is in lossless mode.
+Note
+Default QPB value is implementation dependent and subject to change without additional notice in this document.
+Number of slices in each video frame. Each slice contains one or more macro-block rows. If NumSlice equals zero, the encoder may choose any slice partitioning allowed by the codec standard. See also mfxExtCodingOption2::NumMbPerSlice.
+Max number of all available reference frames (for AVC/HEVC, NumRefFrame defines DPB size). If NumRefFrame = 0, this parameter is not specified. See also NumRefActiveP, NumRefActiveBL0, and NumRefActiveBL1 in the mfxExtCodingOption3 structure, which set a number of active references.
+If not zero, specifies that ENCODE takes the input surfaces in the encoded order and uses explicit frame type control. The application must still provide GopRefDist and mfxExtCodingOption2::BRefType so the library can pack headers and build reference lists correctly.
+For AVC and HEVC, used to instruct the decoder to return output frames in the decoded order. Must be zero for all other decoders. When enabled, correctness of mfxFrameData::TimeStamp and FrameOrder for output surface is not guaranteed, the application should ignore them.
+Instructs DECODE to output extended picture structure values for additional display attributes. See the PicStruct description for details.
+Time stamp calculation method. See the TimeStampCalc description for details.
+Nonzero value indicates that slice groups are present in the bitstream. Used only by AVC decoder.
+Nonzero value specifies the maximum required size of the decoded picture buffer in frames for AVC and HEVC decoders.
+For decoders supporting dynamic resolution change (VP9), set this option to ON to allow MFXVideoDECODE_DecodeFrameAsync return MFX_ERR_REALLOC_SURFACE. See the CodingOptionValue enumerator for values of this option. Use the Query API function to check if this feature is supported.
+Special parameter for AV1 decoder. Indicates presence/absence of film grain parameters in bitstream. Also controls decoding behavior for streams with film grain parameters. MFXVideoDECODE_DecodeHeader returns nonzero FilmGrain for streams with film grain parameters and zero for streams w/o them. Decoding with film grain requires additional output surfaces. If FilmGrain` is non-zero then MFXVideoDECODE_QueryIOSurf will request more surfaces in case of external allocated video memory at decoder output. FilmGrain is passed to MFXVideoDECODE_Init function to control decoding operation for AV1 streams with film grain parameters. If FilmGrain is nonzero decoding of each frame require two output surfaces (one for reconstructed frame and one for output frame with film grain applied). The decoder returns MFX_ERR_MORE_SURFACE from MFXVideoDECODE_DecodeFrameAsync if it has insufficient output surfaces to decode frame. Application can forcibly disable the feature passing zero value of FilmGrain
to MFXVideoDECODE_Init
. In this case the decoder will output reconstructed frames w/o film grain applied. Application can retrieve film grain parameters for a frame by attaching extended buffer mfxExtAV1FilmGrainParam to mfxFrameSurface1. If stream has no film grain parameters FilmGrain
passed to MFXVideoDECODE_Init
is ignored by the decoder.
If not zero, it forces SDK to attempt to decode bitstream even if a decoder may not support all features associated with given CodecLevel. Decoder may produce visual artifacts. Only AVC decoder supports this field.
+This flag is used to disable output of main decoding channel. When it’s ON SkipOutput = MFX_CODINGOPTION_ON decoder outputs only video processed channels. For pure decode this flag should be always disabled.
+Specify the chroma sampling format that has been used to encode a JPEG picture. See the ChromaFormat enumerator for details.
+Rotation option of the output JPEG picture. See the Rotation enumerator for details.
+Specify the color format that has been used to encode a JPEG picture. See the JPEGColorFormat enumerator for details.
+Specify JPEG scan type for decoder. See the JPEGScanType enumerator for details.
+Specify interleaved or non-interleaved scans. If it is equal to MFX_SCANTYPE_INTERLEAVED then the image is encoded as interleaved, all components are encoded in one scan. See the JPEG Scan Type enumerator for details.
+Note
+The mfxInfoMFX::InitialDelayInKB
, mfxInfoMFX::TargetKbps
,
+mfxInfoMFX::MaxKbps
parameters are used by the constant bitrate
+(CBR), variable bitrate control (VBR), and CQP HRD algorithms.
Encoders follow the Hypothetical Reference Decoding (HRD) model. The +HRD model assumes that data flows into a buffer of the fixed size +BufferSizeInKB with a constant bitrate of TargetKbps. (Estimate the targeted +frame size by dividing frame rate by bitrate.)
+The decoder starts decoding after the buffer reaches the initial size +InitialDelayInKB, which is equivalent to reaching an initial delay of +InitialDelayInKB*8000/TargetKbpsms. +In this context, KB is 1000 bytes and Kbps is 1000 bps.
+If InitialDelayInKB or BufferSizeInKB is equal to zero, the value is +calculated using bitrate, frame rate, profile, level, and so on.
+TargetKbps must be specified for encoding initialization.
+For variable bitrate control, the MaxKbps parameter specifies the maximum +bitrate at which the encoded data enters the Video Buffering Verifier (VBV) +buffer. If MaxKbps is equal to zero, the value is calculated from bitrate, +frame rate, profile, and level.
+Note
+The mfxInfoMFX::TargetKbps
, mfxInfoMFX::Accuracy
,
+mfxInfoMFX::Convergence
parameters are used by the average variable
+bitrate control (AVBR) algorithm. The algorithm focuses on overall encoding
+quality while meeting the specified bitrate, TargetKbps, within the accuracy
+range, Accuracy, after a Convergence period. This method does not follow HRD
+and the instant bitrate is not capped or padded.
Describes the MVC operation point.
+ +Describes MVC view dependencies.
+Public Members
+ + +Number of view components for inter-view prediction in the initial reference picture list RefPicList0 for anchor view components.
+Number of view components for inter-view prediction in the initial reference picture list RefPicList1 for anchor view components.
+View identifiers of the view components for inter-view prediction in the initial reference picture list RefPicList0 for anchor view components.
+View identifiers of the view components for inter-view prediction in the initial reference picture list RefPicList1 for anchor view components.
+Number of view components for inter-view prediction in the initial reference picture list RefPicList0 for non-anchor view components.
+Number of view components for inter-view prediction in the initial reference picture list RefPicList1 for non-anchor view components.
+Describes user data payload in MPEG-2 or SEI message payload in H.264.
+For encoding, these payloads can be inserted into the bitstream. The payload buffer must contain a valid formatted payload.
+For H.264, this is the sei_message() as specified in the section 7.3.2.3.1 ‘Supplemental enhancement information message syntax’ of the ISO/IEC 14496-10 specification.
+For MPEG-2, this is the section 6.2.2.2.2 ‘User data’ of the ISO/IEC 13818-2 specification, excluding the user data start_code.
+For decoding, these payloads can be retrieved as the decoder parses the bitstream and caches them in an internal buffer.
+ +Codec |
+Supported Types |
+
---|---|
MPEG2 |
+0x01B2 //User Data |
+
AVC |
+02 //pan_scan_rect +03 //filler_payload +04 //user_data_registered_itu_t_t35 +05 //user_data_unregistered +06 //recovery_point +09 //scene_info +13 //full_frame_freeze +14 //full_frame_freeze_release +15 //full_frame_snapshot +16 //progressive_refinement_segment_start +17 //progressive_refinement_segment_end +19 //film_grain_characteristics +20 //deblocking_filter_display_preference +21 //stereo_video_info +45 //frame_packing_arrangement + |
+
HEVC |
+All |
+
Configuration parameters for encoding, decoding, transcoding, and video processing.
+Public Members
+Unique component ID that will be passed by the library to mfxFrameAllocRequest. Useful in pipelines where several components of the same type share the same allocator.
+Specifies how many asynchronous operations an application performs before the application explicitly synchronizes the result. If zero, the value is not specified.
+Configurations related to encoding, decoding, and transcoding. See the definition of the mfxInfoMFX structure for details.
+Configurations related to video processing. See the definition of the mfxInfoVPP structure for details.
+Specifies the content protection mechanism. See the Protected enumerator for a list of supported protection schemes.
+Input and output memory access types for functions. See the enumerator IOPattern for details. The Query API functions return the natively supported IOPattern if the Query input argument is NULL. This parameter is a mandated input for QueryIOSurf and Init API functions. The output pattern must be specified for DECODE. The input pattern must be specified for ENCODE. Both input and output pattern must be specified for VPP.
+Points to an array of pointers to the extra configuration structures. See the ExtendedBufferID enumerator for a list of extended configurations. The list of extended buffers should not contain duplicated entries, such as entries of the same type. If the mfxVideoParam structure is used to query library capability, then the list of extended buffers attached to the input and output mfxVideoParam structure should be equal, that is, it should contain the same number of extended buffers of the same type.
+Contains features and parameters for the segment.
+Public Members
+Indicates which features are enabled for the segment. See the SegmentFeature enumerator for values for this option. Values from the enumerator can be bit-OR’ed. Support of a particular feature depends on underlying hardware platform. Application can check which features are supported by calling Query.
+Quantization index delta for the segment. Ignored if MFX_VP9_SEGMENT_FEATURE_QINDEX isn’t set in FeatureEnabled. Valid range for this parameter is [-255, 255]. If QIndexDelta is out of this range, it will be ignored. If QIndexDelta is within valid range, but sum of base quantization index and QIndexDelta is out of [0, 255], QIndexDelta will be clamped.
+Loop filter level delta for the segment. Ignored if MFX_VP9_SEGMENT_FEATURE_LOOP_FILTER is not set in FeatureEnabled. Valid range for this parameter is [-63, 63]. If LoopFilterLevelDelta is out of this range, it will be ignored. If LoopFilterLevelDelta is within valid range, but sum of base loop filter level and LoopFilterLevelDelta is out of [0, 63], LoopFilterLevelDelta will be clamped.
+The structure is used by AV-1 decoder to report film grain parameters for decoded frame.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AV1_FILM_GRAIN_PARAM.
+Indicate which reference frame contains the film grain parameters to be used for this frame.
+The number of points for the piece-wise linear scaling function of the luma component.
+The number of points for the piece-wise linear scaling function of the Cb component.
+The number of points for the piece-wise linear scaling function of the Cr component.
+The array of points for luma component.
+The array of points for Cb component.
+The array of points for Cr component.
+The shift - 8 applied to the values of the chroma component. The grain_scaling_minus_8 can take values of 0..3 and determines the range and quantization step of the standard deviation of film grain.
+The number of points for the piece-wise linear scaling function of the Cr component.
+The range of the auto-regressive coefficients. Values of 0, 1, 2, and 3 correspond to the ranges for auto-regressive coefficients of [-2, 2), [-1, 1), [-0.5, 0.5) and [-0.25, 0.25) respectively.
+Downscaling factor of the grain synthesis process for the Gaussian random numbers .
+The multiplier for the Cb component used in derivation of the input index to the Cb component scaling function.
+The multiplier for the average luma component used in derivation of the input index to the Cb component scaling function.
+The offset used in derivation of the input index to the Cb component scaling function.
+The multiplier for the Cr component used in derivation of the input index to the Cr component scaling function.
+Defines film grain point.
+ +The structure describes rectangle coordinates that can be used for ROI or for Cropping.
+Public Members
+ + + + + + + + +The structure is used for HyperMode initialization.
+Public Members
+Extension buffer header. BufferId must be equal to MFX_EXTBUFF_HYPER_MODE_PARAM.
+HyperMode implementation behavior.
+Represents Globally Unique Identifier (GUID) with memory layout compliant to RFC 4122. See https://www.rfc-editor.org/info/rfc4122 for details.
+ +The extension buffer specifies surface pool management policy. Absence of the attached buffer means MFX_ALLOCATION_UNLIMITED policy: each call of GetSurfaceForXXX leads to surface allocation.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ALLOCATION_HINTS.
+Allocation policy.
+How many surfaces to allocate during Init. It’s applicable for any polices set by mfxPoolAllocationPolicy::AllocationPolicy even if the requested number exceeds recommended size of the pool.
+DeltaToAllocateOnTheFly specifies how many surfaces are allocated in addition to NumberToPreAllocate in MFX_ALLOCATION_LIMITED mode. Maximum number of allocated frames will be NumberToPreAllocate + DeltaToAllocateOnTheFly.
+Defines what VPP pool is targeted - input or output. Ignored for other components.
+The structure represents reference counted interface structure. The memory is allocated and released by the implementation.
+Public Members
+The context of the container interface. User should not touch (change, set, null) this pointer.
+The version of the structure.
+Increments the internal reference counter of the container. The container is not destroyed until the container is released using the mfxRefInterface::Release function. mfxRefInterface::AddRef should be used each time a new link to the container is created (for example, copy structure) for proper management.
+[in] Valid interface.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If interface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxRefInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Decrements the internal reference counter of the container. mfxRefInterface::Release should be called after using the mfxRefInterface::AddRef function to add a container or when allocation logic requires it.
+[in] Valid interface.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If interface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxRefInterface->Context is invalid (for example NULL).
+MFX_ERR_UNDEFINED_BEHAVIOR If Reference Counter of container is zero before call.
+ + MFX_ERR_UNKNOWN Any internal error. +Returns current reference counter of mfxRefInterface structure.
+[in] Valid interface.
+[out] Sets counter to the current reference counter value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If interface or counter is NULL.
+MFX_ERR_INVALID_HANDLE If mfxRefInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Handle the HDR information.
+During encoding: If the application attaches this structure to the mfxEncodeCtrl structure at runtime, the encoder inserts the HDR information for the current frame and ignores InsertPayloadToggle. If the application attaches this structure to the mfxVideoParam structure during initialization or reset, the encoder inserts the HDR information based on InsertPayloadToggle.
+During video processing: If the application attaches this structure for video processing, InsertPayloadToggle will be ignored. And DisplayPrimariesX[3], DisplayPrimariesY[3] specify the color primaries where 0,1,2 specifies Red, Green, Blue respectively.
+During decoding: If the application attaches this structure to the mfxFrameSurface1 structure at runtime which will seed to the MFXVideoDECODE_DecodeFrameAsync() as surface_work parameter, the decoder will parse the HDR information if the bitstream include HDR information per frame. The parsed HDR information will be attached to the ExtendBuffer of surface_out parameter of MFXVideoDECODE_DecodeFrameAsync() with flag InsertPayloadToggle
to indicate if there is valid HDR information in the clip. InsertPayloadToggle
will be set to MFX_PAYLOAD_IDR
if oneAPI Video Processing Library (oneVPL) gets valid HDR information, otherwise it will be set to MFX_PAYLOAD_OFF
. This function is support for HEVC and AV1 only now.
Encoding or Decoding, Field semantics are defined in ITU-T* H.265 Annex D, AV1 6.7.4 Metadata OBU semantics.
+Video processing, DisplayPrimariesX[3]
and WhitePointX
are in increments of 0.00002, in the range of [5, 37000]. DisplayPrimariesY[3]
and WhitePointY
are in increments of 0.00002, in the range of [5, 42000]. MaxDisplayMasteringLuminance
is in units of 1 candela per square meter. MinDisplayMasteringLuminance
is in units of 0.0001 candela per square meter.
Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MASTERING_DISPLAY_COLOUR_VOLUME.
+Color primaries for a video source. Consist of RGB x coordinates and define how to convert colors from RGB color space to CIE XYZ color space.
+Color primaries for a video source. Consists of RGB y coordinates and defines how to convert colors from RGB color space to CIE XYZ color space.
+Handle the HDR information.
+During encoding: If the application attaches this structure to the mfxEncodeCtrl structure at runtime, the encoder inserts the HDR information for the current frame and ignores InsertPayloadToggle. If the application attaches this structure to the mfxVideoParam structure during initialization or reset, the encoder inserts the HDR information based on InsertPayloadToggle.
+During video processing: If the application attaches this structure for video processing, InsertPayloadToggle will be ignored.
+During decoding: If the application attaches this structure to the mfxFrameSurface1 structure at runtime which will seed to the MFXVideoDECODE_DecodeFrameAsync() as surface_work parameter, the decoder will parse the HDR information if the bitstream include HDR information per frame. The parsed HDR information will be attached to the ExtendBuffer of surface_out parameter of MFXVideoDECODE_DecodeFrameAsync() with flag InsertPayloadToggle
to indicate if there is valid HDR information in the clip. InsertPayloadToggle
will be set to MFX_PAYLOAD_IDR
if oneVPL gets valid HDR information, otherwise it will be set to MFX_PAYLOAD_OFF
. This function is support for HEVC and AV1 only now.
Field semantics are defined in ITU-T* H.265 Annex D, AV1 6.7.3 Metadata high dynamic range content light level semantics.
+Public Members
+Extension buffer header. Header.BufferId must be equal to EXTBUFF_CONTENT_LIGHT_LEVEL_INFO.
+The structure specifies type of quality optimization used by the encoder. The buffer can also be attached for VPP functions to make correspondent pre-filtering.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_TUNE_ENCODE_QUALITY.
+The control to specify type of encode quality metric(s) to optimize; See correspondent enum.
+Points to an array of pointers to the extra configuration structures; see the ExtendedBufferID enumerator for a list of extended configurations.
+Public Members
+The context of the config interface. User should not touch (change, set, null) this pointer.
+The version of the structure.
+Sets a parameter to specified value in the current session. If a parameter already has a value, the new value will overwrite the existing value.
+This function is available since API version 2.10.
+[in] The valid interface returned by calling MFXQueryInterface().
+[in] Null-terminated string containing parameter to set. The string length must be < MAX_PARAM_STRING_LENGTH bytes.
+[in] Null-terminated string containing value to which key should be set. The string length must be < MAX_PARAM_STRING_LENGTH bytes. value will be converted from a string to the expected data type for the given key, or return an error if conversion fails.
+[in] Type of structure pointed to by structure.
+[out] If and only if SetParameter returns MFX_ERR_NONE, the contents of structure (including any attached extension buffers) will be updated according to the provided key and value. If key modifies a field in an extension buffer which is not already attached, the function will return MFX_ERR_MORE_EXTBUFFER and fill ext_buffer with the header for the required mfxExtBuffer type.
+[out] If and only if SetParameter returns MFX_ERR_MORE_EXTBUFFER, ext_buffer will contain the header for a buffer of type mfxExtBuffer. The caller should allocate a buffer of the size ext_buffer.BufferSz, copy the header in ext_buffer to the start of this new buffer, attach this buffer to videoParam, then call SetParameter again. Otherwise, the contents of ext_buffer will be cleared.
+MFX_ERR_NONE The function completed successfully. MFX_ERR_NULL_PTR If key, value, videoParam, and/or ext_buffer is NULL. MFX_ERR_NOT_FOUND If key contains an unknown parameter name. MFX_ERR_UNSUPPORTED If value is of the wrong format for key (for example, a string is provided where an integer is required) or if value cannot be converted into any valid data type. MFX_ERR_INVALID_VIDEO_PARAM If length of key or value is >= MAX_PARAM_STRING_LENGTH or is zero (empty string). MFX_ERR_MORE_EXTBUFFER If key requires modifying a field in an mfxExtBuffer which is not attached. Caller must allocate and attach the buffer type provided in ext_buffer then call the function again.
+Structures used by Decode only.
+Returns statistics collected during decoding.
+ +Used by the decoders to report bitstream error information right after DecodeHeader or DecodeFrameAsync. The application can attach this extended buffer to the mfxBitstream structure at runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_DECODE_ERROR_REPORT.
+Used by the decoders to report additional information about a decoded frame. The application can attach this extended buffer to the mfxFrameSurface1::mfxFrameData structure at runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_DECODED_FRAME_INFO.
+Used by the library to pass MPEG 2 specific timing information.
+See ISO/IEC 13818-2 and ITU-T H.262, MPEG-2 Part 2 for the definition of these parameters.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_TIME_CODE.
+Structures used by DECODE_VPP only.
+The structure is reference counted object to return array of surfaces allocated and processed by the library.
+Public Members
+The context of the memory interface. User should not touch (change, set, null) this pointer.
+The version of the structure.
+Increments the internal reference counter of the surface. The surface is not destroyed until the surface is released using the mfxSurfaceArray::Release function. mfxSurfaceArray::AddRef should be used each time a new link to the surface is created (for example, copy structure) for proper surface management.
+[in] Valid mfxSurfaceArray.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfaceArray->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Decrements the internal reference counter of the surface. mfxSurfaceArray::Release should be called after using the mfxSurfaceArray::AddRef function to add a surface or when allocation logic requires it.
+[in] Valid mfxSurfaceArray.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfaceArray->Context is invalid (for example NULL).
+MFX_ERR_UNDEFINED_BEHAVIOR If Reference Counter of surface is zero before call.
+ + MFX_ERR_UNKNOWN Any internal error. +Returns current reference counter of mfxSurfaceArray structure.
+[in] Valid surface_array.
+[out] Sets counter to the current reference counter value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface or counter is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfaceArray->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +The array of pointers to mfxFrameSurface1. mfxFrameSurface1 surfaces are allocated by the same agent who allocates mfxSurfaceArray.
+The size of array of pointers to mfxFrameSurface1.
+The structure is used for VPP channels initialization in Decode_VPP component.
+Public Members
+The configuration parameters of VPP filters per each channel.
+Points to an array of pointers to the extra configuration structures; see the ExtendedBufferID enumerator for a list of extended configurations.
+The structure contains crop parameters which applied by Decode_VPP component to input surfaces before video processing operation. It is used for letterboxing operations.
+ +Structures used by Encode only.
+Specifies controls for next frame encoding provided by external BRC functions.
+Public Members
+ + +See initial_cpb_removal_delay in codec standard. Ignored if no HRD control: mfxExtCodingOption::VuiNalHrdParameters = MFX_CODINGOPTION_OFF. Calculated by encoder if initial_cpb_removal_delay==0 && initial_cpb_removal_offset == 0 && HRD control is switched on.
+See initial_cpb_removal_offset in codec standard. Ignored if no HRD control: mfxExtCodingOption::VuiNalHrdParameters = MFX_CODINGOPTION_OFF. Calculated by encoder if initial_cpb_removal_delay==0 && initial_cpb_removal_offset == 0 && HRD control is switched on.
+Max frame size in bytes. Option for repack feature. Driver calls PAK until current frame size is less than or equal to MaxFrameSize, or number of repacking for this frame is equal to MaxNumRePak. Repack is available if there is driver support, MaxFrameSize !=0, and MaxNumRePak != 0. Ignored if MaxNumRePak == 0.
+Option for repack feature. Ignored if MaxNumRePak == 0 or MaxNumRePak==0. If current frame size > MaxFrameSize and/or number of repacking (nRepack) for this frame <= MaxNumRePak, PAK is called with QP = mfxBRCFrameCtrl::QpY + Sum(DeltaQP[i]), where i = [0,nRepack]. Non zero DeltaQP[nRepack] are ignored if nRepack > MaxNumRePak. If repacking feature is on ( MaxFrameSize & MaxNumRePak are not zero), it is calculated by the encoder.
+Number of possible repacks in driver if current frame size > MaxFrameSize. Ignored if MaxFrameSize==0. See MaxFrameSize description. Possible values are in the range of 0 to 8.
+Reserved for future use.
+Describes frame parameters required for external BRC functions.
+Public Members
+ + + + +Frame Complexity Frame spatial complexity if non zero. Zero if complexity is not available.
+The frame number in a sequence of reordered frames starting from encoder Init.
+The frame number in a sequence of frames in display order starting from last IDR.
+Reserved for future use.
+Frame spatial complexity is calculated according to the following formula:
+Specifies instructions for the encoder provided by external BRC after each frame encoding. See the BRCStatus enumerator for details.
+ +Contains parameters for per-frame based encoding control.
+Public Members
+This extension buffer doesn’t have assigned buffer ID. Ignored.
+Type of NAL unit that contains encoding frame. All supported values are defined by MfxNalUnitType enumerator. Other values defined in ITU-T H.265 specification are not supported.
+The encoder uses this field only if application sets mfxExtCodingOption3::EnableNalUnitType option to ON during encoder initialization.
+Note
+Only encoded order is supported. If application specifies this value in display order or uses value inappropriate for current frame or invalid value, then the encoder silently ignores it.
+Indicates that current frame should be skipped or the number of missed frames before the current frame. See mfxExtCodingOption2::SkipFrame for details.
+If nonzero, this value overwrites the global QP value for the current frame in the constant QP mode.
+Encoding frame type. See the FrameType enumerator for details. If the encoder works in the encoded order, the application must specify the frame type. If the encoder works in the display order, only key frames are enforceable.
+Pointer to an array of pointers to external buffers that provide additional information or control to the encoder for this frame or field pair. A typical use is to pass the VPP auxiliary data generated by the video processing pipeline to the encoder. See the ExtendedBufferID for the list of extended buffers.
+Pointer to an array of pointers to user data (MPEG-2) or SEI messages (H.264) for insertion into the bitstream. For field pictures, odd payloads are associated with the first field and even payloads are associated with the second field. See the mfxPayload structure for payload definitions.
+Used to report encoded unit information.
+ +Returns statistics collected during encoding.
+ +Used by the encoder to report additional information about the encoded picture. The application can attach this buffer to the mfxBitstream structure before calling MFXVideoENCODE_EncodeFrameAsync function. For interlaced content the encoder requires two such structures. They correspond to fields in encoded order.
+Note
+Not all implementations of the encoder support this extended buffer. The application must use query mode 1 to determine if the functionality is supported. To do this, the application must attach this extended buffer to the mfxVideoParam structure and call the MFXVideoENCODE_Query function. If the function returns MFX_ERR_NONE then the functionality is supported.
+Reference Lists
+The following structure members are used by the reference lists contained in the parent structure.
+ + +Picture structure of encoded picture.
+Picture structure of reference picture.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODED_FRAME_INFO.
+Mean Absolute Difference between original pixels of the frame and motion compensated (for inter macroblocks) or spatially predicted (for intra macroblocks) pixels. Only luma component, Y plane, is used in calculation.
+Bitrate control was not able to allocate enough bits for this frame. Frame quality may be unacceptably low.
+Offset to second field. Second field starts at mfxBitstream::Data + mfxBitstream::DataOffset + mfxExtAVCEncodedFrameInfo::SecondFieldOffset.
+Reference list that has been used to encode picture.
+Reference list that has been used to encode picture.
+Configures reference frame options for the H.264 encoder.
See the Reference List Selection and Long Term Reference Frame sections for more details.
+ +Note
+Not all implementations of the encoder support LongTermIdx and ApplyLongTermIdx fields in this structure. The application must use query mode 1 to determine if such functionality is supported. To do this, the application must attach this extended buffer to the mfxVideoParam structure and call the MFXVideoENCODE_Query function. If the function returns MFX_ERR_NONE and these fields were set to non-zero value, then the functionality is supported. If the function fails or sets fields to zero, then the functionality is not supported.
+Reference Lists
+The following structure members are used by the reference lists contained in the parent structure.
+Together FrameOrder and PicStruct fields are used to identify reference picture. Use FrameOrder = MFX_FRAMEORDER_UNKNOWN to mark unused entry.
+Together FrameOrder and PicStruct fields are used to identify reference picture. Use FrameOrder = MFX_FRAMEORDER_UNKNOWN to mark unused entry.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AVC_REFLIST_CTRL.
+Specify the number of reference frames in the active reference list L0. This number should be less or equal to the NumRefFrame parameter from encoding initialization.
+Specify the number of reference frames in the active reference list L1. This number should be less or equal to the NumRefFrame parameter from encoding initialization.
+Reference list that specifies the list of frames that should be used to predict the current frame.
+Reference list that specifies the list of frames that should not be used for prediction.
+Reference list that specifies the list of frames that should be marked as long-term reference frame.
+Specifies reference lists for the encoder. It may be used together with the mfxExtAVCRefListCtrl structure to create customized reference lists. If both structures are used together, then the encoder takes reference lists from the mfxExtAVCRefLists structure and modifies them according to the mfxExtAVCRefListCtrl instructions. In case of interlaced coding, the first mfxExtAVCRefLists structure affects TOP field and the second - BOTTOM field.
+Note
+Not all implementations of the encoder support this structure. The application must use the Query API function to determine if it is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AVC_REFLISTS.
+Specify the number of reference frames in the active reference list L0. This number should be less than or equal to the NumRefFrame parameter from encoding initialization.
+Specify the number of reference frames in the active reference list L1. This number should be less than or equal to the NumRefFrame parameter from encoding initialization.
+Specify L0 reference list.
+Specify L1 reference list.
+Used by the reference lists contained in the parent structure. Together these fields are used to identify reference picture.
+ +Used by encoders to set rounding offset parameters for quantization. It is per-frame based encoding control, and can be attached to some frames and skipped for others. When the extension buffer is set the application can attach it to the mfxEncodeCtrl during runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AVC_ROUNDING_OFFSET.
+Enable rounding offset for intra blocks. See the CodingOptionValue enumerator for values of this option.
+Intra rounding offset. Value must be in the range of 0 to 7, inclusive.
+Configures the H.264 temporal layers hierarchy.
+If the application attaches it to the mfxVideoParam structure during initialization, the encoder generates the temporal layers and inserts the prefix NAL unit before each slice to indicate the temporal and priority IDs of the layer.
+This structure can be used with the display-order encoding mode only.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AVC_TEMPORAL_LAYERS.
+Contains a set of callbacks to perform external bitrate control. Can be attached to the mfxVideoParam structure during encoder initialization. Set the mfxExtCodingOption2::ExtBRC option to ON to make the encoder use the external BRC instead of the native one.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_BRC.
+Initializes the BRC session according to parameters from input mfxVideoParam and attached structures. It does not modify the input mfxVideoParam and attached structures. Invoked during MFXVideoENCODE_Init.
+[in] Pointer to the BRC object.
+[in] Pointer to the mfxVideoParam structure that was used for the encoder initialization.
+MFX_ERR_NONE The function completed successfully.
+MFX_ERR_UNSUPPORTED The function detected unsupported video parameters.
+ +Resets BRC session according to new parameters. It does not modify the input mfxVideoParam and attached structures. Invoked during MFXVideoENCODE_Reset.
+[in] Pointer to the BRC object.
+[in] Pointer to the mfxVideoParam structure that was used for the encoder initialization.
+MFX_ERR_NONE The function completed successfully.
+MFX_ERR_UNSUPPORTED The function detected unsupported video parameters.
+ + MFX_ERR_INCOMPATIBLE_VIDEO_PARAM The function detected that the video parameters provided by the application are incompatible with initialization parameters. Reset requires additional memory allocation and cannot be executed. +Deallocates any internal resources acquired in Init for this BRC session. Invoked during MFXVideoENCODE_Close.
+[in] Pointer to the BRC object.
+MFX_ERR_NONE The function completed successfully.
+Returns controls (ctrl
) to encode next frame based on info from input mfxBRCFrameParam structure (par
) and internal BRC state. Invoked asynchronously before each frame encoding or recoding.
[in] Pointer to the BRC object.
+[in] Pointer to the mfxVideoParam structure that was used for the encoder initialization.
+[out] Pointer to the output mfxBRCFrameCtrl structure.
+MFX_ERR_NONE The function completed successfully.
+Updates internal BRC state and returns status to instruct encoder whether it should recode the previous frame, skip the previous frame, do padding, or proceed to next frame based on info from input mfxBRCFrameParam and mfxBRCFrameCtrl structures. Invoked asynchronously after each frame encoding or recoding.
+[in] Pointer to the BRC object.
+[in] Pointer to the mfxVideoParam structure that was used for the encoder initialization.
+[in] Pointer to the output mfxBRCFrameCtrl structure.
+[in] Pointer to the output mfxBRCFrameStatus structure.
+MFX_ERR_NONE The function completed successfully.
+Members of this structure define the location of chroma samples information.
+See Annex E of the ISO*\/IEC* 14496-10 specification for the definition of these parameters.
+Note
+Not all implementations of the encoder support this structure. The application must use the Query API function to determine if it is supported.
+Specifies additional options for encoding.
+The application can attach this extended buffer to the mfxVideoParam structure to configure initialization.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_CODING_OPTION.
+Set this flag if rate distortion optimization is needed. See the CodingOptionValue enumerator for values of this option.
+Motion estimation search algorithm. This value is reserved and must be zero.
+Rectangular size of the search window for motion estimation. This parameter is reserved and must be (0, 0).
+Set this flag to encode interlaced fields as interlaced frames. This flag does not affect progressive input frames. See the CodingOptionValue enumerator for values of this option.
+If set, CAVLC is used; if unset, CABAC is used for encoding. See the CodingOptionValue enumerator for values of this option.
+Set this flag to insert the recovery point SEI message at the beginning of every intra refresh cycle. See the description of IntRefType in mfxExtCodingOption2 structure for details on how to enable and configure intra refresh.
+If intra refresh is not enabled then this flag is ignored.
+See the CodingOptionValue enumerator for values of this option.
+Set this flag to instruct the MVC encoder to output each view in separate bitstream buffer. See the CodingOptionValue enumerator for values of this option and the Multi-View Video Coding section for more details about usage of this flag.
+If this option is turned ON, then AVC encoder produces an HRD conformant bitstream. If it is turned OFF, then the AVC encoder may (but not necessarily) violate HRD conformance. That is, this option can force the encoder to produce an HRD conformant stream, but cannot force it to produce a non-conformant stream.
+See the CodingOptionValue enumerator for values of this option.
+If set, encoder puts all SEI messages in the singe NAL unit. It includes messages provided by application and created by encoder. It is a three-states option. See CodingOptionValue enumerator for values of this option. The three states are:
+UNKNOWN Put each SEI in its own NAL unit.
ON Put all SEI messages in the same NAL unit.
OFF The same as unknown.
If set and VBR rate control method is used, then VCL HRD parameters are written in bitstream with values identical to the values of the NAL HRD parameters. See the CodingOptionValue enumerator for values of this option.
+Set this flag to activate reference picture list reordering. This value is reserved and must be zero.
+Set this flag to reset the reference list to non-IDR I-frames of a GOP sequence. See the CodingOptionValue enumerator for values of this option.
+Set this flag to write the reference picture marking repetition SEI message into the output bitstream. See the CodingOptionValue enumerator for values of this option.
+Set this flag to instruct the AVC encoder to output bitstreams immediately after the encoder encodes a field, in the field-encoding mode. See the CodingOptionValue enumerator for values of this option.
+Minimum block size of intra-prediction. This value is reserved and must be zero.
+Minimum block size of inter-prediction. This value is reserved and must be zero.
+Specify the motion estimation precision. This parameter is reserved and must be zero.
+Specifies the maximum number of frames buffered in a DPB. A value of zero means unspecified.
+Set this flag to insert the Access Unit Delimiter NAL. See the CodingOptionValue enumerator for values of this option.
+Set this flag to insert the picture timing SEI with pic_struct syntax element. See sub-clauses D.1.2 and D.2.2 of the ISO/IEC 14496-10 specification for the definition of this syntax element. See the CodingOptionValue enumerator for values of this option. The default value is ON.
+Used with the mfxExtCodingOption structure to specify additional options for encoding.
+The application can attach this extended buffer to the mfxVideoParam structure to configure initialization and to the mfxEncodeCtrl during runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_CODING_OPTION2.
+Specifies intra refresh type. See the IntraRefreshTypes. The major goal of intra refresh is improvement of error resilience without significant impact on encoded bitstream size caused by I-frames. The encoder achieves this by encoding part of each frame in the refresh cycle using intra MBs.
+This parameter is valid during initialization and runtime. When used with temporal scalability, intra refresh applied only to base layer.
+MFX_REFRESH_NO No refresh.
+MFX_REFRESH_VERTICAL Vertical refresh, by column of MBs.
+MFX_REFRESH_HORIZONTAL Horizontal refresh, by rows of MBs.
+MFX_REFRESH_SLICE Horizontal refresh by slices without overlapping.
+MFX_REFRESH_SLICE Library ignores IntRefCycleSize (size of refresh cycle equals number slices).
+Specifies number of pictures within refresh cycle starting from 2. 0 and 1 are invalid values. This parameter is valid only during initialization.
+Specifies QP difference for inserted intra MBs. Signed values are in the -51 to 51 range. This parameter is valid during initialization and runtime.
+Specify maximum encoded frame size in byte. This parameter is used in VBR based bitrate control modes and ignored in others. The encoder tries to keep frame size below specified limit but minor overshoots are possible to preserve visual quality. This parameter is valid during initialization and runtime. It is recommended to set MaxFrameSize to 5x-10x target frame size ((TargetKbps*1000)/(8* FrameRateExtN/FrameRateExtD)) for I-frames and 2x-4x target frame size for P- and B-frames.
+Specify maximum slice size in bytes. If this parameter is specified other controls over number of slices are ignored.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Modifies bitrate to be in the range imposed by the encoder. The default value is ON, that is, bitrate is limited. Setting this flag to OFF may lead to violation of HRD conformance.Specifying bitrate below the encoder range might significantly affect quality.
+If set to ON, this option takes effect in non CQP modes: if TargetKbps is not in the range imposed by the encoder, it will be changed to be in the range.
+This parameter is valid only during initialization. Flag works with MFX_CODEC_AVC only, it is ignored with other codecs. See the CodingOptionValue enumerator for values of this option.
+Deprecated in API version 2.9
+Setting this flag enables macroblock level bitrate control that generally improves subjective visual quality. Enabling this flag may have negative impact on performance and objective visual quality metric. See the CodingOptionValue enumerator for values of this option. The default value depends on target usage settings.
+Set this option to ON to enable external BRC. See the CodingOptionValue enumerator for values of this option. Use the Query API function to check if this feature is supported.
+Specifies the depth of the look ahead rate control algorithm. The depth value is the number of frames that the encoder analyzes before encoding. Values are in the 10 to 100 range, inclusive. To instruct the encoder to use the default value the application should zero this field.
+Used to control trellis quantization in AVC encoder. See TrellisControl enumerator for values of this option. This parameter is valid only during initialization.
+Controls picture parameter set repetition in AVC encoder. Set this flag to ON to repeat PPS with each frame. See the CodingOptionValue enumerator for values of this option. The default value is ON. This parameter is valid only during initialization.
+Controls usage of B-frames as reference. See BRefControl enumerator for values of this option. This parameter is valid only during initialization.
+Controls insertion of I-frames by the encoder. Set this flag to ON to allow changing of frame type from P and B to I. This option is ignored if GopOptFlag in mfxInfoMFX structure is equal to MFX_GOP_STRICT. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+Controls changing of frame type from B to P. Set this flag to ON enable changing of frame type from B to P. This option is ignored if GopOptFlag in mfxInfoMFX structure is equal to MFX_GOP_STRICT. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+Controls down sampling in look ahead bitrate control mode. See LookAheadDownSampling enumerator for values of this option. This parameter is valid only during initialization.
+Specifies suggested slice size in number of macroblocks. The library can adjust this number based on platform capability. If this option is specified, that is, if it is not equal to zero, the library ignores mfxInfoMFX::NumSlice parameter.
+Enables usage of mfxEncodeCtrl::SkipFrame parameter. See the SkipFrame enumerator for values of this option.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Minimum allowed QP value for I-frame types. Valid range varies with the codec. Zero means default value, that is, no limitations on QP.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Maximum allowed QP value for I-frame types. Valid range varies with the codec. Zero means default value, that is, no limitations on QP.
+Note
+In the HEVC design, a further adjustment to QPs can occur based on bit depth. Adjusted MaxQPI value = 51 + (6 * (BitDepthLuma - 8)) for BitDepthLuma in the range [8,14]. For HEVC_MAIN10, we add (6*(10-8)=12) on our side for MaxQPI will reach 63.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Minimum allowed QP value for P-frame types. Valid range varies with the codec. Zero means default value, that is, no limitations on QP.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Maximum allowed QP value for P-frame types. Valid range varies with the codec. Zero means default value, that is, no limitations on QP.
+Note
+In the HEVC design, a further adjustment to QPs can occur based on bit depth. Adjusted MaxQPP value = 51 + (6 * (BitDepthLuma - 8)) for BitDepthLuma in the range [8,14]. For HEVC_MAIN10, we add (6*(10-8)=12) on our side for MaxQPP will reach 63.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Minimum allowed QP value for B-frame types. Valid range varies with the codec. Zero means default value, that is, no limitations on QP.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Maximum allowed QP value for B-frame types. Valid range varies with the codec. Zero means default value, that is, no limitations on QP.
+Note
+In the HEVC design, a further adjustment to QPs can occur based on bit depth. Adjusted MaxQPB value = 51 + (6 * (BitDepthLuma - 8)) for BitDepthLuma in the range [8,14]. For HEVC_MAIN10, we add (6*(10-8)=12) on our side for MaxQPB will reach 63.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Sets fixed_frame_rate_flag in VUI.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Disables deblocking.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Completely disables VUI in the output bitstream.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Controls insertion of buffering period SEI in the encoded bitstream. It should be one of the following values:
+MFX_BPSEI_DEFAULT Encoder decides when to insert BP SEI,
+MFX_BPSEI_IFRAME BP SEI should be inserted with every I-frame.
+Set this flag to ON to enable per-frame reporting of Mean Absolute Difference. This parameter is valid only during initialization.
+Set this flag to ON to use raw frames for reference instead of reconstructed frames. This parameter is valid during initialization and runtime (only if was turned ON during initialization).
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Used with mfxExtCodingOption and mfxExtCodingOption2 structures to specify additional options for encoding. The application can attach this extended buffer to the mfxVideoParam structure to configure initialization and to the mfxEncodeCtrl during runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_CODING_OPTION3.
+The number of slices for I-frames.
+Note
+Not all codecs and implementations support these values. Use the Query API function to check if this feature is supported
+The number of slices for P-frames.
+Note
+Not all codecs and implementations support these values. Use the Query API function to check if this feature is supported
+The number of slices for B-frames.
+Note
+Not all codecs and implementations support these values. Use the Query API function to check if this feature is supported
+When rate control method is MFX_RATECONTROL_CBR, MFX_RATECONTROL_VBR, MFX_RATECONTROL_LA, MFX_RATECONTROL_LA_HRD, or MFX_RATECONTROL_QVBR this parameter specifies the maximum bitrate averaged over a sliding window specified by WinBRCSize.
+When rate control method is MFX_RATECONTROL_CBR, MFX_RATECONTROL_VBR, MFX_RATECONTROL_LA, MFX_RATECONTROL_LA_HRD, or MFX_RATECONTROL_QVBR this parameter specifies sliding window size in frames. Set WinBRCMaxAvgKbps and WinBRCSize to zero to disable sliding window.
+When rate control method is MFX_RATECONTROL_QVBR, this parameter specifies quality factor. Values are in the 1 to 51 range, where 1 corresponds to the best quality.
+Set this flag to ON to enable per-macroblock QP control. Rate control method must be MFX_RATECONTROL_CQP. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+Distance between the beginnings of the intra-refresh cycles in frames. Zero means no distance between cycles.
+Set this flag to ON to enable the ENC mode decision algorithm to bias to fewer B Direct/Skip types. Applies only to B-frames, all other frames will ignore this setting. See the CodingOptionValue enumerator for values of this option.
+Enables global motion bias. See the CodingOptionValue enumerator for values of this option.
+Values are:
+0: Set MV cost to be 0.
1: Scale MV cost to be 1/2 of the default value.
2: Scale MV cost to be 1/4 of the default value.
3: Scale MV cost to be 1/8 of the default value.
Set this flag to ON to enable usage of mfxExtMBDisableSkipMap. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+Weighted prediction mode. See the WeightedPred enumerator for values of these options.
+Weighted prediction mode. See the WeightedPred enumerator for values of these options.
+Instructs encoder whether aspect ratio info should present in VUI parameters. See the CodingOptionValue enumerator for values of this option.
+Instructs encoder whether overscan info should present in VUI parameters. See the CodingOptionValue enumerator for values of this option.
+ON indicates that the cropped decoded pictures output are suitable for display using overscan. OFF indicates that the cropped decoded pictures output contain visually important information in the entire region out to the edges of the cropping rectangle of the picture. See the CodingOptionValue enumerator for values of this option.
+Instructs encoder whether frame rate info should present in VUI parameters. See the CodingOptionValue enumerator for values of this option.
+Instructs encoder whether bitstream restriction info should present in VUI parameters. See the CodingOptionValue enumerator for values of this option.
+Corresponds to AVC syntax element low_delay_hrd_flag (VUI). See the CodingOptionValue enumerator for values of this option.
+When set to OFF, no sample outside the picture boundaries and no sample at a fractional sample position for which the sample value is derived using one or more samples outside the picture boundaries is used for inter prediction of any sample.
+When set to ON, one or more samples outside picture boundaries may be used in inter prediction.
+See the CodingOptionValue enumerator for values of this option.
+Provides a hint to encoder about the scenario for the encoding session. See the ScenarioInfo enumerator for values of this option.
+Provides a hint to encoder about the content for the encoding session. See the ContentInfo enumerator for values of this option.
+When GopRefDist=1, specifies the model of reference list construction and DPB management. See the PRefType enumerator for values of this option.
+Instructs encoder whether internal fade detection algorithm should be used for calculation of weigh/offset values for pred_weight_table unless application provided mfxExtPredWeightTable for this frame. See the CodingOptionValue enumerator for values of this option.
+Set this flag to OFF to make HEVC encoder use regular P-frames instead of GPB. See the CodingOptionValue enumerator for values of this option.
+Same as mfxExtCodingOption2::MaxFrameSize but affects only I-frames. MaxFrameSizeI must be set if MaxFrameSizeP is set. If MaxFrameSizeI is not specified or greater than spec limitation, spec limitation will be applied to the sizes of I-frames.
+Same as mfxExtCodingOption2::MaxFrameSize but affects only P/B-frames. If MaxFrameSizeP equals 0, the library sets MaxFrameSizeP equal to MaxFrameSizeI. If MaxFrameSizeP is not specified or greater than spec limitation, spec limitation will be applied to the sizes of P/B-frames.
+Enables QPOffset control. See the CodingOptionValue enumerator for values of this option.
+Specifies QP offset per pyramid layer when EnableQPOffset is set to ON and RateControlMethod is CQP.
+For B-pyramid, B-frame QP = QPB + QPOffset[layer].
+For P-pyramid, P-frame QP = QPP + QPOffset[layer].
+Max number of active references for P-frames. Array index is pyramid layer.
+Max number of active references for B-frames in reference picture list 0. Array index is pyramid layer.
+Max number of active references for B-frames in reference picture list 1. Array index is pyramid layer.
+For HEVC if this option is turned ON, the transform_skip_enabled_flag will be set to 1 in PPS. OFF specifies that transform_skip_enabled_flag will be set to 0.
+Minus 1 specifies target encoding chroma format (see ChromaFormatIdc enumerator). May differ from the source format. TargetChromaFormatPlus1 = 0 specifies the default target chroma format which is equal to source (mfxVideoParam::mfx::FrameInfo::ChromaFormat + 1), except RGB4 source format. In case of RGB4 source format default target , chroma format is 4:2:0 (instead of 4:4:4) for the purpose of backward compatibility.
+Target encoding bit-depth for luma samples. May differ from source bit-depth. 0 specifies a default target bit-depth that is equal to source (mfxVideoParam::mfx::FrameInfo::BitDepthLuma).
+Target encoding bit-depth for chroma samples. May differ from source bit-depth. 0 specifies a default target bit-depth that is equal to source (mfxVideoParam::mfx::FrameInfo::BitDepthChroma).
+When rate control method is MFX_RATECONTROL_VBR, MFX_RATECONTROL_QVBR or MFX_RATECONTROL_VCM this parameter specifies frame size tolerance. Set this parameter to MFX_CODINGOPTION_ON to allow strictly obey average frame size set by MaxKbps, for example cases when MaxFrameSize == (MaxKbps*1000)/(8* FrameRateExtN/FrameRateExtD). Also MaxFrameSizeI and MaxFrameSizeP can be set separately.
+Set this flag to ON to enable usage of mfxExtMBForceIntra for AVC encoder. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+If this flag is set to ON, BRC may decide a larger P- or B-frame size than what MaxFrameSizeP dictates when the scene change is detected. It may benefit the video quality. AdaptiveMaxFrameSize feature is not supported with LowPower ON or if the value of MaxFrameSizeP = 0.
+Controls AVC encoder attempts to predict from small partitions. Default value allows encoder to choose preferred mode. MFX_CODINGOPTION_ON forces encoder to favor quality and MFX_CODINGOPTION_OFF forces encoder to favor performance.
+Set this flag to ON to make encoded units info available in mfxExtEncodedUnitsInfo.
+If this flag is set to ON, the HEVC encoder uses the NAL unit type provided by the application in the mfxEncodeCtrl::MfxNalUnitType field. This parameter is valid only during initialization.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+If this flag is set to ON, encoder will mark, modify, or remove LTR frames based on encoding parameters and content properties. Turn OFF to prevent Adaptive marking of Long Term Reference Frames.
+If this flag is set to ON, encoder adaptively selects one of implementation-defined quantization matrices for each frame. Non-default quantization matrices aim to improve subjective visual quality under certain conditions. Their number and definitions are API implementation specific. If this flag is set to OFF, default quantization matrix is used for all frames. This parameter is valid only during initialization.
+Attach this structure as part of the extended buffers to configure the encoder during MFXVideoENCODE_Init. The sequence or picture parameters specified by this structure overwrite any parameters specified by the structure or any other attached extended buffers attached.
+For H.264, SPSBuffer and PPSBuffer must point to valid bitstreams that contain the sequence parameter set and picture parameter set, respectively.
+For MPEG-2, SPSBuffer must point to valid bitstreams that contain the sequence header followed by any sequence header extension. The PPSBuffer pointer is ignored.
+The encoder imports parameters from these buffers. If the encoder does not support the specified parameters, the encoder does not initialize and returns the status code MFX_ERR_INCOMPATIBLE_VIDEO_PARAM.
+Check with the MFXVideoENCODE_Query function for the support of this multiple segment encoding feature. If this feature is not supported, the query returns MFX_ERR_UNSUPPORTED.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_CODING_OPTION_SPSPPS.
+Pointer to a valid bitstream that contains the SPS (sequence parameter set for H.264 or sequence header followed by any sequence header extension for MPEG-2) buffer. Can be NULL to skip specifying the SPS.
+Attach this structure as part of the extended buffers to configure the encoder during MFXVideoENCODE_Init. The sequence or picture parameters specified by this structure overwrite any parameters specified by the structure or any other attached extended buffers attached.
+If the encoder does not support the specified parameters, the encoder does not initialize and returns the status code MFX_ERR_INCOMPATIBLE_VIDEO_PARAM.
+Check with the MFXVideoENCODE_Query function for the support of this multiple segment encoding feature. If this feature is not supported, the query returns MFX_ERR_UNSUPPORTED.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_CODING_OPTION_VPS.
+Used by the application to specify dirty regions within a frame during encoding. It may be used at initialization or at runtime.
+Dirty rectangle definition is using end-point exclusive notation. In other words, the pixel with (Right, Bottom) coordinates lies immediately outside of the dirty rectangle. Left, Top, Right, Bottom should be aligned by codec-specific block boundaries (should be dividable by 16 for AVC, or by block size (8, 16, 32 or 64, depends on platform) for HEVC).
+Every dirty rectangle with unaligned coordinates will be expanded to a minimal-area block-aligned dirty rectangle, enclosing the original one. For example, a (5, 5, 15, 31) dirty rectangle will be expanded to (0, 0, 16, 32) for AVC encoder, or to (0, 0, 32, 32) for HEVC, if block size is 32.
+Dirty rectangle (0, 0, 0, 0) is a valid dirty rectangle and means that the frame is not changed.
+Dirty rectangle coordinates
+The following structure members are used by the Rect array contained in the parent structure.
+ + + + + + + + +Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_DIRTY_RECTANGLES.
+Array of dirty rectangles.
+If mfxExtCodingOption3::EncodedUnitsInfo was set to MFX_CODINGOPTION_ON during encoder initialization, the mfxExtEncodedUnitsInfo structure is attached to the mfxBitstream structure during encoding. It is used to report information about coding units in the resulting bitstream.
+The number of filled items in UnitInfo is min(NumUnitsEncoded, NumUnitsAlloc).
+For counting a minimal amount of encoded units you can use the following algorithm:
nSEI = amountOfApplicationDefinedSEI;
+if (CodingOption3.NumSlice[IPB] != 0 || mfxVideoParam.mfx.NumSlice != 0)
+ ExpectedAmount = 10 + nSEI + Max(CodingOption3.NumSlice[IPB], mfxVideoParam.mfx.NumSlice);
+else if (CodingOption2.NumMBPerSlice != 0)
+ ExpectedAmount = 10 + nSEI + (FrameWidth * FrameHeight) / (256 * CodingOption2.NumMBPerSlice);
+else if (CodingOption2.MaxSliceSize != 0)
+ ExpectedAmount = 10 + nSEI + Round(MaxBitrate / (FrameRate*CodingOption2.MaxSliceSize));
+else
+ ExpectedAmount = 10 + nSEI;
+
+if (mfxFrameInfo.PictStruct != MFX_PICSTRUCT_PROGRESSIVE)
+ ExpectedAmount = ExpectedAmount * 2;
+
+if (temporalScaleabilityEnabled)
+ ExpectedAmount = ExpectedAmount * 2;
+
Note
+Only supported by the AVC encoder.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODED_UNITS_INFO.
+Pointer to an array of mfxEncodedUnitsInfo structures whose size is equal to or greater than NumUnitsAlloc.
+Used to retrieve encoder capability. See the description of mode 4 of the MFXVideoENCODE_Query function for details on how to use this structure.
+Note
+Not all implementations of the encoder support this extended buffer. The application must use query mode 1 to determine if the functionality is supported. To do this, the application must attach this extended buffer to the mfxVideoParam structure and call the MFXVideoENCODE_Query function. If the function returns MFX_ERR_NONE then the functionality is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODER_CAPABILITY.
+Specifies rectangle areas for IPCM coding mode.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODER_IPCM_AREA.
+Array of areas.
+Number of areas
+ +Used to control the encoder behavior during reset. By using this structure, the application instructs the encoder to start a new coded sequence after reset or to continue encoding of the current sequence.
+This structure is also used in mode 3 of the MFXVideoENCODE_Query function to check for reset outcome before actual reset. The application should set StartNewSequence to the required behavior and call the query function. If the query fails (see status codes below), then reset is not possible in current encoder state. If the application sets StartNewSequence to MFX_CODINGOPTION_UNKNOWN, then the query function replaces the coding option with the actual reset type: MFX_CODINGOPTION_ON if the encoder will begin a new sequence after reset or MFX_CODINGOPTION_OFF if the encoder will continue the current sequence.
+Using this structure may cause one of the following status codes from the MFXVideoENCODE_Reset and MFXVideoENCODE_Queryfunctions:
+MFX_ERR_INVALID_VIDEO_PARAM If a reset is not possible. For example, the application sets StartNewSequence to off and requests resolution change.
MFX_ERR_INCOMPATIBLE_VIDEO_PARAM If the application requests change that leads to memory allocation. For example, the application sets StartNewSequence to on and requests resolution change to greater than the initialization value.
MFX_ERR_NONE If reset is possible.
The bitrate parameters, TargetKbps and MaxKbps, in the mfxInfoMFX structure.
The number of slices, NumSlice, in the mfxInfoMFX structure. Number of slices should be equal to or less than the number of slices during initialization.
The number of temporal layers in the mfxExtAvcTemporalLayers structure. Reset should be called immediately before encoding of frame from base layer and number of reference frames should be large enough for the new temporal layers structure.
The quantization parameters, QPI, QPP and QPB, in the mfxInfoMFX structure.
See the Configuration Change section for more information.
+ +See the Streaming and Video Conferencing Features section for more information.
+ +Note
+Not all implementations of the encoder support this extended buffer. The application must use query mode 1 to determine if the functionality is supported. To do this, the application must attach this extended buffer to the mfxVideoParam structure and call the MFXVideoENCODE_Query function. If the function returns MFX_ERR_NONE, then the functionality is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODER_RESET_OPTION.
+Instructs encoder to start new sequence after reset. Use one of the CodingOptionValue options:
+MFX_CODINGOPTION_ON The encoder completely reset internal state and begins new coded sequence after reset, including insertion of IDR frame, sequence, and picture headers.
MFX_CODINGOPTION_OFF The encoder continues encoding of current coded sequence after reset, without insertion of IDR frame.
MFX_CODINGOPTION_UNKNOWN Depending on the current encoder state and changes in configuration parameters, the encoder may or may not start new coded sequence. This value is also used to query reset outcome.
Used by the application to specify different Region Of Interests during encoding. It may be used at initialization or at runtime.
+ROI location rectangle
+The ROI rectangle definition uses end-point exclusive notation. In other words, the pixel with (Right, Bottom) coordinates lies immediately outside of the ROI. Left, Top, Right, Bottom should be aligned by codec-specific block boundaries (should be dividable by 16 for AVC, or by 32 for HEVC). Every ROI with unaligned coordinates will be expanded by the library to minimal-area block-aligned ROI, enclosing the original one. For example (5, 5, 15, 31) ROI will be expanded to (0, 0, 16, 32) for AVC encoder, or to (0, 0, 32, 32) for HEVC.
+ + + + + + + + +Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODER_ROI.
+Number of ROI descriptions in array. The Query API function mode 2 returns maximum supported value (set it to 256 and query will update it to maximum supported value).
+QP adjustment mode for ROIs. Defines if Priority or DeltaQP is used during encoding.
+Priority of ROI. Used if ROIMode = MFX_ROI_MODE_PRIORITY.This is an absolute value in the range of -3 to 3, which will be added to the MB QP. Priority is deprecated mode and is used only for backward compatibility. Bigger value produces better quality.
+Delta QP of ROI. Used if ROIMode = MFX_ROI_MODE_QP_DELTA. This is an absolute value in the range of -51 to 51, which will be added to the MB QP. Lesser value produces better quality.
+Array of ROIs. Different ROI may overlap each other. If macroblock belongs to several ROI, Priority from ROI with lowest index is used.
+Attached to the mfxVideoParam structure during HEVC encoder initialization. Specifies the region to encode.
+Note
+Not all implementations of the encoder support this structure. The application must use the Query API function to determine if it is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_HEVC_REGION.
+Configures tiles options for the HEVC encoder. The application can attach this extended buffer to the mfxVideoParam structure to configure initialization.
+ +Runtime ctrl buffer for SPS/PPS insertion with current encoding frame.
+ +Specifies macroblock map for current frame which forces specified macroblocks to be non-skip if mfxExtCodingOption3::MBDisableSkipMap was turned ON during encoder initialization. The application can attach this extended buffer to the mfxEncodeCtrl structure during runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MB_DISABLE_SKIP_MAP.
+Pointer to a list of non-skip macroblock flags in raster scan order. Each flag is one byte in map. Set flag to 1 to force corresponding macroblock to be non-skip. In case of interlaced encoding, the first half of map affects the top field and the second half of map affects the bottom field.
+Specifies macroblock map for current frame which forces specified macroblocks to be encoded as intra if mfxExtCodingOption3::EnableMBForceIntra was turned ON during encoder initialization. The application can attach this extended buffer to the mfxEncodeCtrl structure during runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MB_FORCE_INTRA.
+Pointer to a list of force intra macroblock flags in raster scan order. Each flag is one byte in map. Set flag to 1 to force corresponding macroblock to be encoded as intra. In case of interlaced encoding, the first half of map affects top field and the second half of map affects the bottom field.
+Specifies per-macroblock QP for current frame if mfxExtCodingOption3::EnableMBQP was turned ON during encoder initialization. The application can attach this extended buffer to the mfxEncodeCtrl structure during runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MBQP.
+Pointer to a list of per-macroblock QP in raster scan order. In case of interlaced encoding the first half of QP array affects the top field and the second half of QP array affects the bottom field. Valid when Mode = MFX_MBQP_MODE_QP_VALUE.
+For AVC, the valid range is 1 to 51.
+For HEVC, the valid range is 1 to 51. Application’s provided QP values should be valid. Otherwise invalid QP values may cause undefined behavior. MBQP map should be aligned for 16x16 block size. The alignment rule is (width +15 /16) && (height +15 /16).
+For MPEG2, QP corresponds to quantizer_scale of the ISO*\/IEC* 13818-2 specification and has a valid range of 1 to 112.
+Pointer to a list of per-macroblock QP deltas in raster scan order. For block i: QP[i] = BrcQP[i] + DeltaQP[i]. Valid when Mode = MFX_MBQP_MODE_QP_DELTA.
+Block-granularity modes when MFX_MBQP_MODE_QP_ADAPTIVE is set.
+Used by the application to specify moving regions within a frame during encoding.
+Destination rectangle location should be aligned to MB boundaries (should be dividable by 16). If not, the encoder truncates it to MB boundaries, for example, both 17 and 31 will be truncated to 16.
+Destination and source rectangle location
+The following structure members are used by the Rect array contained in the parent structure.
+ + + + + + + + + + + + +Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MOVING_RECTANGLE.
+Array of moving rectangles.
+Instructs encoder to use or not use samples over specified picture border for inter prediction. Attached to the mfxVideoParam structure.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_MV_OVER_PIC_BOUNDARIES.
+When set to OFF, one or more samples outside corresponding picture boundary may be used in inter prediction. See the CodingOptionValue enumerator for values of this option.
+When set to OFF, one or more samples outside corresponding picture boundary may be used in inter prediction. See the CodingOptionValue enumerator for values of this option.
+Used by an encoder to output parts of the bitstream as soon as they are ready. The application can attach this extended buffer to the mfxVideoParam structure at initialization. If this option is turned ON (Granularity != MFX_PARTIAL_BITSTREAM_NONE), then the encoder can output bitstream by part based on the required granularity.
+This parameter is valid only during initialization and reset. Absence of this buffer means default or previously configured bitstream output behavior.
+Note
+Not all codecs and implementations support this feature. Use the Query API function to check if this feature is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_PARTIAL_BITSTREAM_PARAM.
+Configures the H.264 picture timing SEI message. The encoder ignores it if HRD information in the stream is absent and the PicTimingSEI option in the mfxExtCodingOption structure is turned off. See mfxExtCodingOption for details.
+If the application attaches this structure to the mfxVideoParam structure during initialization, the encoder inserts the picture timing SEI message based on provided template in every access unit of coded bitstream.
+If application attaches this structure to the mfxEncodeCtrl structure at runtime, the encoder inserts the picture timing SEI message based on provided template in access unit that represents current frame.
+These parameters define the picture timing information. An invalid value of 0xFFFF indicates that application does not set the value and encoder must calculate it.
+See Annex D of the ISO*\/IEC* 14496-10 specification for the definition of these parameters.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_PICTURE_TIMING_SEI.
+Specifies weighted prediction table for current frame when all of the following conditions are met:
+mfxExtCodingOption3::WeightedPred was set to explicit during encoder Init or Reset .
The current frame is P-frame or mfxExtCodingOption3::WeightedBiPred was set to explicit during encoder Init or Reset.
The current frame is B-frame and is attached to the mfxEncodeCtrl structure.
Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_PRED_WEIGHT_TABLE.
+Base 2 logarithm of the denominator for all luma weighting factors. Value must be in the range of 0 to 7, inclusive.
+Base 2 logarithm of the denominator for all chroma weighting factors. Value must be in the range of 0 to 7, inclusive.
+LumaWeightFlag[L][R] equal to 1 specifies that the weighting factors for the luma component are specified for R’s entry of RefPicList L.
+ChromaWeightFlag[L][R] equal to 1 specifies that the weighting factors for the chroma component are specified for R’s entry of RefPicList L.
+The values of the weights and offsets used in the encoding processing. The value of Weights[i][j][k][m] is interpreted as: i refers to reference picture list 0 or 1; j refers to reference list entry 0-31; k refers to data for the luma component when it is 0, the Cb chroma component when it is 1 and the Cr chroma component when it is 2; m refers to weight when it is 0 and offset when it is 1
+Describes VP8 coding options.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VP8_CODING_OPTION.
+Determines the bitstream version. Corresponds to the same VP8 syntax element in frame_tag.
+Set this option to ON to enable segmentation. This is tri-state option. See the CodingOptionValue enumerator for values of this option.
+Select the type of filter (normal or simple). Corresponds to VP8 syntax element filter_type.
+Controls the filter strength. Corresponds to VP8 syntax element loop_filter_level.
+Controls the filter sensitivity. Corresponds to VP8 syntax element sharpness_level.
+Loop filter level delta for reference type (intra, last, golden, altref).
+In the VP9 encoder it is possible to divide a frame into up to 8 segments and apply particular features (like delta for quantization index or for loop filter level) on a per-segment basis. “Uncompressed header” of every frame indicates if segmentation is enabled for the current frame, and (if segmentation enabled) contains full information about features applied to every segment. Every “Mode info block” of a coded frame has segment_id in the range of 0 to 7.
+To enable Segmentation, the mfxExtVP9Segmentation structure with correct settings should be passed to the encoder. It can be attached to the mfxVideoParam structure during initialization or the MFXVideoENCODE_Reset call (static configuration). If the mfxExtVP9Segmentation buffer isn’t attached during initialization, segmentation is disabled for static configuration. If the buffer isn’t attached for the Reset call, the encoder continues to use static configuration for segmentation which was the default before this Reset call. If the mfxExtVP9Segmentation buffer with NumSegments=0 is provided during initialization or Reset call, segmentation becomes disabled for static configuration.
+The buffer can be attached to the mfxEncodeCtrl structure during runtime (dynamic configuration). Dynamic configuration is applied to the current frame only. After encoding of the current frame, the encoder will switch to the next dynamic configuration or to static configuration if dynamic configuration is not provided for next frame).
+The SegmentIdBlockSize, NumSegmentIdAlloc, and SegmentId parameters represent a segmentation map. Here, the segmentation map is an array of segment_ids (one byte per segment_id) for blocks of size NxN in raster scan order. The size NxN is specified by the application and is constant for the whole frame. If mfxExtVP9Segmentation is attached during initialization and/or during runtime, all three parameters should be set to proper values that do not conflict with each other and with NumSegments. If any of the parameters are not set or any conflict or error in these parameters is detected by the library, the segmentation map will be discarded.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VP9_SEGMENTATION.
+Number of segments for frame. Value 0 means that segmentation is disabled. Sending 0 for a particular frame will disable segmentation for this frame only. Sending 0 to the Reset API function will disable segmentation permanently. Segmentation can be enabled again by a subsequent Reset call.
+Array of mfxVP9SegmentParam structures containing features and parameters for every segment. Entries with indexes bigger than NumSegments-1 are ignored. See the mfxVP9SegmentParam structure for definitions of segment features and their parameters.
+Size of block (NxN) for segmentation map. See SegmentIdBlockSize enumerator for values for this option. An encoded block that is bigger than SegmentIdBlockSize uses segment_id taken from it’s top-left sub-block from the segmentation map. The application can check if a particular block size is supported by calling Query.
+Size of buffer allocated for segmentation map (in bytes). Application must assure that NumSegmentIdAlloc is large enough to cover frame resolution with blocks of size SegmentIdBlockSize. Otherwise the segmentation map will be discarded.
+Pointer to the segmentation map buffer which holds the array of segment_ids in raster scan order. The application is responsible for allocation and release of this memory. The buffer pointed to by SegmentId, provided during initialization or Reset call should be considered in use until another SegmentId is provided via Reset call (if any), or until MFXVideoENCODE_Close is called. The buffer pointed to by SegmentId provided with mfxEncodeCtrl should be considered in use while the input surface is locked by the library. Every segment_id in the map should be in the range of 0 to NumSegments-1. If some segment_id is out of valid range, the segmentation map cannot be applied. If the mfxExtVP9Segmentation buffer is attached to the mfxEncodeCtrl structure in runtime, SegmentId can be zero. In this case, the segmentation map from static configuration will be used.
+API allows the encoding of VP9 bitstreams that contain several subset bitstreams that differ in frame rates, also called “temporal layers”.
+When decoding, each temporal layer can be extracted from the coded stream and decoded separately. The mfxExtVP9TemporalLayers structure configures the temporal layers for the VP9 encoder. It can be attached to the mfxVideoParam structure during initialization or the MFXVideoENCODE_Reset call. If the mfxExtVP9TemporalLayers buffer isn’t attached during initialization, temporal scalability is disabled. If the buffer isn’t attached for the Reset call, the encoder continues to use the temporal scalability configuration that was defined before the Reset call.
+In the API, temporal layers are ordered by their frame rates in ascending order. Temporal layer 0 (having the lowest frame rate) is called the base layer. Each subsequent temporal layer includes all previous layers.
+The temporal scalability feature requires a minimum number of allocated reference frames (controlled by the NumRefFrame parameter). If the NumRefFrame value set by the application isn’t enough to build the reference structure for the requested number of temporal layers, the library corrects the NumRefFrame value. The temporal layer structure is reset (re-started) after key-frames.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VP9_TEMPORAL_LAYERS.
+The array of temporal layers. Layer[0] specifies the base layer.
+The library reads layers from the array when they are defined (FrameRateScale > 0). All layers starting from first layer with FrameRateScale = 0 are ignored. The last layer that is not ignored is considered the “highest layer”.
+The frame rate of the highest layer is specified in the mfxVideoParam structure. Frame rates of lower layers are calculated using their FrameRateScale.
+TargetKbps of the highest layer should be equal to the TargetKbps value specified in the mfxVideoParam structure. If it is not true, TargetKbps of highest temporal layers has priority.
+If there are no defined layers in the Layer array, the temporal scalability feature is disabled. For example, to disable temporal scalability in runtime, the application should pass mfxExtVP9TemporalLayers buffer to Reset with all FrameRateScales set to 0.
+Specifies per-MB or per-CU mode and QP or DeltaQP value depending on the mode type.
+Public Members
+QP for MB or CU. Valid when Mode = MFX_MBQP_MODE_QP_VALUE.
+For AVC, the valid range is 1 to 51.
+For HEVC, the valid range is 1 to 51. The application’s provided QP values should be valid, otherwise invalid QP values may cause undefined behavior.
+MBQP map should be aligned for 16x16 block size. The align rule is: (width +15 /16) && (height +15 /16).
+For MPEG2, the valid range is 1 to 112. QP corresponds to quantizer_scale of the ISO*\/IEC* 13818-2 specification.
+Specifies temporal layer.
+Public Members
+The ratio between the frame rates of the current temporal layer and the base layer. The library treats a particular temporal layer as “defined” if it has FrameRateScale > 0. If the base layer is defined, it must have FrameRateScale = 1. FrameRateScale of each subsequent layer (if defined) must be a multiple of and greater than the FrameRateScale value of previous layer.
+Target bitrate for the current temporal layer. Ignored if RateControlMethod is CQP. If RateControlMethod is not CQP, the application must provide TargetKbps for every defined temporal layer. TargetKbps of each subsequent layer (if defined) must be greater than the TargetKbps value of the previous layer.
+The structure is used for universal temporal layer description.
+Public Members
+The ratio between the frame rates of the current temporal layer and the base layer. The library treats a particular temporal layer as “defined” if it has FrameRateScale > 0. If the base layer is defined, it must have FrameRateScale = 1. FrameRateScale of each subsequent layer (if defined) must be a multiple of and greater than the FrameRateScale value of previous layer.
+Initial size of the Video Buffering Verifier (VBV) buffer for the current temporal layer.
+Note
+In this context, KB is 1000 bytes and Kbps is 1000 bps.
+Represents the maximum possible size of any compressed frames for the current temporal layer.
+Target bitrate for the current temporal layer. If RateControlMethod is not CQP, the application can provide TargetKbps for every defined temporal layer. If TargetKbps per temporal layer is not set then encoder doesn’t apply any special bitrate limitations for the layer.
+The maximum bitrate at which the encoded data enters the Video Buffering Verifier (VBV) buffer for the current temporal layer.
+Quantization Parameter (QP) for I-frames for constant QP mode (CQP) for the current temporal layer. Zero QP is not valid and means that the default value is assigned by the library. Non-zero QPI might be clipped to supported QPI range.
+Note
+Default QPI value is implementation dependent and subject to change without additional notice in this document.
+Quantization Parameter (QP) for P-frames for constant QP mode (CQP) for the current temporal layer. Zero QP is not valid and means that the default value is assigned by the library. Non-zero QPP might be clipped to supported QPI range.
+Note
+Default QPP value is implementation dependent and subject to change without additional notice in this document.
+Quantization Parameter (QP) for B-frames for constant QP mode (CQP) for the current temporal layer. Zero QP is not valid and means that the default value is assigned by the library. Non-zero QPI might be clipped to supported QPB range.
+Note
+Default QPB value is implementation dependent and subject to change without additional notice in this document.
+The structure is used for universal temporal layers description.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_UNIVERSAL_TEMPORAL_LAYERS. The number of temporal layers.
+The priority ID of the base layer. The encoder increases the ID for each temporal layer and writes to the prefix NAL unit for AVC and HEVC.
+The array of temporal layers.
+The structure is used by AV1 encoder with more parameter control to encode frame.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AV1_BITSTREAM_PARAM.
+Tri-state option to control IVF headers insertion, default is ON. Writing IVF headers is enabled in the encoder when mfxExtAV1BitstreamParam is attached and its value is ON or zero. Writing IVF headers is disabled by default in the encoder when mfxExtAV1BitstreamParam is not attached.
+The structure is used by AV1 encoder with more parameter control to encode frame.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AV1_RESOLUTION_PARAM.
+Width of the coded frame in pixels, default value is from mfxFrameInfo.
+Height of the coded frame in pixels, default value is from mfxFrameInfo.
+The structure is used by AV1 encoder with more parameter control to encode frame.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AV1_TILE_PARAM.
+In the AV1 encoder it is possible to divide a frame into up to 8 segments and apply particular features (like delta for quantization index or for loop filter level) on a per-segment basis. “Uncompressed header” of every frame indicates if segmentation is enabled for the current frame, and (if segmentation enabled) contains full information about features applied to every segment. Every “Mode info block” of a coded frame has segment_id in the range of 0 to 7. To enable Segmentation, the mfxExtAV1Segmentation structure with correct settings should be passed to the encoder. It can be attached to the mfxVideoParam structure during initialization or the MFXVideoENCODE_Reset call (static configuration). If the mfxExtAV1Segmentation buffer isn’t attached during initialization, segmentation is disabled for static configuration. If the buffer isn’t attached for the Reset call, the encoder continues to use static configuration for segmentation which was the default before this Reset call. If the mfxExtAV1Segmentation buffer with NumSegments=0 is provided during initialization or Reset call, segmentation becomes disabled for static configuration. The buffer can be attached to the mfxEncodeCtrl structure during runtime (dynamic configuration). Dynamic configuration is applied to the current frame only. After encoding of the current frame, the encoder will switch to the next dynamic configuration or to static configuration if dynamic configuration is not provided for next frame). The SegmentIdBlockSize, NumSegmentIdAlloc, and SegmentId parameters represent a segmentation map. Here, the segmentation map is an array of segment_ids (one byte per segment_id) for blocks of size NxN in raster scan order. The size NxN is specified by the application and is constant for the whole frame. If mfxExtAV1Segmentation is attached during initialization and/or during runtime, all three parameters should be set to proper values that do not conflict with each other and with NumSegments. If any of the parameters are not set or any conflict or error in these parameters is detected by the library, the segmentation map will be discarded.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AV1_SEGMENTATION.
+Number of segments for frame. Value 0 means that segmentation is disabled. Sending 0 for a particular frame will disable segmentation for this frame only. Sending 0 to the Reset API function will disable segmentation permanently. Segmentation can be enabled again by a subsequent Reset call.
+Array of mfxAV1SegmentParam structures containing features and parameters for every segment. Entries with indexes bigger than NumSegments-1 are ignored. See the mfxAV1SegmentParam structure for definitions of segment features and their parameters.
+Size of block (NxN) for segmentation map. See AV1 SegmentIdBlockSize enumerator for values for this option. An encoded block that is bigger than AV1 SegmentIdBlockSize uses segment_id taken from it’s top-left sub-block from the segmentation map. The application can check if a particular block size is supported by calling Query.
+Size of buffer allocated for segmentation map (in bytes). Application must assure that NumSegmentIdAlloc is large enough to cover frame resolution with blocks of size SegmentIdBlockSize. Otherwise the segmentation map will be discarded.
+Pointer to the segmentation map buffer which holds the array of segment_ids in raster scan order. The application is responsible for allocation and release of this memory. The buffer pointed to by SegmentId, provided during initialization or Reset call should be considered in use until another SegmentId is provided via Reset call (if any), or until MFXVideoENCODE_Close is called. The buffer pointed to by SegmentId provided with mfxEncodeCtrl should be considered in use while the input surface is locked by the library. Every segment_id in the map should be in the range of 0 to NumSegments-1. If some segment_id is out of valid range, the segmentation map cannot be applied. If the mfxExtAV1Segmentation buffer is attached to the mfxEncodeCtrl structure in runtime, SegmentId can be zero. In this case, the segmentation map from static configuration will be used.
+Public Members
+ + + + +indicates the PU partition mode for the current CU. 0: 2Nx2N 1: 2NxN (inter) 2: Nx2N (inter) 3: NXN (intra only, CU Size=8x8 only. Luma Intra Mode indicates the intra prediction mode for 4x4_0. The additional prediction modes are overloaded on 4x4_1, 4x4_2, 4x4_3 below) 4: 2NxnT (inter only) 5: 2NxnB (inter only) 6: nLx2N (inter only) 7: nRx2N (inter only).
+indicates the prediction direction for PU0 of the current CU. 0: L0 1: L1 2: Bi 3: reserved
+indicates the prediction direction for PU1 of the current CU. 0: L0 1: L1 2: Bi 3: reserved
+Final explicit Luma Intra Mode 4x4_0 for NxN. Valid values 0..34 Note: CU_part_mode==NxN.
+indicates the final explicit Luma Intra Mode for the CU. 0: DM (use Luma mode, from block 0 if NxN) 1: reserved 2: Planar 3: Vertical 4: Horizontal 5: DC
+Final explicit Luma Intra Mode 4x4_1. Valid values 0..34 Note: CU_part_mode==NxN.
+Final explicit Luma Intra Mode 4x4_2. Valid values 0..34 Note: CU_part_mode==NxN.
+Final explicit Luma Intra Mode 4x4_3. Valid values 0..34 Note: CU_part_mode==NxN.
+distortion measure, approximation to SAD. Will deviate significantly (pre, post reconstruction) and due to variation in algorithm.
+These parameters indicate motion vectors that are associated with the PU0/PU1 winners range [-2048.00..2047.75]. L0/PU0 - MV[0][0] L0/PU1 - MV[0][1] L1/PU0 - MV[1][0] L1/PU1 - MV[1][1]
+This parameter indicates the reference index associated with the MV X/Y that is populated in the L0_MV0.X and L0_MV0.Y fields.
+This parameter indicates the reference index associated with the MV X/Y that is populated in the L0_MV1.X and L0_MV1.Y fields.
+Public Members
+H.265 CTU header.
+The structure describes H.264 stats per MB.
+Public Members
+Together with IntraMbFlag
this parameter specifies macroblock type according to the ISO*\/IEC* 14496-10 with the following difference - it stores either intra or inter values according to IntraMbFlag
, but not intra after inter. Values for P-slices are mapped to B-slice values. For example P_16x8 is coded with B_FWD_16x8 value.
This field specifies inter macroblock mode and is ignored for intra MB. It is derived from MbType
and has next values:
0 - 16x16 mode
1 - 16x8 mode
2 - 8x16 mode
3 - 8x8 mode
This field specifies intra macroblock mode and is ignored for inter MB. It is derived from MbType
and has next values:
0 - 16x16 mode
1 - 8x8 mode
2 - 4x4 mode
3 - PCM
This flag specifies intra/inter MB type and has next values: 0 - Inter prediction MB type 1 - Intra prediction MB type
+This field specifies subblock shapes for the current MB. Each block is described by 2 bits starting from lower bits for block 0.
+0 - 8x8
1 - 8x4
2 - 4x8
3 - 4x4
This field specifies prediction modes for the current MB partition blocks. Each block is described by 2 bits starting from lower bits for block 0.
0 - Pred_L0
1 - Pred_L1
2 - BiPred
3 - reserved
16x16 Pred_L1 - 0x01 (only 2 lower bits are used)
16x8 Pred_L1 / BiPred - 0x09 (1001b)
8x16 BiPred / BiPred - 0x0a (1010b)
This value specifies chroma intra prediction mode.
0 - DC
1 - Horizontal
2 - Vertical
3 - Plane
Distortion measure, approximation to SAD. Deviate significantly (pre, post reconstruction) and due to variation in algorithm.
+These values specify luma intra prediction modes for current MB. Each element of the array corresponds to 8x8 block and each holds prediction modes for four 4x4 subblocks. Four bits per mode, lowest bits for left top subblock. All 16 prediction modes are always specified. For 8x8 case, block prediction mode is populated to all subblocks of the 8x8 block. For 16x16 case - to all subblocks of the MB.
+Prediction directions for 4x4 and 8x8 blocks:
0 - Vertical
1 - Horizontal
2 - DC
3 - Diagonal Down Left
4 - Diagonal Down Right
5 - Vertical Right
6 - Horizontal Down
7 - Vertical Left
8 - Horizontal Up
0 - Vertical
1 - Horizontal
2 - DC
3 - Plane
The structure describes H.264 and H.265 stats per MB or CTUs.
+ +The structure describes H.264/H.265 frame/slice/tile level statistics.
+Public Members
+ + + + + + +distortion measure, approximation to SAD. Will deviate significantly (pre, post reconstruction) and due to variation in algorithm.
+For H.264 it is always 16x16 corresponding to MB size. In H.265 it’s normalized to 4x4, so for each CU we calculate number of 4x4 which belongs to the block.
+Number of intra blocks in the frame. The size of block is defined by BlockSize. For H.265 it can be more than number of intra CU.
+Alias for the structure to describe H.264 and H.265 frame level stats.
+The structure describes H.264 and H.265 stats per Slice or Tile.
+Public Members
+ + +Array of CTU statistics.
+Alias for the structure to describe H.264 and H.265 tile level stats.
+The structure represents reference counted container for output after encoding operation which includes statistics and synchronization primitive for compressed bitstream. The memory is allocated and released by the library.
+Public Members
+The version of the structure.
+Guarantees readiness of the statistics after a function completes. Instead of MFXVideoCORE_SyncOperation which leads to the synchronization of all output objects, users may directly call the mfxEncodeStatsContainer::SynchronizeStatistics function to get output statistics.
+< Reference counting interface.
+[in] Valid interface.
+[out] Wait time in milliseconds.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If interface is NULL.
+MFX_ERR_INVALID_HANDLE If any of container is not valid object .
+MFX_WRN_IN_EXECUTION If the given timeout is expired and the container is not ready.
+MFX_ERR_ABORTED If the specified asynchronous function aborted due to data dependency on a previous asynchronous function that did not complete.
+MFX_ERR_UNKNOWN Any internal error.
+ +Guarantees readiness of associated compressed bitstream after a function completes. Instead of MFXVideoCORE_SyncOperation which leads to the synchronization of all output objects, users may directly call the mfxEncodeStatsContainer::SynchronizeStatistics function to get output bitstream.
+[in] Valid interface.
+[out] Wait time in milliseconds.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If interface is NULL.
+MFX_ERR_INVALID_HANDLE If any of container is not valid object .
+MFX_WRN_IN_EXECUTION If the given timeout is expired and the container is not ready.
+MFX_ERR_ABORTED If the specified asynchronous function aborted due to data dependency on a previous asynchronous function that did not complete.
+MFX_ERR_UNKNOWN Any internal error.
+ +Memory layout for statistics.
+Block level statistics.
+Slice level statistics.
+Tile level statistics.
+Frame level statistics.
+The extension buffer which should be attached by application for mfxBitstream buffer before encode operation. As result the encoder will allocate memory for statistics and fill appropriate structures.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODESTATS_BLK.
+What statistics is required: block/slice/tile/frame level or any combinations. In case of slice or tile output statistics for one slice or tile will be available only.
+What encoding mode should be used to gather statistics.
+encode output, filled by the implementation.
+Used by the encoder to set quality information report mode for the encoded picture.
+Note
+Not all implementations of the encoder support this extended buffer. The application must use query mode 1 to determine if the functionality is supported. To do this, the application must attach this extended buffer to the mfxVideoParam structure and call the MFXVideoENCODE_Query function. If the function returns MFX_ERR_NONE then the functionality is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODED_QUALITY_INFO_MODE.
+See mfxQualityInfoMode enumeration for supported modes.
+Used by the encoder to report quality information about the encoded picture. The application can attach this buffer to the mfxBitstream structure before calling MFXVideoENCODE_EncodeFrameAsync function.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODED_QUALITY_INFO_OUTPUT.
+Used by the encoder to set the screen content tools.
+Note
+Not all implementations of the encoder support this extended buffer. The application must use query mode 1 to determine if the functionality is supported. To do this, the application must attach this extended buffer to the mfxVideoParam structure and call the MFXVideoENCODE_Query function. If the function returns MFX_ERR_NONE then the functionality is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS.
+Set this flag to MFX_CODINGOPTION_ON to enable palette prediction for encoder. Set this flag to MFX_CODINGOPTION_OFF to disable it. If this flag is set to any other value, the default value will be used which can be obtained from the MFXVideoENCODE_GetVideoParam function after encoding initialization. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Set this flag to MFX_CODINGOPTION_ON to enable intra block copy prediction for encoder. Set this flag to MFX_CODINGOPTION_OFF to disable it. If this flag is set to any other value, the default value will be used which can be obtained from the MFXVideoENCODE_GetVideoParam function after encoding initialization. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Configure the alpha channel encoding.
+Public Members
+Extension buffer header. BufferId must be equal to MFX_EXTBUFF_ALPHA_CHANNEL_ENC_CTRL.
+Set this flag to MFX_CODINGOPTION_ON to enable alpha channel encoding. See the CodingOptionValue enumerator for values of this option. This parameter is valid only during initialization.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Specifies alpha is straight or pre-multiplied. See the AlphaChannelMode enumerator for details. Encoder just record this in the SEI for post-decoding rendering.
+Indicates the percentage of the auxiliary alpha layer in the total bitrate. Valid range for this parameter is [1, 99]. We set 25 as the default value, i.e. Alpha(25) : Total(100), then 25% of the bits will be spent on alpha layer encoding whereas the other 75% will be spent on base(YUV) layer. Affects the following variables: InitialDelayInKB, BufferSizeInKB, TargetKbps, MaxKbps.
+Defines the uncompressed frames surface information and data buffers for alpha channel encoding.
+Public Members
+Extension buffer header. BufferId must be equal to MFX_EXTBUFF_ALPHA_CHANNEL_SURFACE.
+Alpha channel surface.
+Structures used for implementation management.
+Contains a description of the graphics adapter for the Legacy mode.
+Public Members
+Platform type description. See mfxPlatform for details.
+Contains description of all graphics adapters available on the current system.
+Public Members
+Pointer to array of mfxAdapterInfo structs allocated by user.
+Specifies options for threads created by this session. Attached to the mfxInitParam structure during legacy Intel(r) Media SDK session initialization or to mfxInitializationParam by the dispatcher in MFXCreateSession function.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_THREADS_PARAM.
+Specifies advanced initialization parameters. A zero value in any of the fields indicates that the corresponding field is not explicitly specified.
+Public Members
+Enumerator that indicates the desired legacy Intel(r) Media SDK implementation.
+Structure which specifies minimum library version or zero, if not specified.
+Desired threading mode. Value 0 means internal threading, 1 - external.
+Points to an array of pointers to the extra configuration structures; see the ExtendedBufferID enumerator for a list of extended configurations.
+Contains information about hardware platform for the Legacy mode.
+ +The mfxVersion union describes the version of the implementation.
+Major and Minor fields
+Anonymous structure with Major and Minor fields.
+ + + + +Public Members
+The mfxExtDeviceAffinityMask structure is used by the application to specify affinity mask for the device with given device ID. See mfxDeviceDescription for the device ID definition and sub device indexes. If the implementation manages CPU threads for some purpose, the user can set the CPU thread affinity mask by using this structure with DeviceID set to “CPU”.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_DEVICE_AFFINITY_MASK.
+Null terminated string with device ID. In case of CPU affinity mask it must be equal to “CPU”.
+Mask array. Every bit represents sub-device (or thread for CPU). “1” means execution is allowed. “0” means that execution is prohibited on this sub-device (or thread). Length of the array is equal to the: “NumSubDevices / 8” and rounded to the closest (from the right) integer. Bits order within each entry of the mask array is LSB: bit 0 holds data for sub device with index 0 and bit 8 for sub device with index 8. Index of sub device is defined by the mfxDeviceDescription structure.
+Specifies initialization parameters for API version starting from 2.0.
+Public Members
+Hardware acceleration stack to use. OS dependent parameter. Use VA for Linux*, DX* for Windows* or HDDL.
+Enables or disables device’s accelerated copying between device and host. See the GPUCopy enumerator for a list of valid values. This parameter is the equivalent of mfxInitParam::GPUCopy.
+Points to an array of pointers to the extra configuration structures; see the ExtendedBufferID enumerator for a list of extended configurations.
+Vendor specific number with given implementation ID. Represents the same field from mfxImplDescription.
+Structures used for memory.
+Defines the buffer that holds compressed video data.
+Public Members
+Reserved and must be zero.
+Array of extended buffers for additional bitstream configuration. See the ExtendedBufferID enumerator for a complete list of extended buffers.
+Specifies the codec format identifier in the FourCC code. See the CodecFormatFourCC enumerator for details. This optional parameter is required for the simplified decode initialization.
+Decode time stamp of the compressed bitstream in units of 90KHz. A value of MFX_TIMESTAMP_UNKNOWN indicates that there is no time stamp.
+This value is calculated by the encoder from the presentation time stamp provided by the application in the mfxFrameSurface1 structure and from the frame rate provided by the application during the encoder initialization.
+Time stamp of the compressed bitstream in units of 90KHz. A value of MFX_TIMESTAMP_UNKNOWN indicates that there is no time stamp.
+Describes the API callback functions Alloc, Lock, Unlock, GetHDL, and Free that the implementation might use for allocating internal frames. Applications that operate on OS-specific video surfaces must implement these API callback functions.
+Using the default allocator implies that frame data passes in or out of functions through pointers, as opposed to using memory IDs.
+Behavior is undefined when using an incompletely defined external allocator.
See the Memory Allocation and External Allocators section for additional information.
+ +Public Members
+ + +Allocates surface frames. For decoders, MFXVideoDECODE_Init calls Alloc only once. That call includes all frame allocation requests. For encoders, MFXVideoENCODE_Init calls Alloc twice: once for the input surfaces and again for the internal reconstructed surfaces.
+If two library components must share DirectX* surfaces, this function should pass the pre-allocated surface chain to the library instead of allocating new DirectX surfaces.
See the Surface Pool Allocation section for additional information.
+ +[in] Pointer to the allocator object.
+[in] Pointer to the mfxFrameAllocRequest structure that specifies the type and number of required frames.
+[out] Pointer to the mfxFrameAllocResponse structure that retrieves frames actually allocated.
+MFX_ERR_NONE The function successfully allocated the memory block.
+MFX_ERR_MEMORY_ALLOC The function failed to allocate the video frames.
+ + MFX_ERR_UNSUPPORTED The function does not support allocating the specified type of memory. +Locks a frame and returns its pointer.
+[in] Pointer to the allocator object.
+[in] Memory block ID.
+[out] Pointer to the returned frame structure.
+MFX_ERR_NONE The function successfully locked the memory block.
+MFX_ERR_LOCK_MEMORY This function failed to lock the frame.
+ +Unlocks a frame and invalidates the specified frame structure.
+[in] Pointer to the allocator object.
+[in] Memory block ID.
+[out] Pointer to the frame structure. This pointer can be NULL.
+MFX_ERR_NONE The function successfully locked the memory block.
+Returns the OS-specific handle associated with a video frame. If the handle is a COM interface, the reference counter must increase. The library will release the interface afterward.
+[in] Pointer to the allocator object.
+[in] Memory block ID.
+[out] Pointer to the returned OS-specific handle.
+MFX_ERR_NONE The function successfully returned the OS-specific handle.
+MFX_ERR_UNSUPPORTED The function does not support obtaining OS-specific handle..
+ +De-allocates all allocated frames.
+[in] Pointer to the allocator object.
+[in] Pointer to the mfxFrameAllocResponse structure returned by the Alloc function.
+MFX_ERR_NONE The function successfully de-allocated the memory block.
+Describes multiple frame allocations when initializing encoders, decoders, and video preprocessors. A range specifies the number of video frames. Applications are free to allocate additional frames. In all cases, the minimum number of frames must be at least NumFrameMin or the called API function will return an error.
+Public Members
+ + +Describes the properties of allocated frames.
+Describes the response to multiple frame allocations. The calling API function returns the number of video frames actually allocated and pointers to their memory IDs.
+ +Specifies “pixel” in Y410 color format.
+ +Specifies “pixel” in Y416 color format.
+ +Specifies “pixel” in A2RGB10 color format
+ +Describes frame buffer pointers.
+Extension Buffers
+ + +General members
+ + +Allocated memory type. See the ExtMemFrameType enumerator for details. Used for better integration of 3rd party plugins into the pipeline.
+Time stamp of the video frame in units of 90KHz. Divide TimeStamp by 90,000 (90 KHz) to obtain the time in seconds. A value of MFX_TIMESTAMP_UNKNOWN indicates that there is no time stamp.
+Color Planes
+Data pointers to corresponding color channels (planes). The frame buffer pointers must be 16-byte aligned. The application has to specify pointers to all color channels even for packed formats. For example, for YUY2 format the application must specify Y, U, and V pointers. For RGB32 format, the application must specify R, G, B, and A pointers.
+ + + + +Additional Flags
+ + + + +Public Members
+Points to an array of pointers to the extra configuration structures. See the ExtendedBufferID enumerator for a list of extended configurations.
+A2RGB10 channel for A2RGB10 format (merged ARGB).
+ABGRFP16 channel for half float ARGB format (use this merged one due to no separate FP16 Alpha Channel).
+Specifies properties of video frames. See also “Configuration Parameter Constraints” chapter.
+FrameRate
+Specify the frame rate with the following formula: FrameRateExtN / FrameRateExtD.
+For encoding, frame rate must be specified. For decoding, frame rate may be unspecified (FrameRateExtN and FrameRateExtD are all zeros.) In this case, the frame rate is defaulted to 0 frames per second, and timestamp will be calculated by 30fps in SDK.
+In decoding process:
+If there is frame rate information in bitstream, MFXVideoDECODE_DecodeHeader will carry actual frame rate in FrameRateExtN and FrameRateExtD parameters. MFXVideoDECODE_Init, MFXVideoDECODE_Query, MFXVideoDECODE_DecodeFrameAsync and MFXVideoDECODE_GetVideoParam will also carry these values for frame rate. Timestamp will be calculated by the actual frame rate.
+If there is no frame rate information in bitstream, MFXVideoDECODE_DecodeHeader will assign 0 for frame rate in FrameRateExtN and FrameRateExtD parameters. MFXVideoDECODE_Init, MFXVideoDECODE_Query, MFXVideoDECODE_DecodeFrameAsync and MFXVideoDECODE_GetVideoParam will also assign 0 for frame rate. Timestamp will be calculated by 30fps.
+If these two parameters are modified through MFXVideoDECODE_Init, then the modified values for frame rate will be used in MFXVideoDECODE_Query, MFXVideoDECODE_DecodeFrameAsync and MFXVideoDECODE_GetVideoParam. Timestamps will be calculated using the modified values.
+ + + + +AspectRatio
+AspectRatioW and AspectRatioH are used to specify the sample aspect ratio. If sample aspect ratio is explicitly defined by the standards (see Table 6-3 in the MPEG-2 specification or Table E-1 in the H.264 specification), AspectRatioW and AspectRatioH should be the defined values. Otherwise, the sample aspect ratio can be derived as follows:
+AspectRatioW=display_aspect_ratio_width*display_height
AspectRatioH=display_aspect_ratio_height*display_width
If both parameters are zero, the encoder uses the default value of sample aspect ratio.
+ + + + +ROI
+The region of interest of the frame. Specify the display width and height in mfxVideoParam.
+X coordinate. In case of fused operation of decode plus VPP it can be set to zero to signalize that cropping operation is not requested.
+Y coordinate. In case of fused operation of decode plus VPP it can be set to zero to signalize that cropping operation is not requested.
+Public Members
+ + +The unique ID of each VPP channel set by application. It’s required that during Init/Reset application fills ChannelId for each mfxVideoChannelParam provided by the application and the SDK sets it back to the correspondent mfxSurfaceArray::mfxFrameSurface1 to distinguish different channels. It’s expected that surfaces for some channels might be returned with some delay so application has to use mfxFrameInfo::ChannelId to distinguish what returned surface belongs to what VPP channel. Decoder’s initialization parameters are always sent through channel with mfxFrameInfo::ChannelId equals to zero. It’s allowed to skip setting of decoder’s parameters for simplified decoding procedure
+Number of bits used to represent luma samples.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Number of bits used to represent chroma samples.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+When the value is not zero, indicates that values of luma and chroma samples are shifted. Use BitDepthLuma and BitDepthChroma to calculate shift size. Use zero value to indicate absence of shift. See example data alignment below.
+Note
+Not all codecs and implementations support this value. Use the Query API function to check if this feature is supported.
+Describes the view and layer of a frame picture.
+Width of the video frame in pixels. Must be a multiple of 16. In case of fused operation of decode plus VPP it can be set to zero to signalize that scaling operation is not requested.
+Height of the video frame in pixels. Must be a multiple of 16 for progressive frame sequence and a multiple of 32 otherwise. In case of fused operation of decode plus VPP it can be set to zero to signalize that scaling operation is not requested.
+Note
+Example data alignment for Shift = 0:
+Example data alignment for Shift != 0:
+Defines the uncompressed frames surface information and data buffers. The frame surface is in the frame or complementary field pairs of pixels up to four color-channels, in two parts: mfxFrameInfo and mfxFrameData.
+Public Members
+Specifies interface to work with surface.
+Specifies version of mfxFrameSurface1 structure.
+Specifies surface properties.
+Describes the actual frame buffer.
+Specifies frame surface interface.
+Public Members
+The context of the memory interface. User should not touch (change, set, null) this pointer.
+The version of the structure.
+Increments the internal reference counter of the surface. The surface is not destroyed until the surface is released using the mfxFrameSurfaceInterface::Release function. mfxFrameSurfaceInterface::AddRef should be used each time a new link to the surface is created (for example, copy structure) for proper surface management.
+[in] Valid surface.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxFrameSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Decrements the internal reference counter of the surface. mfxFrameSurfaceInterface::Release should be called after using the mfxFrameSurfaceInterface::AddRef function to add a surface or when allocation logic requires it. For example, call mfxFrameSurfaceInterface::Release to release a surface obtained with the GetSurfaceForXXX function.
+[in] Valid surface.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxFrameSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNDEFINED_BEHAVIOR If Reference Counter of surface is zero before call.
+ + MFX_ERR_UNKNOWN Any internal error. +Returns current reference counter of mfxFrameSurface1 structure.
+[in] Valid surface.
+[out] Sets counter to the current reference counter value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface or counter is NULL.
+MFX_ERR_INVALID_HANDLE If mfxFrameSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Sets pointers of surface->Info.Data to actual pixel data, providing read-write access.
+In case of video memory, the surface with data in video memory becomes mapped to system memory. An application can map a surface for read access with any value of mfxFrameSurface1::Data::Locked, but can map a surface for write access only when mfxFrameSurface1::Data::Locked equals to 0.
+Note: A surface allows shared read access, but exclusive write access. Consider the following cases:
Map with Write or Read|Write flags. A request during active another read or write access returns MFX_ERR_LOCK_MEMORY error immediately, without waiting. MFX_MAP_NOWAIT does not impact behavior. This type of request does not lead to any implicit synchronizations.
Map with Read flag. A request during active write access will wait for resource to become free, or exits immediately with error if MFX_MAP_NOWAIT flag was set. This request may lead to the implicit synchronization (with same logic as Synchronize call) waiting for surface to become ready to use (all dependencies should be resolved and upstream components finished writing to this surface).
If MFX_MAP_NOWAIT was set and the surface is not ready yet (for example the surface has unresolved data dependencies or active processing), the read access request exits immediately with error.
+Read-write access with MFX_MAP_READ_WRITE provides exclusive simultaneous reading and writing access.
+Note
+Bitwise copying of mfxFrameSurface1 object between map / unmap calls may result in having dangling data pointers in copies.
+[in] Valid surface.
+[out] Specify mapping mode.
+[out] Pointers set to actual pixel data.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxFrameSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNSUPPORTED If flags are invalid.
+MFX_ERR_LOCK_MEMORY If user wants to map the surface for write and surface->Data.Locked does not equal to 0.
+MFX_ERR_UNKNOWN Any internal error.
+ +Invalidates pointers of surface->Info.Data and sets them to NULL. In case of video memory, the underlying texture becomes unmapped after last reader or writer unmap.
+[in] Valid surface.
+[out] Pointers set to NULL.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxFrameSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNSUPPORTED If surface is already unmapped.
+ + MFX_ERR_UNKNOWN Any internal error. +Returns a native resource’s handle and type. The handle is returned as-is, meaning that the reference counter of base resources is not incremented. The native resource is not detached from surface and the library still owns the resource. User must not destroy the native resource or assume that the resource will be alive after mfxFrameSurfaceInterface::Release.
+[in] Valid surface.
+[out] Pointer is set to the native handle of the resource.
+[out] Type of native resource. See mfxResourceType enumeration).
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If any of surface, resource or resource_type is NULL.
+MFX_ERR_INVALID_HANDLE If any of surface, resource or resource_type is not valid object (no native resource was allocated).
+MFX_ERR_UNSUPPORTED If surface is in system memory.
+ + MFX_ERR_UNKNOWN Any internal error. +Returns a device abstraction that was used to create that resource. The handle is returned as-is, meaning that the reference counter for the device abstraction is not incremented. The native resource is not detached from the surface and the library still has a reference to the resource. User must not destroy the device or assume that the device will be alive after mfxFrameSurfaceInterface::Release.
+[in] Valid surface.
+[out] Pointer is set to the device which created the resource
+[out] Type of device (see mfxHandleType enumeration).
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If any of surface, device_handle or device_type is NULL.
+MFX_ERR_INVALID_HANDLE If any of surface, resource or resource_type is not valid object (no native resource was allocated).
+MFX_ERR_UNSUPPORTED If surface is in system memory.
+ + MFX_ERR_UNKNOWN Any internal error. +Guarantees readiness of both the data (pixels) and any frame’s meta information (for example corruption flags) after a function completes.
+Instead of MFXVideoCORE_SyncOperation, users may directly call the mfxFrameSurfaceInterface::Synchronize function after the corresponding Decode or VPP function calls (MFXVideoDECODE_DecodeFrameAsync or MFXVideoVPP_RunFrameVPPAsync). The prerequisites to call the functions are:
+The main processing functions return MFX_ERR_NONE.
A valid mfxFrameSurface1 object.
[in] Valid surface.
+[out] Wait time in milliseconds.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If any of surface is not valid object .
+MFX_WRN_IN_EXECUTION If the given timeout is expired and the surface is not ready.
+MFX_ERR_ABORTED If the specified asynchronous function aborted due to data dependency on a previous asynchronous function that did not complete.
+MFX_ERR_UNKNOWN Any internal error.
+ +The library calls the function after complete of associated video operation notifying the application that frame surface is ready.
++It is expected that the function is low-intrusive designed otherwise it may impact performance.
This is callback function and intended to be called by the library only.
+Note
+The library calls this callback only when this surface is used as the output surface.
+[in] The status of completed operation.
+Returns an interface defined by the GUID. If the returned interface is a reference counted object the caller should release the obtained interface to avoid memory leaks.
+[in] Valid surface.
+[in] GUID of the requested interface.
+[out] Interface.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If interface or surface is NULL.
+MFX_ERR_UNSUPPORTED If requested interface is not supported.
+MFX_ERR_NOT_IMPLEMENTED If requested interface is not implemented.
+MFX_ERR_NOT_INITIALIZED If requested interface is not available (not created or already deleted).
+MFX_ERR_UNKNOWN Any internal error.
+ +If successful returns an exported surface, which is a refcounted object allocated by runtime. It could be exported with or without copy, depending on export flags and the possibility of such export. Exported surface is valid throughout the session, as long as the original mfxFrameSurface1 object is not closed and the refcount of exported surface is not zero.
+[in] Valid surface.
+[in] Description of export: caller should fill in SurfaceType (type to export to) and SurfaceFlags (allowed export modes).
+[out] Exported surface, allocated by runtime, user needs to decrement refcount after usage for object release. After successful export, the value of mfxSurfaceHeader::SurfaceFlags will contain the actual export mode.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If export surface or surface is NULL.
+MFX_ERR_UNSUPPORTED If requested export is not supported.
+MFX_ERR_NOT_IMPLEMENTED If requested export is not implemented.
+ + MFX_ERR_UNKNOWN Any internal error. +Specifies the surface pool interface.
+Public Members
+The context of the surface pool interface. User should not touch (change, set, null) this pointer.
+Increments the internal reference counter of the mfxSurfacePoolInterface. The mfxSurfacePoolInterface is not destroyed until the mfxSurfacePoolInterface is destroyed with mfxSurfacePoolInterface::Release function. mfxSurfacePoolInterface::AddRef should be used each time a new link to the mfxSurfacePoolInterface is created for proper management.
+[in] Valid pool.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If pool is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Decrements the internal reference counter of the mfxSurfacePoolInterface. mfxSurfacePoolInterface::Release should be called after using the mfxSurfacePoolInterface::AddRef function to add a mfxSurfacePoolInterface or when allocation logic requires it. For example, call mfxSurfacePoolInterface::Release to release a mfxSurfacePoolInterface obtained with the mfxFrameSurfaceInterface::QueryInterface function.
+[in] Valid pool.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If pool is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_ERR_UNDEFINED_BEHAVIOR If Reference Counter of
+mfxSurfacePoolInterfaceis zero before call.
+MFX_ERR_UNKNOWN Any internal error.
+ +Returns current reference counter of mfxSurfacePoolInterface structure.
+[in] Valid pool.
+[out] Sets counter to the current reference counter value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If pool or counter is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +The function should be called by oneAPI Video Processing Library (oneVPL) components or application to specify how many surfaces it will use concurrently. Internally, oneVPL allocates surfaces in the shared pool according to the component’s policy set by mfxPoolAllocationPolicy. The exact moment of surfaces allocation is defined by the component and generally independent from that call.
+[in] Valid pool.
+[in] The number of surfaces required by the component.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If pool is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM If pool has MFX_ALLOCATION_UNLIMITED or MFX_ALLOCATION_LIMITED policy.
+ + MFX_ERR_UNKNOWN Any internal error. +The function should be called by oneVPL components when component is closed or reset and doesn’t need to use pool more. It helps to manage memory accordingly and release redundant memory. Important to specify the same number of surfaces which is requested during SetNumSurfaces call, otherwise it may lead to the pipeline stalls.
+[in] Valid pool.
+[in] The number of surfaces used by the component.
+MFX_ERR_NONE If no error.
+MFX_WRN_OUT_OF_RANGE If num_surfaces doesn’t equal to num_surfaces requested during SetNumSurfaces call.
+MFX_ERR_NULL_PTR If pool is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_WRN_INCOMPATIBLE_VIDEO_PARAM If pool has MFX_ALLOCATION_UNLIMITED or MFX_ALLOCATION_LIMITED policy.
+MFX_ERR_UNKNOWN Any internal error.
+ +Returns current allocation policy.
+[in] Valid pool.
+[out] Sets policy to the current allocation policy value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If pool or policy is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Returns maximum pool size. In case of mfxPoolAllocationPolicy::MFX_ALLOCATION_UNLIMITED policy 0xFFFFFFFF will be returned.
+[in] Valid pool.
+[out] Sets size to the maximum pool size value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If pool or size is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Returns current pool size.
+[in] Valid pool.
+[out] Sets size to the current pool size value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If pool or size is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfacePoolInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Public Members
+The context of the memory interface. User should not touch (change, set, null) this pointer.
+The version of the structure.
+Imports an application-provided surface into mfxFrameSurface1 which may be used as input for encoding or video processing.
+This function is available since API version 2.10.
+[in] Valid memory interface.
+[in] Surface component type. Required for allocating new surfaces from the appropriate pool.
+[inout] Pointer to the mfxSurfaceXXX object describing the surface to be imported. All fields in mfxSurfaceHeader must be set by the application. mfxSurfaceHeader::SurfaceType is read by oneVPL runtime to determine which particular mfxSurfaceXXX structure is supplied. For example, if mfxSurfaceXXX::SurfaceType == MFX_SURFACE_TYPE_D3D11_TEX2D, then the handle will be interpreted as an object of type mfxSurfaceD3D11Tex2D. The application should set or clear other fields as specified in the corresponding structure description. After successful import, the value of mfxSurfaceHeader::SurfaceFlags will be replaced with the actual import type. It can be used to determine which import type (with or without copy) took place in the case of initial default setting, or if multiple import flags were OR’ed. All external sync operations on the ext_surface must be completed before calling this function.
+[out] Pointer to a valid mfxFrameSurface1 object containing the imported frame. imported_surface may be passed as an input to Encode or VPP processing operations.
+MFX_ERR_NONE The function completed successfully.
+MFX_ERR_NULL_PTR If ext_surface or imported_surface are NULL.
+MFX_ERR_INVALID_HANDLE If the corresponding session was not initialized.
+MFX_ERR_UNSUPPORTED If surf_component is not one of [MFX_SURFACE_COMPONENT_ENCODE, MFX_SURFACE_COMPONENT_VPP_INPUT], or if
+mfxSurfaceHeader::SurfaceType is not supported by oneVPL runtime for this operation. +This structure describes the supported surface types and modes.
+Public Members
+Version of the structure.
+Public Members
+Set to the MFX_SURFACE_TYPE enum corresponding to the specific structure.
+Set to the MFX_SURFACE_FLAG enum (or combination) corresponding to the allowed import / export mode(s). Multiple flags may be combined with OR. Upon a successful Import or Export operation, this field will indicate the actual mode used.
+Points to an array of pointers to the extra configuration structures; see the ExtendedBufferID enumerator for a list of extended configurations.
+Contains mfxSurfaceHeader and the callback functions AddRef, Release and GetRefCounter that the application may use to manage access to exported surfaces. These interfaces are only valid for surfaces obtained by mfxFrameSurfaceInterface::Export. They are not used for surface descriptions passed to function mfxMemoryInterface::ImportFrameSurface.
+Public Members
+Exported surface header. Contains description of current surface.
+The version of the structure.
+The context of the exported surface interface. User should not touch (change, set, null) this pointer.
+Increments the internal reference counter of the surface. The surface is not destroyed until the surface is released using the mfxSurfaceInterface::Release function. mfxSurfaceInterface::AddRef should be used each time a new link to the surface is created (for example, copy structure) for proper surface management.
+[in] Valid surface.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +Decrements the internal reference counter of the surface. mfxSurfaceInterface::Release should be called after using the mfxSurfaceInterface::AddRef function to add a surface or when allocation logic requires it. For example, call mfxSurfaceInterface::Release to release a surface obtained with the mfxFrameSurfaceInterface::Export function.
+[in] Valid surface.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNDEFINED_BEHAVIOR If Reference Counter of surface is zero before call.
+ + MFX_ERR_UNKNOWN Any internal error. +Returns current reference counter of exported surface.
+[in] Valid surface.
+[out] Sets counter to the current reference counter value.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface or counter is NULL.
+MFX_ERR_INVALID_HANDLE If mfxSurfaceInterface->Context is invalid (for example NULL).
+MFX_ERR_UNKNOWN Any internal error.
+ +This function is only valuable for surfaces which were exported in sharing mode (without a copy). Guarantees readiness of both the data (pixels) and any original mfxFrameSurface1 frame’s meta information (for example corruption flags) after a function completes.
+Instead of MFXVideoCORE_SyncOperation, users may directly call the mfxSurfaceInterface::Synchronize function after the corresponding Decode or VPP function calls (MFXVideoDECODE_DecodeFrameAsync or MFXVideoVPP_RunFrameVPPAsync). The prerequisites to call the functions are:
+The main processing functions return MFX_ERR_NONE.
A valid surface object.
[in] Valid surface.
+[out] Wait time in milliseconds.
+MFX_ERR_NONE If no error.
+MFX_ERR_NULL_PTR If surface is NULL.
+MFX_ERR_INVALID_HANDLE If any of surface is not valid object .
+MFX_WRN_IN_EXECUTION If the given timeout is expired and the surface is not ready.
+MFX_ERR_ABORTED If the specified asynchronous function aborted due to data dependency on a previous asynchronous function that did not complete.
+MFX_ERR_UNKNOWN Any internal error.
+ +Public Members
+ + + + + + + + +Optional extension buffer, which can be attached to mfxSurfaceHeader::ExtParam (second parameter of mfxFrameSurfaceInterface::Export) in order to pass OCL parameters during mfxFrameSurface1 exporting to OCL surface. If buffer is not provided all resources will be created by oneAPI Video Processing Library (oneVPL) RT internally.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_EXPORT_SHARING_DESC_OCL.
+Optional extension buffer, which can be attached to mfxSurfaceHeader::ExtParam (second parameter of mfxFrameSurfaceInterface::Export) in order to pass D3D12 parameters during mfxFrameSurface1 exporting to D3D12 resource. If buffer is not provided all resources will be created by oneAPI Video Processing Library (oneVPL) RT internally.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_EXPORT_SHARING_DESC_D3D12.
+Public Members
+ + + + + + + + + + +Optional extension buffer, which can be attached to mfxSurfaceHeader::ExtParam (second parameter of mfxFrameSurfaceInterface::Export) in order to pass Vulkan parameters during mfxFrameSurface1 exporting to Vulkan surface. If buffer is not provided all resources will be created by oneAPI Video Processing Library (oneVPL) RT internally.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_EXPORT_SHARING_DESC_VULKAN.
+Protected structures.
+Used to pass the decryption status report index for the Common Encryption usage model. The application can attach this extended buffer to the mfxBitstream structure at runtime.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_CENC_PARAM.
+Structures used for type definitions.
+The common header definition for external buffers and video processing hints.
+ +Represents pair of handles of type mfxHDL.
+ +Represents a pair of numbers of type mfxI16.
+ +Represents a range of unsigned values.
+ +Introduce the field Version for any structure. Assumed that any structure changes are backward binary compatible. mfxStructVersion starts from {1,0} for any new API structures. If mfxStructVersion is added to the existent legacy structure (replacing reserved fields) it starts from {1, 1}.
+Major and Minor fields
+Anonymous structure with Major and Minor fields. Minor number is incremented when reserved fields are used. Major number is incremented when the size of structure is increased.
+ + + + +Public Members
+Structures used by VPP only.
+A hint structure that tunes the VPP Color Conversion algorithm when attached to the mfxVideoParam structure during VPP Init.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_COLOR_CONVERSION.
+ChromaSiting is applied on input or output surface depending on the scenario:
+VPP Input |
+VPP Output |
+ChromaSiting Indicates |
+
---|---|---|
MFX_CHROMAFORMAT_YUV420 +MFX_CHROMAFORMAT_YUV422 + |
+MFX_CHROMAFORMAT_YUV444 |
+Chroma location for input |
+
MFX_CHROMAFORMAT_YUV444 |
+MFX_CHROMAFORMAT_YUV420 +MFX_CHROMAFORMAT_YUV422 + |
+Chroma location for output |
+
MFX_CHROMAFORMAT_YUV420 |
+MFX_CHROMAFORMAT_YUV420 |
+Chroma location for input and output |
+
MFX_CHROMAFORMAT_YUV420 |
+MFX_CHROMAFORMAT_YUV422 |
+Horizontal location for input and +output, vertical location for input |
+
If attached to the mfxVideoParam structure during the Init stage, this buffer will instruct the decoder to resize output frames via the fixed function resize engine (if supported by hardware), utilizing direct pipe connection and bypassing intermediate memory operations. The main benefits of this mode of pipeline operation are offloading resize operation to a dedicated engine, thus reducing power consumption and memory traffic.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_DEC_VIDEO_PROCESSING.
+Input surface description.
+Output surface description.
+Input surface description.
+Public Members
+ + + + + + + + +Output surface description.
+ +Used by the encoder to report additional information about encoded slices. The application can attach this buffer to the mfxBitstream structure before calling the MFXVideoENCODE_EncodeFrameAsync function.
+Note
+Not all implementations of the encoder support this extended buffer. The application must use query mode 1 to determine if the functionality is supported. To do this, the application must attach this extended buffer to the mfxVideoParam structure and call the MFXVideoENCODE_Query function. If the function returns MFX_ERR_NONE, then the functionality is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_ENCODED_SLICES_INFO.
+When mfxExtCodingOption2::MaxSliceSize is used, indicates the requested slice size was not met for one or more generated slices.
+When mfxExtCodingOption2::MaxSliceSize is used, indicates the number of generated slices exceeds specification limits.
+Returns auxiliary data generated by the video processing pipeline. The encoding process may use the auxiliary data by attaching this structure to the mfxEncodeCtrl structure.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_AUXDATA.
+Configures the VPP ColorFill filter algorithm.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_COLORFILL.
+Used to control composition of several input surfaces in one output. In this mode, the VPP skips any other filters. The VPP returns an error if any mandatory filter is specified and returns the filter skipped warning if an optional filter is specified. The only supported filters are deinterlacing and interlaced scaling. The only supported combinations of input and output color formats are:
+RGB to RGB,
NV12 to NV12,
RGB and NV12 to NV12, for per the pixel alpha blending use case.
The VPP returns MFX_ERR_MORE_DATA for additional input until an output is ready. When the output is ready, the VPP returns MFX_ERR_NONE. The application must process the output frame after synchronization.
+The composition process is controlled by:
+mfxFrameInfo::CropXYWH in the input surface defines the location of the picture in the input frame.
InputStream[i].DstXYWH defines the location of the cropped input picture in the output frame.
mfxFrameInfo::CropXYWH in the output surface defines the actual part of the output frame. All pixels in the output frame outside this region will be filled by the specified color.
If the application uses the composition process on video streams with different frame sizes, the application should provide maximum frame size in the mfxVideoParam structure during the initialization, reset, or query operations.
+If the application uses the composition process, the MFXVideoVPP_QueryIOSurf function returns the cumulative number of input surfaces, that is, the number required to process all input video streams. The function sets the frame size in the mfxFrameAllocRequest equal to the size provided by the application in the mfxVideoParam structure.
+The composition process supports all types of surfaces.
+All input surfaces should have the same type and color format, except for the per pixel alpha blending case, where it is allowable to mix NV12 and RGB surfaces.
+There are three different blending use cases:
+Luma keying. All input surfaces should have the NV12 color format specified during VPP initialization. Part of each surface, including the first one, may be rendered transparent by using LumaKeyEnable, LumaKeyMin, and LumaKeyMax values.
Global alpha blending. All input surfaces should have the same color format, NV12 or RGB, specified during VPP initialization. Each input surface, including the first one, can be blended with underlying surfaces by using GlobalAlphaEnable and GlobalAlpha values.
Per-pixel alpha blending. It is allowed to mix NV12 and RGB input surfaces. Each RGB input surface, including the first one, can be blended with underlying surfaces by using PixelAlphaEnable value.
It is not allowed to mix different blending use cases in the same function call.
+In the special case where the destination region of the output surface defined by output crops is fully covered with destination sub-regions of the surfaces, the fast compositing mode can be enabled. The main use case for this mode is a video-wall scenario with a fixed destination surface partition into sub-regions of potentially different size.
+In order to trigger this mode, the application must cluster input surfaces into tiles, defining at least one tile by setting the NumTiles field to be greater than 0, and assigning surfaces to the corresponding tiles by setting the TileId field to the value within the 0 to NumTiles range per input surface. Tiles should also satisfy the following additional constraints:
+Each tile should not have more than 8 surfaces assigned to it.
Tile bounding boxes, as defined by the enclosing rectangles of a union of a surfaces assigned to this tile, should not intersect.
Background color may be changed dynamically through Reset. There is no default value. YUV black is (0;128;128) or (16;128;128) depending on the sample range. The library uses a YUV or RGB triple depending on output color format.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_COMPOSITE.
+Number of input surface clusters grouped together to enable fast compositing. May be changed dynamically at runtime through Reset.
+Number of input surfaces to compose one output. May be changed dynamically at runtime through Reset. Number of surfaces can be decreased or increased, but should not exceed the number specified during initialization. Query mode 2 should be used to find the maximum supported number.
+An array of mfxVPPCompInputStream structures that describe composition of input video streams. It should consist of exactly NumInputStream elements.
+Used by the application to specify different deinterlacing algorithms.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_DEINTERLACING.
+Specifies telecine pattern when Mode = MFX_DEINTERLACING_FIXED_TELECINE_PATTERN. See the TelecinePattern enumerator for details.
+A hint structure that configures the VPP denoise filter algorithm.
Deprecated in API version 2.5. Use mfxExtVPPDenoise2 instead.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_DENOISE.
+A hint structure that configures the VPP denoise filter algorithm.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_DENOISE2.
+Indicates the mode of denoise. mfxDenoiseMode enumerator.
+A hint structure that configures the VPP detail/edge enhancement filter algorithm.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_DETAIL.
+Tells the VPP not to use certain filters in pipeline. See “Configurable VPP filters” table for complete list of configurable filters. The user can attach this structure to the mfxVideoParam structure when initializing video processing.
+ +Tells the VPP to include certain filters in the pipeline.
+Each filter may be included in the pipeline in one of two different ways:
+Adding a filter ID to this structure. In this method, the default filter parameters are used.
Attaching a filter configuration structure directly to the mfxVideoParam structure. In this method, adding filter ID to the mfxExtVPPDoUse structure is optional.
The user can attach this structure to the mfxVideoParam structure when initializing video processing.
+Note
+MFX_EXTBUFF_VPP_COMPOSITE cannot be enabled using mfxExtVPPDoUse because default parameters are undefined for this filter. The application must attach the appropriate filter configuration structure directly to the mfxVideoParam structure to enable it.
+Configures the VPP field processing algorithm. The application can attach this extended buffer to the mfxVideoParam structure to configure initialization and/or to the mfxFrameData during runtime. Runtime configuration has priority over initialization configuration. If the field processing algorithm was activated via the mfxExtVPPDoUse structure and the mfxExtVPPFieldProcessing extended buffer was not provided during initialization, this buffer must be attached to the mfxFrameData structure of each input surface.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_FIELD_PROCESSING.
+Specifies the mode of the field processing algorithm. See the VPPFieldProcessingMode enumerator for values of this option.
+Configures the VPP frame rate conversion filter. The user can attach this structure to the mfxVideoParam structure when initializing, resetting, or querying capability of video processing.
+On some platforms the advanced frame rate conversion algorithm (the algorithm based on frame interpolation) is not supported. To query its support, the application should add the MFX_FRCALGM_FRAME_INTERPOLATION flag to the Algorithm value in the mfxExtVPPFrameRateConversion structure, attach it to the structure, and call the MFXVideoVPP_Query function. If the filter is supported, the function returns a MFX_ERR_NONE status and copies the content of the input structure to the output structure. If an advanced filter is not supported, then a simple filter will be used and the function returns MFX_WRN_INCOMPATIBLE_VIDEO_PARAM, copies content of the input structure to the output structure, and corrects the Algorithm value.
+If advanced FRC algorithm is not supported, both MFXVideoVPP_Init and MFXVideoVPP_Reset functions return the MFX_WRN_INCOMPATIBLE_VIDEO_PARAM status.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_FRAME_RATE_CONVERSION.
+A hint structure that configures the VPP image stabilization filter.
+On some platforms this filter is not supported. To query its support, the application should use the same approach that it uses to configure VPP filters: adding the filter ID to the mfxExtVPPDoUse structure or by attaching the mfxExtVPPImageStab structure directly to the mfxVideoParam structure and calling the MFXVideoVPP_Query function.
+If this filter is supported, the function returns a MFX_ERR_NONE status and copies the content of the input structure to the output structure. If the filter is not supported, the function returns MFX_WRN_FILTER_SKIPPED, removes the filter from the mfxExtVPPDoUse structure, and zeroes the mfxExtVPPImageStab structure.
+If the image stabilization filter is not supported, both MFXVideoVPP_Init and MFXVideoVPP_Reset functions return a MFX_WRN_FILTER_SKIPPED status.
+The application can retrieve the list of active filters by attaching the mfxExtVPPDoUse structure to the mfxVideoParam structure and calling the MFXVideoVPP_GetVideoParam function. The application must allocate enough memory for the filter list.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_IMAGE_STABILIZATION.
+Provides setup for the Motion-Compensated Temporal Filter (MCTF) during the VPP initialization and for control parameters at runtime. By default, MCTF is off. An application may enable it by adding MFX_EXTBUFF_VPP_MCTF to the mfxExtVPPDoUse buffer or by attaching mfxExtVppMctf to the mfxVideoParam structure during initialization or reset.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_MCTF.
+Value in range of 0 to 20 (inclusive) to indicate the filter strength of MCTF.
+The strength of the MCTF process controls the degree of possible change of pixel values eligible for MCTF - the greater the strength value, the larger the change. It is a dimensionless quantity - values in the range of 1 to 20 inclusively imply strength; value 0 stands for AUTO mode and is valid during initialization or reset only
+If an invalid value is given, it is fixed to the default value of 0. If the field value is in the range of 1 to 20 inclusive, MCTF operates in fixed-strength mode with the given strength of MCTF process.
+At runtime, values of 0 and greater than 20 are ignored.
+Configures the VPP Mirroring filter algorithm.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_MIRRORING.
+A hint structure that configures the VPP ProcAmp filter algorithm. The structure parameters will be clipped to their corresponding range and rounded by their corresponding increment.
+Note
+There are no default values for fields in this structure, all settings must be explicitly specified every time this buffer is submitted for processing.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_PROCAMP.
+The brightness parameter is in the range of -100.0F to 100.0F, in increments of 0.1F. Setting this field to 0.0F will disable brightness adjustment.
+The contrast parameter in the range of 0.0F to 10.0F, in increments of 0.01F, is used for manual contrast adjustment. Setting this field to 1.0F will disable contrast adjustment. If the parameter is negative, contrast will be adjusted automatically.
+Configures the VPP Rotation filter algorithm.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_ROTATION.
+Configures the VPP Scaling filter algorithm. Not all combinations of ScalingMode and InterpolationMethod are supported in the library. The application must use the Query API function to determine if a combination is supported.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_SCALING.
+A hint structure that configures the data channel.
+Public Members
+Data type, mfxDataType enumerator.
+A hint structure that configures 3DLUT system buffer.
+Public Members
+3 Channels, can be RGB or YUV, mfxChannel structure.
+A hint structure that configures 3DLUT video buffer.
+Public Members
+Data type, mfxDataType enumerator.
+Indicates 3DLUT memory layout. mfx3DLutMemoryLayout enumerator.
+A hint structure that configures 3DLUT filter.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_3DLUT.
+Indicates 3DLUT channel mapping. mfx3DLutChannelMapping enumerator.
+Indicates 3DLUT buffer type. mfxResourceType enumerator, can be system memory, VA surface, DX11 texture/buffer etc.
+The 3DLUT system buffer. mfx3DLutSystemBuffer structure describes the details of the buffer.
+The 3DLUT video buffer. mfx3DLutVideoBuffer describes the details of 3DLUT video buffer.
+Indicates 3DLUT Interpolation Method. mfx3DLutInterpolationMethod enumerator.
+Used to control transfer matrix and nominal range of YUV frames. The application should provide this during initialization. Supported for multiple conversions, for example YUV to YUV, YUV to RGB, and RGB to YUV.
+Note
+This structure is used by VPP only and is not compatible with mfxExtVideoSignalInfo.
+Specifies configurations for video processing. A zero value in any of the fields indicates that the corresponding field is not explicitly specified.
+Public Members
+Input format for video processing.
+Output format for video processing.
+Used to specify input stream details for composition of several input surfaces in the one output.
+Public Members
+ + + + + + + + +Non-zero value enables luma keying for the input stream. Luma keying is used to mark some of the areas of the frame with specified luma values as transparent. It may, for example, be used for closed captioning.
+Minimum value of luma key, inclusive. Pixels whose luma values fit in this range are rendered transparent.
+Maximum value of luma key, inclusive. Pixels whose luma values fit in this range are rendered transparent.
+Alpha value for this stream. Should be in the range of 0 to 255, where 0 is transparent and 255 is opaque.
+Returns statistics collected during video processing.
+ +The structure is used to configure perceptual encoding prefilter in VPP.
+ +A hint structure that configures AI based super resolution VPP filter. Super resolution is an AI-powered upscaling feature which converts a low-resolution to high-resolution. On some platforms this filter is not supported. To query its support, the application should use the same approach that it uses to configure VPP filters: adding the filter ID to the mfxExtVPPDoUse structure or by attaching the mfxExtVPPAISuperResolution structure directly to the mfxVideoParam structure and calling the Query API function. If the filter is supported, the function returns a MFX_ERR_NONE status; otherwise, the function returns MFX_ERR_UNSUPPORTED. If both mfxExtVPPAISuperResolution and mfxExtVPPScaling are attached during initialization, the function will return MFX_ERR_INCOMPATIBLE_VIDEO_PARAM; if both of them are attached during runtime, the mfxExtVPPAISuperResolution will override the upscaling mode and use super resolution. If the application needs to switch on and off, the application can set the MFX_AI_SUPER_RESOLUTION_MODE_DISABLED to switch off, MFX_AI_SUPER_RESOLUTION_MODE_DEFAULT to switch on.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_AI_SUPER_RESOLUTION.
+Indicates Super Resolution Mode. mfxAISuperResolutionMode enumerator.
+Indicates Super Resolution Algorithm. mfxAISuperResolutionAlgorithm enumerator.
+A hint structure that configures AI based frame interpolation VPP filter. AI powered frame interpolation feature can reconstruct one or more intermediate frames between two consecutive frames by AI method. On some platforms this filter is not supported. To query its support, the application should use the same approach that it uses to configure VPP filters: Attaching the mfxExtVPPAIFrameInterpolation structure directly to the mfxVideoParam structure and setting the frame rate of input and output (FrameRateExtN and FrameRateExtD), then calling the Query API function. If the filter is supported, the Query function returns a MFX_ERR_NONE status; otherwise, the function returns MFX_ERR_UNSUPPORTED. As a new method of frame interpolation, the application can attach mfxExtVPPAIFrameInterpolation to mfxVideoParam during initialization for frame interpolation, or attach both mfxExtVPPAIFrameInterpolation and mfxExtVPPFrameRateConversion to mfxVideoParam and use which mfxExtVPPAIFrameInterpolation is regarded as a new algorithm of mfxExtVPPFrameRateConversion (MFX_FRCALGM_AI_FRAME_INTERPOLATION). The applications should follow video processing procedures and call the API mfxStatus MFXVideoVPP_RunFrameVPPAsync(Session, Input, Output, Auxdata, Syncp) to process the frames one by one. The below is detailed explanation of video processing procedures in this AI frame interpolation case. If the application does not follow the below input/output sequence, the application could get the unexpected output and get an error return value. Input: Frame0 Frame1 Frame2 Frame3 FrameN Output: Frame0 Frame0.5 Frame1 Frame1.5 Frame2 Frame2.5 Frame3 FrameX.5 FrameN #0 API call: Input Frame0, Output Frame0, Return MFX_ERR_NONE. #1 API call: Input Frame1, Output Frame0.5 and Return MFX_ERR_MORE_SURFACE. #2 API call: Input Frame1, Output Frame1, Return MFX_ERR_NONE. #3 API call: Input Frame2, Output Frame1.5, Return MFX_ERR_MORE_SURFACE. #4 API call: Input Frame2, Output Frame2, Return MFX_ERR_NONE.
+Public Members
+Extension buffer header. Header.BufferId must be equal to MFX_EXTBUFF_VPP_AI_FRAME_INTERPOLATION.
+Indicates frame interpolation mode. The mfxAIFrameInterpolationMode enumerator.
+All API entries defined under the ONEVPL_EXPERIMENTAL macro are considered as +experimental. Backward compatibility is not guaranteed for these features. +Future presence is not guaranteed as well.
+By default, experimental API is turned off in the header files. To enable +it, need to define ONEVPL_EXPERIMENTAL macro during the application +compilation stage.
+The following is a list of experimental interfaces, starting from API version +2.6.
+Experimental API |
+Added in API Version |
+Removed in API Version |
+Removal Reason |
+
---|---|---|---|
+ | 2.6 |
+2.10 |
+Moved to production |
+
|
+2.6 |
+2.10 |
+Redundant parameter |
+
+ | 2.6 |
+2.8 |
+Moved to production |
+
+ | 2.6 |
+2.8 |
+Moved to production |
+
Extended enum for |
+2.6 |
+2.7 |
+Moved to production |
+
+ | 2.6 |
+2.7 |
+Moved to production |
+
+ | 2.7 |
+2.10 |
+Moved to production |
+
All definitions in mfxencodestats.h |
+2.7 |
++ | + |
|
+2.8 |
+2.10 |
+Moved to production |
+
|
+2.8 |
+2.10 |
+Moved to production |
+
Camera Processing API for RAW acceleration |
+2.8 |
+2.10 |
+Moved to production |
+
Hint to disable external video frames caching for GPU copy |
+2.8 |
+2.10 |
+Moved to production |
+
+ | 2.8 |
+2.10 |
+Moved to production |
+
|
+2.9 |
+2.11 |
+Removed from API |
+
+ | 2.9 |
++ | + |
+ | 2.9 |
+2.10 |
+Moved to production |
+
+ | 2.9 |
+2.10 |
+Moved to production |
+
+ | 2.9 |
++ | + |
|
+2.9 |
+2.10 |
+Changed to |
+
+ | 2.9 |
++ | + |
+ | 2.9 |
++ | + |
+ | 2.9 |
++ | + |
+ | 2.9 |
++ | + |
+ | 2.9 |
++ | + |
+ | 2.9 |
++ | + |
|
+2.9 |
+2.11 |
+Removed from API |
+
|
+2.9 |
+2.11 |
+Removed from API |
+
|
+2.9 |
+2.11 |
+Removed from API |
+
|
+2.9 |
+2.11 |
+Removed from API |
+
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
++ | + |
+ | 2.10 |
+2.11 |
+Moved to production |
+
+ | 2.10 |
+2.11 |
+Moved to production |
+
+ | 2.10 |
+2.11 |
+Moved to production |
+
+ | 2.10 |
+2.11 |
+Moved to production |
+
+ | 2.11 |
++ | + |
+ | 2.11 |
++ | + |
+ | 2.11 |
++ | + |
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.11 |
++ | + |
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.11 |
+2.13 |
+Moved to production |
+
+ | 2.12 |
++ | + |
+ | 2.12 |
++ | + |
+ | 2.12 |
+2.13 |
+Moved to production |
+
+ | 2.12 |
+2.13 |
+Moved to production |
+
+ | 2.14 |
++ | + |
+ | 2.14 |
++ | + |
+ | 2.14 |
++ | + |
+ | 2.14 |
++ | + |
+ | 2.14 |
++ | + |
The Intel® VPL API and documentation uses a standard set of acronyms and terms. +This section describes these conventions.
+ +Advanced video codec (same as H.264 and MPEG-4, part 10).
+Bit rate control.
+Constant quantization parameter.
+Digital rights management.
+Microsoft DirectX* Video Acceleration standard 2.0.
+Group of pictures. In video coding, a group of frames in a specific order. +In the H.264 standard, a group of I-frames, B-frames and P-frames.
+Generalized P/B picture. B-picture, containing only forward references +in both L0 and L1.
+Video coding standard. See ISO*/IEC* 14496-10 and ITU-T* H.264, +MPEG-4 Part 10, Advanced Video Coding, May 2005.
+High dynamic range.
+Hypothetical reference decoder, a term used in the H.264 specification.
+Instantaneous decoding fresh picture, a term used in the H.264 specification.
+Look ahead. Special encoding mode where encoder performs pre-analysis of +several frames before actual encoding starts.
+Motion compensated temporal filter. Special type of noise reduction +filter which utilizes motion to improve efficiency of video denoising.
+Network abstraction layer.
+Picture parameter set.
+Quantization parameter.
+Supplemental enhancement information.
+Sequence parameter set.
+Video Acceleration API.
+Variable bit rate.
+Video buffering verifier.
+Memory used by a hardware acceleration device, also known as GPU, to +hold frame and other types of video data.
+Video usability information.
+Moving Picture Experts Group video file.
+Moving Picture Experts Group video file. See ISO/IEC 13818-2 and ITU-T +H.262, MPEG-2 Part 2, Information Technology- Generic Coding of Moving +Pictures and Associate Audio Information: Video, 2000.
+YUV 4:2:0 video format, 12 bits per pixel.
+YUV 4:2:2 video format, 16 bits per pixel.
+YUV 4:2:0 video format, extends NV12, 10 bits per pixel.
+YUV 4:2:2 video format, 10 bits per pixel.
+YUV 4:2:2 video format, 16 bits per pixel.
+Video coding format. See SMPTE* 421M, SMPTE Standard for Television: +VC-1 Compressed Video Bitstream Format and Decoding Process, August 2005.
+Color format for raw video frames, extends IYUV/I420 for 10 bit.
+A color format for raw video frames, also known as I420.
+Thirty-two-bit RGB color format.
+Thirty-two-bit RGB color format. Also known as RGB32.
+A color format for raw video frames.
+A color format for raw video frames, similar to IYUV with U and V +reversed.
+This section describes the API evolution from version to version.
+ +New in this release:
+Added decode HEVC level8.5 (general_level_idc=255) support:
++++
Experimental API: Introduced best quality and best speed mode for AI based video frame interpolation:
+++
Updated description for decode FrameRate in mfxFrameInfo
Experimental API: Introduced sharpen, artifact removal mode and algorithm setting for AI based super resolution:
+++
Made mfxvideo++.h session wrappers explicitly non-copyable:
++++
+- +
MFXVideoENCODE
- +
MFXVideoDECODE
- +
MFXVideoVPP
- +
MFXVideoDECODE_VPP
New in this release:
+Moved to production API:
+++
Added code name for the platform: Battlemage:
++++
+- +
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_PLATFORM_BATTLEMAGE)
New in this release:
+Experimental API: Added new structures and enumerated types for importing and exporting surfaces:
+++
Experimental API: introduced mfxExtVPPAIFrameInterpolation
and mfxAIFrameInterpolationMode
for AI powered frame interpolation.
Added code names for the platforms: Meteor Lake, Arrow Lake and Lunar Lake:
++++
+- +
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_PLATFORM_METEORLAKE)
- +
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_PLATFORM_LUNARLAKE)
- +
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_PLATFORM_ARROWLAKE)
Added code name for future platforms:
++++
+- +
MFX_DEPRECATED_ENUM_FIELD_INSIDE(MFX_PLATFORM_MAXIMUM)
Updated description for the function MFXVideoCORE_QueryPlatform()
.
New in this release:
+Experimental API: introduced mfxExtAV1ScreenContentTools
to support screen content tools setting for encoder.
Experimental API: introduced mfxExtAlphaChannelEncCtrl
and mfxExtAlphaChannelSurface
for alpha channel encoding.
Experimental API: introduced mfxExtQualityInfoMode
, mfxExtQualityInfoOutput
and mfxQualityInfoMode
to report quality information about encoded picture.
Experimental API: introduced mfxExtVPPAISuperResolution
and mfxAISuperResolutionMode
for AI enhanced video processing filter super resolution.
Experimental API: introduced mfx3DLutInterpolationMethod
to support 3DLUT interpolation method.
Experimental API: Added MFX_GPUCOPY_FAST
.
Experimental API: Added new structures and enumerated types for importing and exporting surfaces:
+++
Supported the extraction of AV1 HDR metadata in the decoder.
Updated description of mfxExtAVCRefListCtrl
to clarify process for querying encoder support.
Clarified the mfxExtCodingOption2::MaxQPI
, mfxExtCodingOption2::MaxQPP
, mfxExtCodingOption2::MaxQPB
, mfxExtCodingOption2::MinQPI
, mfxExtCodingOption2::MinQPP
, mfxExtCodingOption2::MinQPB
for the video encoding usage.
Added VVC decode API.
Update notes on mfxInfoMFX::QPI
, mfxInfoMFX::QPP
, mfxInfoMFX::QPB
to clarify to valid range.
Moved to production API:
+++
Experimental API: Removed mfxAutoSelectImplDeviceHandle
and mfxAutoSelectImplType
Experimental API: Removed mfxExtSyncSubmission
New in this release:
+Experimental API: introduced MFX_CORRUPTION_HW_RESET
to support media reset info report.
Changed MFX_ENCODE_TUNE_DEFAULT
to MFX_ENCODE_TUNE_OFF
.
Experimental API: Removed CPUEncToolsProcessing hint. No need to have explicit parameter. The decision to enable encoding tools will be made according to encoding parameters.
Extended behavior of fused decode plus VPP operation to disable implicit scaling.
Added alias mfxExtEncodedFrameInfo
as codec-independent version of mfxExtAVCEncodedFrameInfo
.
Updated description of MFXSetConfigFilterProperty()
to permit multiple properties per config object.
Fixed 3DLUT buffer size(system memory) in programming guide.
Clarified Region of Interest Parameters Setting for dynamic change.
Removed current working directory from the implementation search path.
Updated argument names and description of MFX_UUID_COMPUTE_DEVICE_ID macro.
Added new header file mfxmemory.h, which is automatically included by mfxvideo.h. Moved the following function declarations from mfxvideo.h to mfxmemory.h
+++
Experimental API: Introduced new interface for importing and exporting surfaces. Added new function mfxFrameSurfaceInterface::Export
. Added new structures and enumerated types:
++
Experimental API: Introduced capabilities query for supported surface import and export operations. Added new structures and enumerated types:
+++
Experimental API: Introduced new interface for configuring initialization parameters. Added new structures and enumerated types:
+++
Experimental API: previously released experimental features were moved to production . See +Experimental API for more details.
Not supported in the encoding of VDEnc or LowPower ON:
++++
+- +
CodecProfile::MFX_PROFILE_AVC_MULTIVIEW_HIGH
- +
CodecProfile::MFX_PROFILE_AVC_STEREO_HIGH
New in this release:
+Deprecated mfxExtCodingOption2::BitrateLimit
.
Added note that applications must call MFXVideoENCODE_Query() to check for support of mfxExtChromaLocInfo
and mfxExtHEVCRegion
extension buffers.
Added AV1 HDR metadata description and further clarified mfxExtMasteringDisplayColourVolume
and mfxExtContentLightLevelInfo
.
Added deprecation messages to the functions MFXQueryAdapters()
, MFXQueryAdaptersDecode()
, and MFXQueryAdaptersNumber()
.
+Applications should use the process described in Intel® VPL Dispatcher to enumerate and select adapters.
Fixed multiple spelling errors.
Added extension buffer mfxExtSyncSubmission
to return submission synchronization sync point.
Added extension buffer mfxExtVPPPercEncPrefilter
to control perceptual encoding prefilter.
Deprecated mfxPlatform::CodeName
and corresponding enum values.
Added mfxExtendedDeviceId::RevisionID
and extDeviceUUID
to be aligned across multiple domains including compute and specify device UUID accordingly.
Added extension buffer mfxExtTuneEncodeQuality
and correspondent enumeration to specify encoding tuning option.
Updated description of MFXEnumImplementations()
to clarify that the input mfxImplCapsDeliveryFormat
determines the type of structure returned.
Updated mfxvideo++.h to use MFXLoad API.
Added mfxAutoSelectImplDeviceHandle
and mfxAutoSelectImplType
for automatically selecting a suitable implementation based on application-provided device handle.
New in this release:
+Introduced MFX_FOURCC_ABGR16F
FourCC for 16-bit float point (per channel) 4:4:4 ABGR format.
Clarified the mfxExtMasteringDisplayColourVolume::DisplayPrimariesX
, mfxExtMasteringDisplayColourVolume::DisplayPrimariesY
for the video processing usage.
Added MFX_CONTENT_NOISY_VIDEO
in ContentInfo definition.
Added Camera Processing API for Camera RAW data.
Introduced hint to disable external video frames caching for GPU copy.
Clarified usage of mfxExtMasteringDisplayColourVolume::InsertPayloadToggle
and
+mfxExtContentLightLevelInfo::InsertPayloadToggle
during decode operations.
Fixed multiple spelling errors.
Experimental API: introduced mfxExtMBQP::Pitch
value for QP map defined in mfxExtMBQP
.
Clarified when MFXEnumImplementations()
may be called for implementation capabilities query.
Added table with filenames included in the dispatcher’s search process.
Bug Fixes:
+Fixed Experimental API table to note that mfxExtRefListCtrl
and MFX_EXTBUFF_UNIVERSAL_REFLIST_CTRL
were moved to production in version 2.8.
New in this release:
+mfxExtVppAuxData::RepeatedFrame
flag is actual again and returned back from deprecation state.
Clarified GPUCopy control behavior.
Introduced MFX_FOURCC_XYUV FourCC for non-alpha packed 4:4:4 format.
Notice added to the mfxFrameSurfaceInterface::OnComplete
to clarify when
+library can call this callback.
New product names for platforms:
++++
+- +
Code name Alder Lake N.
Annotated missed aliases mfxExtHEVCRefListCtrl
, mfxExtHEVCRefLists
, mfxExtHEVCTemporalLayers
.
New dispatcher’s config properties:
++++
+- +
Pass through extension buffer to
mfxInitializationParam
.- +
Select host or device responsible for the memory copy between host and device.
Refined description of struct mfxExtMasteringDisplayColourVolume and mfxExtContentLightLevelInfo for HDR SEI decoder usage.
Experimental API: introduced interface to get statistics after encode.
Bug Fixes:
+Fixed missprint in the mfxExtDeviceAffinityMask
description.
MFXVideoENCODE_Query description fixed for query mode 1.
New in this release:
+New development practice to treat some new API features as experimental was introduced. +All new experimental API is wrapped with ONE_EXPERIMENTAL macro.
Experimental API: introduced MFX_HANDLE_PXP_CONTEXT to support protected content.
Experimental API: introduced CPUEncToolsProcessing hint to run adaptive encoding tools on CPU.
Experimental API: extended device ID reporting to cover multi-adapter cases.
Experimental API: introduced common alias for mfxExtAVCRefListCtrl
Experimental API: mfxExtDecodeErrorReport ErrorTypes enum extended with new JPEG/MJPEG decode error report.
Clarified LowPower flag meaning.
Described that mfxExtThreadsParam can be attached to mfxInitializationParam during session initialization.
Refined description of the MFXVideoDECODE_VPP_DecodeFrameAsync function.
New dispatcher’s config filter property: MediaAdapterType.
Marked all deprecated fields as MFX_DEPRECATED.
Introduced priority loading option for custom libraries.
Clarified AV1 encoder behavior about writing of IVF headers.
Removed outdated note about loading priority of Intel® Media Software Development Kit. For loading details see +Intel® VPL implementation on Intel® platforms with Xe architecture and Intel® Media Software Development Kit Coexistence.
Spelled out mfxVariant type usage for strings.
New product names for platforms:
++++
+- +
Code name DG2,
- +
Code name ATS-M.
New in this release:
+Added mfxMediaAdapterType to capability reporting.
Added surface pool interface.
Helper macro definition to simplify filter properties set up process +for dispatcher.
Added mfxExtAV1BitstreamParam, mfxExtAV1ResolutionParam and mfxExtAV1TileParam for AV1e.
Added MFX_RESOURCE_VA_SURFACE_PTR and MFX_RESOURCE_VA_BUFFER_PTR enumerators.
Clarified HEVC Main 10 Still Picture Profile configuration.
External Buffer ID of mfxExtVideoSignalInfo and mfxExtMasteringDisplayColourVolume for video processing.
New MFX_WRN_ALLOC_TIMEOUT_EXPIRED return status. Indicates that all surfaces are currently +in use and timeout set by mfxExtAllocationHints for allocation of new surfaces through +functions GetSurfaceForXXX expired.
Introduced universal temporal layering structure.
Added MFX_RESOURCE_VA_SURFACE_PTR and MFX_RESOURCE_VA_BUFFER_PTR enumerators.
Introduced segmentation interface for AV1e, including ext-buffers and enums.
Introduced planar I422 and I210 FourCC codes.
Bug Fixes:
+Dispatcher: Removed /etc/ld.so.cache from Intel® VPL search order.
mfxSurfaceArray: CDECL attribute added to the member-functions.
Deprecated:
+mfxExtVPPDenoise extension buffer.
Added ability to retrieve path to the shared library with the implementation.
Added 3DLUT (Three-Dimensional Look Up Table) filter in VPP.
Added mfxGUID structure to specify Globally Unique Identifiers (GUIDs).
Added QueryInterface function to mfxFrameSurfaceInterface.
Added AdaptiveRef and alias for ExtBrcAdaptiveLTR.
Added MFX_FOURCC_BGRP FourCC for Planar BGR format.
Environmental variables to control dispatcher’s logger.
Encoding in Hyper mode.
New product names for platforms:
++++
+- +
Code name Rocket Lake,
- +
Code name Alder Lake S,
- +
Code name Alder Lake P,
- +
Code name for Arctic Sound P.
- +
For spec version 2.3.1 MFX_PLATFORM_XEHP_SDV alias was added
mfx.h header file is added which includes all header files.
Added deprecation messages (deprecation macro) to the functions MFXInit and +MFXInitEx functions definition.
The following is a list of deprecated interfaces, starting from API version 2.0.
+API |
+Deprecated in API Version |
+Removed in API Version |
+Alternatives |
+Behaviour change of deprecated API |
+
---|---|---|---|---|
+ | 2.9 |
++ | + | No change |
+
+ | 2.9 |
++ | + | No change |
+
+ | 2.9 |
++ | + | No change |
+
+ | 2.9 |
++ | Flag is ignored on VDEnc |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.9 |
++ | Field |
+No change |
+
|
+2.12 |
++ | Field |
+No change |
+
|
+2.13 |
++ | Field |
+No change |
+
|
+2.12 |
++ | Field |
+No change |
+
|
+2.12 |
++ | Field |
+No change |
+
|
+2.12 |
++ | Field |
+No change |
+
+ | 2.9 |
++ | Field is not filled by the library |
+No change |
+
+ | 2.3 |
++ | + | API may return |
+
+ | 2.3 |
++ | + | API may return |
+
+ | 2.5 |
++ | + | No change |
+
|
+2.0 |
++ | Use |
+No change |
+
|
+2.0 |
++ | Flag is ignored |
+No change |
+
|
+2.0 |
++ | Flag is ignored |
+No change |
+
|
+2.4 |
++ | + | No change |
+
|
+2.0 |
++ | Ignored |
+No change |
+
|
+2.0 |
++ | Field is not filled by the library |
+No change |
+
|
+2.0 |
++ | Field is not filled by the library |
+No change |
+
|
+2.0 |
++ | Field is not filled by the library |
+No change |
+
Intel® VPL is source compatible with Intel® Media Software Development Kit. Applications can use +Intel® Media Software Development Kit to target older hardware and Intel® VPL to target everything else. +Some obsolete features of Intel® Media Software Development Kit have been omitted from Intel® VPL. +Hereinafter the term “Legacy” will be used to describe a behavior when Intel® VPL +is called by Intel® Media Software Development Kit applications.
+Intel® VPL provides improved ease of use compared to Intel® Media Software Development Kit. Ease of use +enhancements include the following:
+Smart dispatcher with discovery of implementation capabilities. See +Intel® VPL Session for more details.
Simplified decoder initialization. See Decoding Procedures for more +details.
New memory management and components (session) interoperability. See +Internal Memory Management and Decoding Procedures for more details.
Intel® VPL introduces new functions that are not available in Intel® Media Software Development Kit.
+New Intel® VPL dispatcher functions:
+New Intel® VPL memory management functions:
+New Intel® VPL implementation capabilities retrieval functions:
+ +New Intel® VPL session initialization:
+ +The following Intel® Media Software Development Kit features are considered obsolete and are not +included in Intel® VPL:
+Audio support. Intel® VPL is intended for video processing. Audio APIs that +duplicate functionality from other audio libraries such as +Sound Open Firmware have been removed.
ENC and PAK interfaces. Part of the Flexible Encode Infrastructure (FEI) +and plugin interfaces which provide additional control over the encoding +process for AVC and HEVC encoders. This feature was removed because it is not +widely used by customers.
User plugins architecture. Intel® VPL enables robust video acceleration through +API implementations of many different video processing frameworks. Support of +a Intel® Media Software Development Kit user plugin framework is obsolete. Intel® Media Software Development Kit RAW acceleration (Camera API) +which is implemented as plugin is also obsolete, Intel® VPL enables RAW acceleration (Camera +API) through Intel® VPL runtime such as Intel® VPL GPU runtime.
External buffer memory management. A set of callback functions to replace +internal memory allocation is obsolete.
Video Processing extended runtime functionality. Video processing function +MFXVideoVPP_RunFrameVPPAsyncEx is used for plugins only and is obsolete.
External threading. The new threading model makes the MFXDoWork function +obsolete.
Multi-frame encode. A set of external buffers to combine several frames +into one encoding call. This feature was removed because it is device specific +and not commonly used.
Surface Type Neutral Transcoding. Opaque memory support is removed and +replaced with internal memory allocation concept.
Raw Acceleration. Intel® Media Software Development Kit RAW acceleration (Camera API) which is +implemented as plugin is obsolete, replaced by Intel® VPL and Intel® VPL runtime implementation. +Intel® VPL reused most of Intel® Media Software Development Kit Camera API, but Intel® VPL camera API is not backward +compatible with Intel® Media Software Development Kit camera API due to obsolete plugin mechanism in Intel® VPL +and a few difference between Intel® VPL and Intel® Media Software Development Kit. The major difference between Intel® VPL +and Intel® Media Software Development Kit are listed: +1) mfxCamGammaParam and mfxExtCamGammaCorrection are removed in Intel® VPL; 2) Added +reserved bytes in mfxExtCamHotPixelRemoval, mfxCamVignetteCorrectionParam and +mfxCamVignetteCorrectionElement for future extension; 3) Changed CCM from mfxF64 +to mfxF32 in mfxExtCamColorCorrection3x3 and added more reserved bytes.
The following Intel® Media Software Development Kit functions are not included in Intel® VPL:
+Audio related functions
+MFXAudioCORE_SyncOperation()
MFXAudioDECODE_Close()
MFXAudioDECODE_DecodeFrameAsync()
MFXAudioDECODE_DecodeHeader()
MFXAudioDECODE_GetAudioParam()
MFXAudioDECODE_Init()
MFXAudioDECODE_Query()
MFXAudioDECODE_QueryIOSize()
MFXAudioDECODE_Reset()
MFXAudioENCODE_Close()
MFXAudioENCODE_EncodeFrameAsync()
MFXAudioENCODE_GetAudioParam()
MFXAudioENCODE_Init()
MFXAudioENCODE_Query()
MFXAudioENCODE_QueryIOSize()
MFXAudioENCODE_Reset()
Flexible encode infrastructure functions
+MFXVideoENC_Close()
MFXVideoENC_GetVideoParam()
MFXVideoENC_Init()
MFXVideoENC_ProcessFrameAsync()
MFXVideoENC_Query()
MFXVideoENC_QueryIOSurf()
MFXVideoENC_Reset()
MFXVideoPAK_Close()
MFXVideoPAK_GetVideoParam()
MFXVideoPAK_Init()
MFXVideoPAK_ProcessFrameAsync()
MFXVideoPAK_Query()
MFXVideoPAK_QueryIOSurf()
MFXVideoPAK_Reset()
User plugin functions
+MFXAudioUSER_ProcessFrameAsync()
MFXAudioUSER_Register()
MFXAudioUSER_Unregister()
MFXVideoUSER_GetPlugin()
MFXVideoUSER_ProcessFrameAsync()
MFXVideoUSER_Register()
MFXVideoUSER_Unregister()
MFXVideoUSER_Load()
MFXVideoUSER_LoadByPath()
MFXVideoUSER_UnLoad()
MFXDoWork()
Memory functions
+MFXVideoCORE_SetBufferAllocator()
Video processing functions
+MFXVideoVPP_RunFrameVPPAsyncEx()
Memory type and IOPattern enumerations
+MFX_IOPATTERN_IN_OPAQUE_MEMORY
MFX_IOPATTERN_OUT_OPAQUE_MEMORY
MFX_MEMTYPE_OPAQUE_FRAME
Important
+Corresponding extension buffers are also removed.
+The following behaviors occur when attempting to use a Intel® Media Software Development Kit API that +is not supported by Intel® VPL:
+Code compiled with the Intel® VPL API headers will generate a compile and/or +link error when attempting to use a removed API.
Code previously compiled with Intel® Media Software Development Kit and executed using a Intel® VPL
+runtime will generate an MFX_ERR_NOT_IMPLEMENTED
error when
+calling a removed function.
Intel® VPL contains following header files from Intel® Media Software Development Kit included for the +simplification of existing applications migration to Intel® VPL:
+mfxvideo++.h
Important
+Intel® Media Software Development Kit obsolete API removed from those header files. +Code compiled with the Intel® VPL API headers will generate a compile and/or +link error when attempting to use a removed API.
+Developers can implement any subset of the Intel® VPL API. +The specification makes no claim about what encoder, decoder, VPP +filter, or any other underlying features are mandatory for the implementation. +The Intel® VPL API is designed such that users have several options +to discover capabilities exposed by the implementation:
+Before or after session creation: Users can get a list of supported encoders, decoders,
+VPP filters, correspondent color formats, and memory types with the help of
+the MFXEnumImplementations()
function. For more details, see
+Intel® VPL Dispatcher Interactions.
After session is created: Users can call Query functions to obtain +low level implementation capabilities.
Attention
+The legacy Intel® Media Software Development Kit implementation does not support the +first approach to obtain capabilities.
+The Exported Functions table lists all
+functions that must be exposed by any Intel® Video Processing Library implementation.
+The realization of all listed functions is mandatory; most functions may return
+mfxStatus::MFX_ERR_NOT_IMPLEMENTED
.
Note
+Functions MFXInit()
and MFXInitEx()
are not required to be
+exported.
See Mandatory APIs for details about which functions, in which conditions,
+must not return mfxStatus::MFX_ERR_NOT_IMPLEMENTED
.
Function |
+API Version |
+
---|---|
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.1 |
+
+ | 1.1 |
+
+ | 1.1 |
+
+ | 1.1 |
+
+ | 1.1 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.0 |
+
+ | 1.19 |
+
+ | 1.31 |
+
+ | 1.31 |
+
+ | 1.31 |
+
+ | 2.0 |
+
+ | 2.0 |
+
+ | 2.0 |
+
+ | 2.0 |
+
+ | 2.0 |
+
+ | 2.0 |
+
+ | 2.1 |
+
+ | 2.1 |
+
+ | 2.1 |
+
+ | 2.1 |
+
+ | 2.1 |
+
+ | 2.1 |
+
+ | 2.1 |
+
All implementations must implement the APIs listed in the +Mandatory APIs table:
+Functions |
+Description |
+
---|---|
+ | +Required functions for the dispatcher to create a session. |
+
+ | +Required functions for the dispatcher to return implementation capabilities. |
+
+ | Required function for synchronization of asynchronous operations. |
+
If the implementation exposes any encoder, decoder, or VPP filter, it must +implement the corresponding mandatory APIs, as described in the +Mandatory Encode, Decode, +VPP and Decode+VPP APIs +tables:
+Functions |
+Description |
+
---|---|
+ | +Required functions if the implementation implements any encoder. |
+
Functions |
+Description |
+
---|---|
+ | +Required functions if the implementation implements any decoder. |
+
Functions |
+Description |
+
---|---|
+ | +Required functions if the implementation implements any VPP filter. |
+
Functions |
+Description |
+
---|---|
+ | +Required functions if the implementation implements any Decode+VPP component. |
+
Note
+Mandatory functions must not return the
+MFX_ERR_NOT_IMPLEMENTED
status.
If at least one of the encoder, decoder, or VPP filter functions is implemented,
+the MFXQueryImplsDescription()
function must return a valid
+mfxImplDescription
structure instance with mandatory capabilities
+of the implementation, including decoder, encoder, or VPP capabilities information.
If the implementation supports internal memory allocation by exposing at least one of the
+function from that family: internal memory allocation and management API then
+implementation of whole scope of the mfxFrameSurfaceInterface
structure as a part of
+the mfxFrameSurface1
is mandatory.
Any other functions or extension buffers are optional for the implementation.
+Intel® VPL is the successor to Intel® Media Software Development Kit. Intel® VPL API versioning starts from
+2.0. There is a correspondent version of Intel® Media Software Development Kit API which is used as a
+basis for Intel® VPL and defined as the MFX_LEGACY_VERSION
macro.
Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | +7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +
Value | 0 | 0 | 0 | 0 | 0 | 0 | Valid data | +
Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | +7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +
Value | Valid data | 0 | 0 | 0 | 0 | 0 | 0 | +