SPV_INTEL_device_side_avc_motion_estimation
SPV_INTEL_device_side_avc_motion_estimation
Table of Contents
Name Strings
Contact
Contributors
Notice
Status
Version
Dependencies
Overview
Extension Name
New Capabilities
New Instructions
New Types
Token Number Assignments
Modifications to the SPIR-V Specification, Version 1.2
Validation Rules
Issues
Revision History
Name Strings
SPV_INTEL_device_side_avc_motion_estimation
Contact
To report problems with this extension, please open a new issue at:
Contributors
Biju George, Intel
Ben Ashbaugh, Intel
Kristina Bessonova, Intel
Pawel Jurek, Intel
Alexey Sachkov, Intel
Alexey Sotkin, Intel
Notice
Copyright (c) 2018 Intel Corporation. All rights reserved.
Status
Shipping
Version
Last Modified Date
2018-10-29
Revision
Dependencies
This extension is written against the SPIR-V Specification,
Version 1.2 Revision 1.
This extension requires SPIR-V 1.0.
Overview
Video motion estimation (VME) is defined as of set motion estimation operations that are used to determine the motion vectors, intra estimation angles and macroblock partitioning combination that best describe the transformation to the source macroblock, from blocks in one or more previous reference pictures (inter-prediction), or from other blocks in the same source picture (intra-prediction). It does this by searching for spatial and temporal patterns on the current and various forward and backward reference pictures.
The goal of this extension is to provide programmers with a fine-grained interface to the AVC VME media sampler in Intel graphics processors. It describes the specification of instructions that facilitate the programming of the VME media sampler to evaluate specific AVC motion estimation operations.
Instructions are defined for all the major operations of the VME media sampler. The major operations of the AVC VME media sampler in Intel Graphics Processors can be described as follows:
Integer motion estimation (IME)
Perform motion estimation on a given source macroblock in a source image over a single or dual reference window in a reference image, at full-pixel resolution, to determine the best integer motion vectors and their associated distortions, and the best macroblock shape partitioning combination.
Motion estimation refinement (REF)
Perform refinement operations on the results of IME. The two sub-operations are:
Fractional motion estimation (FME)
Perform sub-pixel refinement on the results of an IME operation. Half-pixel (HPEL) or quarter-pixel (QPEL) refinements are performed to determine the best sub-pixel motion vectors and their associated distortions.
Bidirectional motion estimation (BME)
Perform bidirectional refinement on the results of an IME operation using two reference images to check if the bidirectional mode using two references yields lesser distortions. An FME can optionally be performed implicitly as part of a bidirectional refinement.
Skip and Intra check (SIC)
Performs the following two sub-operations:
Skip check (SKC)
Compute the pixel distortion of a user-specified shape and motion vector combination. The VME media sampler fetches necessary pixels, performs fractional and bidirectional filtering (as necessary), and then computes the distortion between the derived reference and source. The skip decision can optionally be enhanced to include a 4x4 forward transform, the results of which are compared against a user specified threshold to emulate the effects of the forward quantization zeroing effect.
Intra prediction estimation (IPE)
Perform intra prediction on a given source macroblock to determine the best intra prediction modes and the best shape partitioning combination.
Extension Name
To use this extension within a SPIR-V module, the appropriate
OpExtension
must be present in the module:
OpExtension "SPV_INTEL_device_side_avc_motion_estimation"
New Capabilities
This extension introduces new capabilities:
SubgroupAvcMotionEstimationINTEL
SubgroupAvcMotionEstimationIntraINTEL
SubgroupAvcMotionEstimationChromaINTEL
New Instructions
Instructions added under the
SubgroupAvcMotionEstimationINTEL
capability (some are additionally defined under the
SubgroupAvcMotionEstimationIntraINTEL
or
SubgroupAvcMotionEstimationChromaINTEL
capability):
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL
OpSubgroupAvcMceSetInterShapePenaltyINTEL
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL
OpSubgroupAvcMceSetAcOnlyHaarINTEL
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL
OpSubgroupAvcMceConvertToImePayloadINTEL
OpSubgroupAvcMceConvertToImeResultINTEL
OpSubgroupAvcMceConvertToRefPayloadINTEL
OpSubgroupAvcMceConvertToRefResultINTEL
OpSubgroupAvcMceConvertToSicPayloadINTEL
OpSubgroupAvcMceConvertToSicResultINTEL
OpSubgroupAvcMceGetMotionVectorsINTEL
OpSubgroupAvcMceGetInterDistortionsINTEL
OpSubgroupAvcMceGetBestInterDistortionsINTEL
OpSubgroupAvcMceGetInterMajorShapeINTEL
OpSubgroupAvcMceGetInterMinorShapeINTEL
OpSubgroupAvcMceGetInterDirectionsINTEL
OpSubgroupAvcMceGetInterMotionVectorCountINTEL
OpSubgroupAvcMceGetInterReferenceIdsINTEL
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL
OpVmeImageINTEL
OpSubgroupAvcImeInitializeINTEL
OpSubgroupAvcImeSetSingleReferenceINTEL
OpSubgroupAvcImeSetDualReferenceINTEL
OpSubgroupAvcImeRefWindowSizeINTEL
OpSubgroupAvcImeAdjustRefOffsetINTEL
OpSubgroupAvcImeConvertToMcePayloadINTEL
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL
OpSubgroupAvcImeSetWeightedSadINTEL
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL
OpSubgroupAvcImeConvertToMceResultINTEL
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL
OpSubgroupAvcImeGetDualReferenceStreaminINTEL
OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL
OpSubgroupAvcImeStripDualReferenceStreamoutINTEL
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL
OpSubgroupAvcImeGetBorderReachedINTEL
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL
OpSubgroupAvcFmeInitializeINTEL
OpSubgroupAvcBmeInitializeINTEL
OpSubgroupAvcRefConvertToMcePayloadINTEL
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL
OpSubgroupAvcRefSetBilinearFilterEnableINTEL
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL
OpSubgroupAvcRefConvertToMceResultINTEL
OpSubgroupAvcSicInitializeINTEL
OpSubgroupAvcSicConfigureSkcINTEL
OpSubgroupAvcSicConfigureIpeLumaINTEL
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL
OpSubgroupAvcSicGetMotionVectorMaskINTEL
OpSubgroupAvcSicConvertToMcePayloadINTEL
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL
OpSubgroupAvcSicSetBilinearFilterEnableINTEL
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL
OpSubgroupAvcSicEvaluateIpeINTEL
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL
OpSubgroupAvcSicConvertToMceResultINTEL
OpSubgroupAvcSicGetIpeLumaShapeINTEL
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL
OpSubgroupAvcSicGetIpeChromaModeINTEL
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL
OpSubgroupAvcSicGetInterRawSadsINTEL
New Types
Opaque Types added under the
SubgroupAvcMotionEstimationINTEL
capability:
OpTypeVmeImageINTEL
OpTypeAvcMcePayloadINTEL
OpTypeAvcImePayloadINTEL
OpTypeAvcRefPayloadINTEL
OpTypeAvcSicPayloadINTEL
OpTypeAvcMceResultINTEL
OpTypeAvcImeResultINTEL
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
OpTypeAvcImeResultDualReferenceStreamoutINTEL
OpTypeAvcImeSingleReferenceStreaminINTEL
OpTypeAvcImeDualReferenceStreaminINTEL
OpTypeAvcRefResultINTEL
OpTypeAvcSicResultINTEL
Token Number Assignments
OpVmeImageINTEL
5699
OpTypeVmeImageINTEL
5700
OpTypeAvcImePayloadINTEL
5701
OpTypeAvcRefPayloadINTEL
5702
OpTypeAvcSicPayloadINTEL
5703
OpTypeAvcMcePayloadINTEL
5704
OpTypeAvcMceResultINTEL
5705
OpTypeAvcImeResultINTEL
5706
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
5707
OpTypeAvcImeResultDualReferenceStreamoutINTEL
5708
OpTypeAvcImeSingleReferenceStreaminINTEL
5709
OpTypeAvcImeDualReferenceStreaminINTEL
5710
OpTypeAvcRefResultINTEL
5711
OpTypeAvcSicResultINTEL
5712
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL
5713
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL
5714
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL
5715
OpSubgroupAvcMceSetInterShapePenaltyINTEL
5716
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL
5717
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL
5718
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL
5719
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL
5720
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL
5721
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL
5722
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL
5723
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL
5724
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL
5725
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL
5726
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL
5727
OpSubgroupAvcMceSetAcOnlyHaarINTEL
5728
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL
5729
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL
5730
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL
5731
OpSubgroupAvcMceConvertToImePayloadINTEL
5732
OpSubgroupAvcMceConvertToImeResultINTEL
5733
OpSubgroupAvcMceConvertToRefPayloadINTEL
5734
OpSubgroupAvcMceConvertToRefResultINTEL
5735
OpSubgroupAvcMceConvertToSicPayloadINTEL
5736
OpSubgroupAvcMceConvertToSicResultINTEL
5737
OpSubgroupAvcMceGetMotionVectorsINTEL
5738
OpSubgroupAvcMceGetInterDistortionsINTEL
5739
OpSubgroupAvcMceGetBestInterDistortionsINTEL
5740
OpSubgroupAvcMceGetInterMajorShapeINTEL
5741
OpSubgroupAvcMceGetInterMinorShapeINTEL
5742
OpSubgroupAvcMceGetInterDirectionsINTEL
5743
OpSubgroupAvcMceGetInterMotionVectorCountINTEL
5744
OpSubgroupAvcMceGetInterReferenceIdsINTEL
5745
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL
5746
OpSubgroupAvcImeInitializeINTEL
5747
OpSubgroupAvcImeSetSingleReferenceINTEL
5748
OpSubgroupAvcImeSetDualReferenceINTEL
5749
OpSubgroupAvcImeRefWindowSizeINTEL
5750
OpSubgroupAvcImeAdjustRefOffsetINTEL
5751
OpSubgroupAvcImeConvertToMcePayloadINTEL
5752
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL
5753
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL
5754
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL
5755
OpSubgroupAvcImeSetWeightedSadINTEL
5756
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL
5757
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL
5758
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL
5759
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL
5760
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL
5761
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL
5762
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL
5763
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL
5764
OpSubgroupAvcImeConvertToMceResultINTEL
5765
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL
5766
OpSubgroupAvcImeGetDualReferenceStreaminINTEL
5767
OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL
5768
OpSubgroupAvcImeStripDualReferenceStreamoutINTEL
5769
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
5770
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL
5771
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL
5772
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL
5773
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL
5774
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL
5775
OpSubgroupAvcImeGetBorderReachedINTEL
5776
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL
5777
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL
5778
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL
5779
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL
5780
OpSubgroupAvcFmeInitializeINTEL
5781
OpSubgroupAvcBmeInitializeINTEL
5782
OpSubgroupAvcRefConvertToMcePayloadINTEL
5783
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL
5784
OpSubgroupAvcRefSetBilinearFilterEnableINTEL
5785
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL
5786
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL
5787
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL
5788
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL
5789
OpSubgroupAvcRefConvertToMceResultINTEL
5790
OpSubgroupAvcSicInitializeINTEL
5791
OpSubgroupAvcSicConfigureSkcINTEL
5792
OpSubgroupAvcSicConfigureIpeLumaINTEL
5793
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL
5794
OpSubgroupAvcSicGetMotionVectorMaskINTEL
5795
OpSubgroupAvcSicConvertToMcePayloadINTEL
5796
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL
5797
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL
5798
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL
5799
OpSubgroupAvcSicSetBilinearFilterEnableINTEL
5800
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL
5801
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL
5802
OpSubgroupAvcSicEvaluateIpeINTEL
5803
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL
5804
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL
5805
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL
5806
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL
5807
OpSubgroupAvcSicConvertToMceResultINTEL
5808
OpSubgroupAvcSicGetIpeLumaShapeINTEL
5809
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL
5810
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL
5811
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL
5812
OpSubgroupAvcSicGetIpeChromaModeINTEL
5813
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL
5814
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL
5815
OpSubgroupAvcSicGetInterRawSadsINTEL
5816
Modifications to the SPIR-V Specification, Version 1.2
Modify Section 2.2, Terms, adding to the numbered list a new sub-section 2.2.X "AVC Motion Estimation":
The following terms, acronyms and definitions are used in and provide context for the AVE motion estimation group instructions.
Macro-block (MB)
An image is partitioned into macro-blocks of size 16x16 pixels. It is the basic unit of processing for AVC video motion estimation operations.
Shape
A MB may be partitioned into sub-blocks of one of the major shapes. A sub-block with an 8x8 major shape may be further independently partitioned into sub-blocks of one of the minor shapes. It is represented by predefined shape values.
Major Shapes
Shapes of 16x16, 16x8, 8x16, or 8x8 partitions of a MB. A 16x16 major shape merely indicates that the MB was not further partitioned.
Minor Shapes
Shapes of 8x8, 8x4, 4x8, or 4x4 sub-partitions of an 8x8 partition. A 8x8 minor shape merely indicates that the 8x8 major partition was not further sub-partitioned.
Block
A sub-block of a MB with one of the major or minor shapes.
Reference Image
An image (typically from the previously decoded buffer in an encoder pipeline) from which motion estimation predictions are made.
Source Image
The current image for which motion estimation predictions are made.
Source Macro-block Offset
The 2D offset of the top left corner of the source MB in pixel units. It is represented by a pair of unsigned 16-bit integers.
Reference Window Offset
The 2D offset of the top left corner reference search window w.r.t to the top left corner of the source MB in pixel units. It is represented by a pair of signed 16-bit integers in the range [-2048, 2047].
Reference identifier
Reference identifiers are associated to pairs of forward(L0)/ backward(L1) reference image parameters. Up to 16 pairs of reference pairs of reference image parameters are permitted, with the permitted values of reference identifiers ranging from 0 to 15. The reference identifiers are assigned in increasing order in which the reference image parameter pairs are declared in the kernel parameter operand list.
Motion Vector (MV)
A 2D vector used for inter motion estimation that provides an offset from the top left corner of a block in the source image to the top left corner an identically sized block in the reference image. Generally it is used to represent the best match of a block in the reference image to a block in the source image. The best match is determined as the block minimizing the distortion. MVs are specified in QPEL resolution with the 2 LSB representing the fractional part of the offset. It is represented by a pair of signed 16-bit signed integers.
Packed Motion Vector
A motion vector represented as a packed 32-bit unsigned integer. The lower 16 bits contains the X coordinate and the upper 16 bits contains the Y coordinate.
Bidirectional Motion Vector (BMV)
A pair of MVs for the forward(L0) and backward(L1) images. Depending on how the VME operation is configured only the forward or the backward MV or both may be valid.
Packed Bidirectional Motion Vector
A bidirectional MV represented as a packed 64-bit unsigned integer. The lower 32-bits contain the forward packed MV, and the upper 32-bits contain the backward packed MV.
Sum Of Absolute Difference (SAD)
The sum of absolute differences of every full/sub-pixel location in the source block w.r.t every corresponding full/sub pixel in the reference block as specified by a given MV. The sum of absolute differences may be optionally Haar transform adjusted. It is represented by an unsigned 16-bit integer value.
Haar Transform (HAAR)
A simple wavelet transform that is used to refine the distortion measure of SAD. The per pixel difference goes through a 4x4 Haar transform. Then the SAD is replaced by the sum of the absolute values of the transform domain coefficients in the distortion. Haar transform is used as a coarse estimation of the integer transform.
Motion Vector Cost Center (CC)
A MV has an associated cost w.r.t a cost center coordinate. The further away from the cost center, the larger will be the cost associated with the MV. Cost centers are specified in QPEL resolution with the 2 LSB representing the fractional part of the offset.
Motion Vector Cost Center Delta (CCD)
The 2D offset of the cost center relative to the top left corner of the source MB. Cost center deltas are specified in QPEL resolution with the 2 LSB representing the fractional part of the offset. It is represented by a pair of signed 16-bit integers.
Packed Motion Vector Cost Center Delta
A motion vector cost center delta represented as a packed 32-bit unsigned integer. The lower 16 bits contains the X coordinate and the upper 16 bits contains the Y coordinate.
Bidirectional Motion Vector Cost Center Delta
A pair of cost center deltas for the forward and backward images.
Packed Bidirectional Motion Vector Cost Center Delta
A packed bidirectional motion vector cost center delta represented as a 64-bit unsigned integer. The lower 32-bits contain the forward packed CCD, and the upper 32-bits contain the backward packed CCD.
Motion Vector Cost
The MV cost is determined using a cost function described by a cost table that is indexed based on power-of-two distances from the user specified cost center, with a user specified precision (or unit) of the distances from the cost center.
U4U4 Byte Format
Represents a value of (B<Motion Vector Cost Table
A table which specifies the cost penalties at 8 control points. The first 7 control points represent the distances from cost center at powers-of-two locations (2
to 2
), and the last control point represents the base penalty for distances that are out of range of the cost function curve. It is represented by a packed array of 8 U4U4 unsigned integer values.
Motion Vector Cost Precision
The precision (or unit) of the control points in the MV cost table. It can be used to control the precision and range of the cost function. It is represented by pre-defined cost precision values.
Shape Cost
The cost associated with encoding a particular partition shape using inter or intra prediction. It is represented by a packed array of 10 U4U4 unsigned integer values.
Distortion
The distortion is the sum of SAD, MV cost, shape cost and multi-reference cost for inter estimation, and the sum of SAD, mode cost, shape cost and non-dc cost for intra estimation. It is a measure of the cost of encoding a block and is represented by an unsigned 16-bit integer value.
Intra Mode
An intra-prediction angle which provides a prediction for the current block from the edge pixels in its neighboring blocks. It is represented by pre-defined intra mode values.
Intra Mode Cost
The cost associated with a computed intra mode for a block w.r.t a predicted intra mode based on the computed intra modes for itsneighboring blocks.
Mode
The decision whether the inter-prediction or intra-prediction minimizes distortion of a given MB.
Search unit (SU)
The basic unit of searching. Possible reference search locations are grouped in a predefined 4x4 pattern, and all locations within the same group must be completely chosen or completely skipped. These predefined groups are called search units.
Search Path (SP)
The path taken during searching in a reference window. The steps taken in a search path are in units of SUs. The search path must lie within the defined search window.
Luma
Luma refers to either the Y-plane of a NV12 image or a regular image with the
Image Channel Order
and
Image Channel Data Type
restricted as R and UnormInt8.
Chroma
Chroma refer to the UV-plane of a NV12 image.
Search Window (SW)
The search area that will be covered during searching. The area of the search window is limited to 2K luma pixels.
Search Window Configuration
The configuration of a search window which is a combination of the search path and search window.
The predefined search window configurations are:
EXHAUSTIVE
48x40 SW with exhaustive single reference search (or 32x32 dual SW for exhaustive dual-reference search); an exhaustive search means that all SU within the search window are searched in a spiral pattern with the search center being the middle of the search window.
SMALL
28x28 SW with exhaustive search
TINY
24x24 SW with exhaustive search
EXTRA TINY
20x20 SW with exhaustive search
DIAMOND
48x40 SW with diamond single reference search (or 32x32 dual SW for diamond dual-reference search); a diamond pattern search path is used for the first 16 (or 7 per reference for dual reference search) SUs, and then gradient based searching is used for up to a maximum of 57 search unit.
LARGE DIAMOND
48x40 SW with large diamond single reference search(or 32x32 dual SW for large diamond dual-reference search); a diamond pattern search pattern is used for the first 32 (or 10 per reference for dual reference search) SUs, and then gradient based searching is used for up to a maximum of 57 search units.
Inter Estimation
The process of determining motion vectors and shapes that best describe the transformation from 2D images from previously decoded images in a video sequence to the currently processed image.
Intra-Prediction Estimation (IPE)
The process of determining prediction angles and shapes that best describe the transformation from neighboring MBs in an image to the currently processed MB in the same image.
Luma Mode
The prediction angle returned by IPE for the luma component for a block. It is represented by an unsigned 8-bit integer with the upper 4 bits set to zero.
Integer Motion Estimation (IME)
Inter-motion estimation in integer pixel resolution.
Fractional Motion Estimation (FME)
Inter-motion estimation in sub-pixel resolution. The result of integer motion estimation on a reference image is used to perform fractional refinement.
Bidirectional Motion Estimation (BME)
The process of determining if the bi-directional prediction minimizes the distortion w.r.t to unidirectional prediction. The results of IME on forward(L0) and backward(L1) reference images are used to perform bi-directional refinement. BME can be performed in integer or sub-pixel resolution. If performed in sub-pixel resolution an implicit FME operation is done before performing the BME.
Refinement (REF)
A FME and/or BME refinement operation.
Skip/Spot Check (SKC)
The operation determining the distortion associated with a given (uni or bidirectional) MV in a reference image(s) w.r.t a source image.
Skip and Intra Check (SIC)
The process of performing both SKC and IPE in the same operation.
Motion Check or Estimation (MCE)
A generic IME, REF, or SIC operation.
Forward Transform (FT)
An 8x8 or 4x4 integer transform used to transform the residual to the frequency domain.
Capabilities
Modify Section 3.31, Capability, adding rows to the Capability table:
5696
SubgroupAvcMotionEstimationINTEL
Groups
SPV_INTEL_device_side_motion_estimation
5697
SubgroupAvcMotionEstimationIntraINTEL
SubgroupAvcMotionEstimationINTEL, SubgroupImageMediaBlockIOINTEL
SPV_INTEL_device_side_motion_estimation
5698
SubgroupAvcMotionEstimationChromaINTEL
SubgroupAvcMotionEstimationIntraINTEL
SPV_INTEL_device_side_motion_estimation
Types
Modify Section
2.2.2
Types
, adding "VME image" type after the definition of
Sampler
as follows:
Sampler
: There are essentially two categories of samplers: texture and media samplers. Texture samplers essentially describe settings how to access, filter, or sample on an image, that come either from literal declarations of settings or be an opaque reference to externally bound settings. Media samplers essentially settings for motion estimation on an image, that come only from literal declarations of settings. Refer to section
3.32.21 Group Instructions
for a detailed description the instructions that use of this type. In general, the use of the word "sampler" by itself refers to a texture sampler. A media sampler will be explicitly referred to as "media sampler". A sampler does not include an image.
Modify Section
2.2.2
Types
, adding "VME image" type after the definition of
Sampled Image
as follows:
VME Image
: An image combined with a sampler, enabling VME accesses of the image’s contents.
Modify Section
2.2.2
Types
, adding the following to the Opaque types:
OpTypeVmeImageINTEL
OpTypeAvcMcePayloadINTEL
OpTypeAvcImePayloadINTEL
OpTypeAvcRefPayloadINTEL
OpTypeAvcSicPayloadINTEL
OpTypeAvcMceResultINTEL
OpTypeAvcImeResultINTEL
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
OpTypeAvcImeResultDualReferenceStreamoutINTEL
OpTypeAvcImeSingleReferenceStreaminINTEL
OpTypeAvcImeDualReferenceStreaminINTEL
OpTypeAvcRefResultINTEL
OpTypeAvcSicResultINTEL
Modify Section
2.8
Types and Variables
, adding the following to the third paragraph:
To do motion estimation operations, a type from
OpTypeVmeImageINTEL
is used that contains both an image and a media sampler. Such an image can be set only in a SPIR-V module from an independent image and an independent sampler. Furthermore its OpTypeImage must have a Dim of 2D.
Modify Section
3.32.6
Type Declaration Instructions
, amending the description of OpTypeSampler as follows:
OpTypeSampler
Declare the sampler type. Consumed by OpSampledImage or
OpVmeImageINTEL
. This type is opaque: values of this type have no defined physical size or bit pattern.
26
Result
Modify Section
3.32.6
Type Declaration Instructions
, adding the description of OpTypeSampledImage as follows:
OpTypeVmeImageINTEL
Declare a VME image type, the
Result Type
of
OpVmeImageINTEL
. This type is opaque: values of this type have no defined physical size or bit pattern.
Image Type must be an OpTypeImage. It is the type of the image in the combined sampler and image type.
5700
Result
Image Type
Modify Section
3.32.6
Type Declaration Instructions
, adding to the end of the list of type declarations:
OpTypeAvcMcePayloadINTEL
Declare the
Operand
and/or
Result Type
of a
AVC MCE Group Instruction
. Consumed by AVC MCE Group Instruction and represents the payload for a basic IME/REF/SIC operation. This type is opaque: values of this type have no defined physical size or bit pattern.
5704
Result
OpTypeAvcImePayloadINTEL
Declare the
Operand
and/or
Result Type
of a
AVC IME Group Instruction
. Consumed by AVC MCE Group Instruction and represents the payload for a basic IME operation. This type is opaque: values of this type have no defined physical size or bit pattern.
5701
Result
OpTypeAvcRefPayloadINTEL
Declare the
Operand
and/or
Result Type
of a
AVC REF Group Instruction
. Consumed by AVC REF Group Instruction and represents the payload for a basic REF operation. This type is opaque: values of this type have no defined physical size or bit pattern.
5702
Result
OpTypeAvcSicPayloadINTEL
Declare the
Operand
and/or
Result Type
of a
AVC SIC Group Instruction
. Consumed by AVC SIC Group Instruction and represents the payload for a basic SIC operation. This type is opaque: values of this type have no defined physical size or bit pattern.
5703
Result
OpTypeAvcMceResultINTEL
Declare the
Operand
and/or
Result Type
of a
AVC MCE Group Instruction
. Consumed by AVC MCE Group Instruction and represents the evluation results of a basic IME/REF/SIC operation. This type is opaque: values of this type have no defined physical size or bit pattern.
5705
Result
OpTypeAvcImeResultINTEL
Declare the
Operand
and/or
Result Type
of a
AVC IME Group Instruction
. Consumed by AVC IME Group Instruction and represents the evaluation of a basic IME operation not using the stream-in/streamout functionality. This type is opaque: values of this type have no defined physical size or bit pattern.
5706
Result
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
Declare the
Operand
and/or
Result Type
of a
AVC IME Group Instruction
. Consumed by AVC IME Group Instruction and represents the additional results from the result of an IME evaluation using the streamout functionality that may be streamed-in in a subsequent IME streamin call. This type is opaque: values of this type have no defined physical size or bit pattern.
5707
Result
OpTypeAvcImeResultDualReferenceStreamoutINTEL
Declare the
Operand
and/or
Result Type
of a
AVC IME Group Instruction
. Consumed by AVC IME Group Instruction and represents the additional results from the result of an IME evaluation using the streamout functionality that may be streamed-in in a subsequent IME streamin call. This type is opaque: values of this type have no defined physical size or bit pattern.
5708
Result
OpTypeAvcImeSingleReferenceStreaminINTEL
Declare the
Operand
and/or
Result Type
of a
AVC IME Group Instruction
. Consumed by AVC IME Group Instruction and represents the additional results from the result of an IME evaluation using the streamout functionality that may be streamed-in in a subsequent IME streamin call. This type is opaque: values of this type have no defined physical size or bit pattern.
5709
Result
OpTypeAvcImeDualReferenceStreaminINTEL
Declare the
Operand
and/or
Result Type
of a
AVC IME Group Instruction
. Consumed by AVC IME Group Instruction and represents the additional results from the result of an IME evaluation using the streamout functionality that may be streamed-in in a subsequent IME streamin call. This type is opaque: values of this type have no defined physical size or bit pattern.
5710
Result
OpTypeAvcRefResultINTEL
Declare the
Operand
and/or
Result Type
of a
AVC REF Group Instruction
. Consumed by AVC REF Group Instruction and represents the evaluation of a basic REF operation. This type is opaque: values of this type have no defined physical size or bit pattern.
5711
Result
OpTypeAvcSicResultINTEL
Declare the
Operand
and/or
Result Type
of a
AVC SIC Group Instruction
. Consumed by AVC SIC Group Instruction and represents the evaluation of a basic SIC operation. This type is opaque: values of this type have no defined physical size or bit pattern.
5712
Result
Binary Form
Modify Section
Binary Form
, adding to the numbered list the following sub-sections:
Interlaced image field polarity values:
Field polarity values
Enabling Capabilities
0x0
AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL
SubgroupAvcMotionEstimationINTEL
Inter macro-block major shape values:
Major shape values
Enabling Capabilities
0x0
AVC_ME_MAJOR_16x16_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_MAJOR_16x8_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_MAJOR_8x16_INTEL
SubgroupAvcMotionEstimationINTEL
0x3
AVC_ME_MAJOR_8x8_INTEL
SubgroupAvcMotionEstimationINTEL
Inter macro-block minor shape values:
Minor shape values
Enabling Capabilities
0x0
AVC_ME_MINOR_8x8_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_MINOR_8x4_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_MINOR_4x8_INTEL
SubgroupAvcMotionEstimationINTEL
0x3
AVC_ME_MINOR_4x4_INTEL
SubgroupAvcMotionEstimationINTEL
Inter macro-block major direction values:
Major direction values
Enabling Capabilities
0x0
AVC_ME_MAJOR_FORWARD_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_MAJOR_BACKWARD_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_MAJOR_BIDIRECTIONAL_INTEL
SubgroupAvcMotionEstimationINTEL
Inter (IME) partition mask values:
Partition mask values
Enabling Capabilities
0x0
AVC_ME_PARTITION_MASK_ALL_INTEL
SubgroupAvcMotionEstimationINTEL
0x7E
AVC_ME_PARTITION_MASK_16x16_INTEL
SubgroupAvcMotionEstimationINTEL
0x7D
AVC_ME_PARTITION_MASK_16x8_INTEL
SubgroupAvcMotionEstimationINTEL
0x7B
AVC_ME_PARTITION_MASK_8x16_INTEL
SubgroupAvcMotionEstimationINTEL
0x77
AVC_ME_PARTITION_MASK_8x8_INTEL
SubgroupAvcMotionEstimationINTEL
0x6F
AVC_ME_PARTITION_MASK_8x4_INTEL
SubgroupAvcMotionEstimationINTEL
0x5F
AVC_ME_PARTITION_MASK_4x8_INTEL
SubgroupAvcMotionEstimationINTEL
0x3F
AVC_ME_PARTITION_MASK_4x4_INTEL
SubgroupAvcMotionEstimationINTEL
Slice type values:
Polarity values
Enabling Capabilities
0x0
AVC_ME_SLICE_TYPE_PRED_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_SLICE_TYPE_BPRED_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_SLICE_TYPE_INTRA_INTEL
SubgroupAvcMotionEstimationINTEL
Search window configuration:
Search window configuration values
Enabling Capabilities
0x0
AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_SEARCH_WINDOW_SMALL_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_SEARCH_WINDOW_TINY_INTEL
SubgroupAvcMotionEstimationINTEL
0x3
AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL
SubgroupAvcMotionEstimationINTEL
0x4
AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL
SubgroupAvcMotionEstimationINTEL
0x5
AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL
SubgroupAvcMotionEstimationINTEL
0x6
AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL
SubgroupAvcMotionEstimationINTEL
0x7
AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL
SubgroupAvcMotionEstimationINTEL
SAD adjustment mode:
SAD adjustment values
Enabling Capabilities
0x0
AVC_ME_SAD_ADJUST_MODE_NONE_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL
SubgroupAvcMotionEstimationINTEL
Pixel resolution values:
Pixel resolution values
Enabling Capabilities
0x0
AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_SUBPIXEL_MODE_HPEL_INTEL
SubgroupAvcMotionEstimationINTEL
0x3
AVC_ME_SUBPIXEL_MODE_QPEL_INTEL
SubgroupAvcMotionEstimationINTEL
Cost precision values:
Cost precision values
Enabling Capabilities
0x0
AVC_ME_COST_PRECISION_QPEL_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_COST_PRECISION_HPEL_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_COST_PRECISION_PEL_INTEL
SubgroupAvcMotionEstimationINTEL
0x3
AVC_ME_COST_PRECISION_DPEL_INTEL
SubgroupAvcMotionEstimationINTEL
Inter bidirectional weights:
Inter bidirectional weight values
Enabling Capabilities
0x10
AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL
SubgroupAvcMotionEstimationINTEL
0x15
AVC_ME_BIDIR_WEIGHT_THIRD_INTEL
SubgroupAvcMotionEstimationINTEL
0x20
AVC_ME_BIDIR_WEIGHT_HALF_INTEL
SubgroupAvcMotionEstimationINTEL
0x2B
AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL
SubgroupAvcMotionEstimationINTEL
0x30
AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL
SubgroupAvcMotionEstimationINTEL
Inter border reached values
Inter border reached values
Enabling Capabilities
0x0
AVC_ME_BORDER_REACHED_LEFT_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_BORDER_REACHED_RIGHT_INTEL
SubgroupAvcMotionEstimationINTEL
0x4
AVC_ME_BORDER_REACHED_TOP_INTEL
SubgroupAvcMotionEstimationINTEL
0x8
AVC_ME_BORDER_REACHED_BOTTOM_INTEL
SubgroupAvcMotionEstimationINTEL
Intra macro-block shape values
Intra macro-block shape values
Enabling Capabilities
0x0
AVC_ME_INTRA_16x16_INTEL
SubgroupAvcMotionEstimationINTEL
0x1
AVC_ME_INTRA_8x8_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_INTRA_4x4_INTEL
SubgroupAvcMotionEstimationINTEL
Inter skip block partition type:
Intra macro-block shape values
Enabling Capabilities
0x0
AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL
SubgroupAvcMotionEstimationINTEL
0x04000
AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL
SubgroupAvcMotionEstimationINTEL
Inter skip motion vector mask:
Inter skip motion vector values
Enabling Capabilities
(0x1<<24)
AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x2<<24)
AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x3<<24)
AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x55<<24)
AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0xAA<<24)
AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0xFF<<24)
AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x1<<24)
AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x2<<24)
AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x1<<26)
AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x2<<26)
AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x1<<28)
AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x2<<28)
AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x1<<30)
AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
(0x2<<30)
AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL
Block based skip type values:
Block based skip type values
Enabling Capabilities
0x0
AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL
SubgroupAvcMotionEstimationINTEL
0x80
AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL
SubgroupAvcMotionEstimationINTEL
Luma intra partition mask values:
Luma intra partition mask values
Enabling Capabilities
0x0
AVC_ME_INTRA_LUMA_PARTITION_MASK_ALL_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x6
AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x5
AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x3
AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
Intra neighbor availability mask values:
Intra neighbor availability mask values
Enabling Capabilities
0x60
AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x10
AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x8
AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x4
AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
Luma intra modes:
Luma intra mode values
Enabling Capabilities
0x0
AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x1
AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x2
AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x3
AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x4
AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x4
AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x5
AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x6
AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x7
AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
0x8
AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
Chroma intra modes:
Chroma intra mode values
Enabling Capabilities
0x0
AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
0x1
AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
0x2
AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
0x3
AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
Reference image select values:
Reference image select values
Enabling Capabilities
0x1
AVC_ME_FRAME_FORWARD_INTEL
SubgroupAvcMotionEstimationINTEL
0x2
AVC_ME_FRAME_BACKWARD_INTEL
SubgroupAvcMotionEstimationINTEL
0x3
AVC_ME_FRAME_DUAL_INTEL
SubgroupAvcMotionEstimationINTEL
Instructions
Modify Section
3.32.7
Constant-Creation Instructions
, amending the desciption of OpConstantNull as follow:
OpConstantNull
Declare a new null constant value.
The null value is type dependent, defined as follows:
Scalar Boolean: false
Scalar integer: 0
Scalar floating point: +0.0 (all bits 0)
All other scalars: Abstract
Composites: Members are set recursively to the null constant according to the null value of their constituent types.
IME/REF/SIC payload & result types
: Abstract
Result Type must be one of the following types:
Scalar or vector Boolean type
Scalar or vector integer type
Scalar or vector floating-point type
Pointer type
Event type
Device side event type
Reservation id type
Queue type
Composite type
IME/REF/SIC payload or result type
46
Result Type
Result
Modify Section
3.32.10
Image Instructions
, amending the description of OpImage as follows:
OpImage
Extract the image from a sampled or VME image.
Result Type must be OpTypeImage.
Sampled Image must have type OpTypeSampledImage or
OpTypeVmeImageINTEL
whose Image Type is the same as Result Type.
100
Result Type
Result
VME Image
Modify Section
3.32.10
Image Instructions
, adding the description of OpVmeImageINTEL as follows:
OpVmeImageINTEL
Create a VME image, containing both a (media) sampler and an image.
Result Type must be the
OpTypeVmeImageINTEL
type.
Image is an object whose type is an OpTypeImage, whose Sampled operand is 0 or 1, and whose Dim operand is not SubpassData.
Sampler must be an object whose type is
OpTypeSampler
5699
Result Type
Result
Image Type
Sampler
Modify Section 3.32.21,
Group Instructions
, adding to the end of the list of instructions the following MCE instructions:
MCE instructions
A set of generic MCE operations which may be called for IME, REF, or SIC operations with the restrictions as stated in their descriptions. They can be called only during specific phases of these operations as indicated in the description of the instructions.
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Multi-reference cost configuration instructions:
These instructions enable multi-reference image costing. They allow for the configuration of the payloads to favorably bias the major partitions coming from reference images that are closer to the source image, than the ones coming from reference images that are further away. The distance of the reference images, in the timing order, from the source image is implied based on the order in which the reference images are declared in the kernel parameter operand list.
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL
Get the default base multi-reference cost penalty in U4U4 format when HW assisted multi-reference search is used.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness in U4U4 format.
Slice Type
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per
Section 3, Binary Form
Qp
must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value.
Capability:
SubgroupAvcMotionEstimationINTEL
5713
Result Type
Result
Slice Type
Qp
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL
Set the multi-reference base penalty when HW assisted multi-reference search is performed.
Reference major partitions get associated with a penalty based on its distance from the source image. The
Reference Base Penalty
is scaled using a scaling factor based on the implied distance of the reference image from
the source image as shown below.
0x
[1, 2]
1x
[3, 6]
2x
[7, 15]
3x
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Reference Base Penalty
must be 8-bit scalar integer type in U4U4 format and the decoded integer value must fit within 12 bits. It is treated as an unsigned value.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5714
Result Type
Result
Reference Base Penalty
Payload
Inter shape and direction cost configuration instructions
These instructions enable shape costing for inter estimation. They allow for the configuration of payloads for the biasing of certain shapes over others based on the configured parameters.
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL
Get the default packed shape cost for inter estimation in U4U4 format.
Result Type
must be an OpTypeInt with 64-bit Width and 0 Signedness.
Slice Type
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per
Section 3, Binary Form
Qp
must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value.
Capability:
SubgroupAvcMotionEstimationINTEL
5715
Result Type
Result
Slice Type
Qp
OpSubgroupAvcMceSetInterShapePenaltyINTEL
Set the shape penalty for inter motion estimation.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Packed Shape Penalty
must be 64-bit scalar integer type. It is treated as an unsigned value. The following bits specify the shape penalty in U4U4 format:
7:0
16x8 and 8x16
15:8
8x8
23:16
8x4 and 4x8
31:24
4x4
39:32
16x16
63:40
Must be zero
The U4U4 decoded integer values for byte 0 and byte 4 must bit fit in 12 bits, while the U4U4 decoded integer values for the other bytes must fit within 10 bits.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5716
Result Type
Result
Packed Shape Penalty
Payload
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL
Get the default direction penalty for inter estimation in U4U4 format.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness.
Slice Type
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per
Section 3, Binary Form
Qp
must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value.
Capability:
SubgroupAvcMotionEstimationINTEL
5717
Result Type
Result
Slice Type
Qp
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL
Set the direction penalty for backward images used in inter motion estimation.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Direction Cost
must be 8-bit scalar integer type in U4U4 format and
the decoded integer value must fit within 12 bits. It is treated as an unsigned value.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5718
Result Type
Result
Direction Cost
Payload
Intra shape cost configuration phase instructions
These instructions enable shape costing for intra estimation. They allow for the configuration of payloads for biasing of certain shapes over others based on the configured parameters. Only the instruction providing the default shape penalty is specified as an MCE instruction. The instruction which actually configures the payload for the intra estimation operation is specified as a SIC instruction.
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL
Get the default packed luma intra penalty estimation in U4U4 format.
Result Type
must be an OpTypeInt with 32-bit Width and 0 Signedness.
Slice Type
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per
Section 3, Binary Form
Qp
must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5719
Result Type
Result
Slice Type
Qp
Inter motion vector cost configuration phase instructions
These instructions enable motion vector costing for inter estimation. The distortion measure is augmented to favor motion vectors closer to the cost-center considered in conjunction with the primary objective of minimizing the SAD between the source and reference blocks.
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL
Get the default inter motion vector cost table for the pre-defined control points in U4U4 format for the input Qp and slice type.
Result Type
must be a vector(2) of i32 values and 0 Signedness.
Slice Type
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per
Section 3, Binary Form
Qp
must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value.
Capability:
SubgroupAvcMotionEstimationINTEL
5720
Result Type
Result
Slice Type
Qp
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL
Get the default predefined packed U4U4 format high cost table for high Qp. This may be more appropriate for frame sequences with high motion.
Result Type
must be a vector(2) of i32 values and 0 Signedness.
Capability:
SubgroupAvcMotionEstimationINTEL
5721
Result Type
Result
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL
Get the default predefined packed U4U4 format high cost table for medium Qp. This may be more appropriate for frame sequences with high motion.
Result Type
must be a vector(2) of i32 values and 0 Signedness.
Capability:
SubgroupAvcMotionEstimationINTEL
5722
Result Type
Result
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL
Get the default predefined packed U4U4 format low cost table for high Qp. This may be more appropriate for frame sequences with high motion.
Result Type
must be a vector(2) of i32 values and 0 Signedness.
Capability:
SubgroupAvcMotionEstimationINTEL
5723
Result Type
Result
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL
Update the input payload to set the cost precision along with the cost center and cost table and return it.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Packed Cost Center Delta
must be an OpTypeInt with 64-bit Width and 0 Signedness. It is the packed bidirectional cost center delta value relative to the source macroblock, which specifies the 4 bidirectional cost centers of each of the 8x8 partitions of the reference image. If only unidirectional search is performed then the values of the backward reference cost centers must be zero. Work-item
provides the value of cost center
. It is specified in QPEL units. For 16x16 partitions work-item
provides the cost center. For 8x16 partitions work-items
and
provide the cost centers. For 16x8 partitions work-items
and
provide the cost centers. The X and Y coordinates of each cost center delta must be in the range [-2048, 2047] and [-512.00 to 511.75] respectively, otherwise the results are undefined.
Packed Cost Table
must be a vector(2) of i32 values and 0 Signedness and specifies the cost penalties for pre-defined control points in U4U4 format in the cost function curve. The first 7 bytes specify 7 control points representing consecutive powers-of-two delta units (2
to 2
). Each delta unit, dx, is the distance of a motion vector, mv, from the specified cost center, cc (dx=abs(mv-cc)). The cost penalty values at in-between control points are linearly interpolated. The range of the cost function is defined to be from 2
to 2
delta units. The 8th byte of the packed cost table specifies the penalty base factor (over_cost) for dx distances that are out-of-range. The penalty of out-of-range cost dx distances is computed as min(over_cost + int(dx) - 64, 255).
Cost Precision
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid cost precision value as per
Section 3, Binary Form
, and specifies the precision of the delta units from the cost center, dx. This effectively can be used to control the range of the cost function as follows:
Precision
Deltas
Pixel Range
PEL
pixel
0-64
DPEL
dual pixel
0-127
HALF
half pixel
0-31
QUARTER
quarter pixel
0-15
The inter distortion for a block can be described by the following formula:
Distortion =
SAD(or HAAR) + MV_Cost_Penalty +
Shape_Penalty + Direction_Cost +
Multi_Reference_Penalty
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5724
Result Type
Result
Packed Cost Center Delta
Packed Cost Table
Cost Precision
Payload
Intra mode cost configuration phase instructions
These instructions enable mode costing for intra estimation. They allow for the configuration of payloads to bias the computed intra modes to be closer to their configured neighbor modes. This form of costing is similar to the inter motion vector costing. Only the instructions providing the defaults mode costs are specified as MCE instructions. The remaining instructions which actually configure the payload for the intra estimation operation is specified as SIC instruction.
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL
Get the default inter motion vector cost table for the pre-defined control points in U4U4 format for the input Qp and slice type.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness in U4U4 format.
Slice Type
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid slice type value as per
Section 3, Binary Form
Qp
must be a 8-bit scalar integer type and a valid quantization parameter value between 0 and 51. It is treated as an unsigned value.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5725
Result Type
Result
Slice Type
Qp
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL
Get the default intra non-dc cost penalty for intra luma estimation in packed 32-bit integer format.
Result Type
must be an OpTypeInt with 32-bit Width and 0 Signedness.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5726
Result Type
Result
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL
Get the default chroma mode base penalty in U4U4 format.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness in U4U4 format.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
5727
Result Type
Result
Miscellaneous property configuration phase instructions
These instructions enable miscellaneous MCE properties settings.
OpSubgroupAvcMceSetAcOnlyHaarINTEL
Update the input payload to enable an AC only HAAR SAD mode and return it. It overrides any previous setting for sad adjustment. This feature is mainly intended for improved block matching in frame-rate conversion (FRC) kernels.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5728
Result Type
Result
Payload
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL
Update the input payload to specify the field polarities for interlaced source images used for inter or intra operations.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Source Field Polarity
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per
Section 3, Binary Form
indicating the field polarity for the source image.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5729
Result Type
Result
Source Field Polarity
Payload
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL
Update the input payload to specify the field polarities for interlaced reference images used for single reference inter search or check operation.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Reference Field Polarity
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per
Section 3, Binary Form
indicating the field polarity for the reference image.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5730
Result Type
Result
Reference Field Polarity
Payload
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL
Update the input payload to specify the field polarities for interlaced reference images used for dual reference inter search or check operation.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Forward Reference Field Polarity
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per
Section 3, Binary Form
indicating the field polarity for the forward reference image.
Backward Reference Field Polarity
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid field polarity value as per
Section 3, Binary Form
indicating the field polarity for the forward reference image.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5731
Result Type
Result
Forward Reference Field Polarity
Backward Reference Field Polarity
Payload
Result processing phase instructions
These instructions facilitate the extraction of components of the result from VME unit.
OpSubgroupAvcMceGetMotionVectorsINTEL
Get the MCE packed BMVs result.
Up to 16 packed BMVs are returned, one per work-item. If the MCE search operation’s payload was setup for unidirectional search then only the forward packed MV will be valid in each BMV, otherwise both packed MVs will be valid. The BMVs have to be selected by their respective work-items based on the result block major and minor shapes.
If the major shape is:
16x16, then one BMV is returned by work-item 0
16x8, or 8x16, then two BMVs are returned by work-items 0 and 8
8x8, then four sets of BMVs corresponding to the four partitions in traditional Z-order are returned by work-items in the ranges [0, 3], [4, 7], [8, 11], and [12, 15]; the minor shape will determine exactly which work-items in the reserved inclusive range for the partition returns the BMVs for that partition
If the range of work-items for the 8x8 major partition is [n, n+3] and the minor shape is:
8x8, then work-item
returns the BMV for each minor partition
8x4 or 4x8, then work-items
and
n+2
returns the BMVs for each minor partition
4x4, then all work-items in [n, n+3] return the BMVs for each minor partition in traditional Z-order
All sub-block BMVs get replicated for each partition. For example, for a 16x16
partition, all smaller sub-block BMVs are replicated to the same BMV, and for 8x8 partition, each 8x8 must have its respective sub-block BMVs replicated. This
is not important to extract the component BMVs itself, but is needed if the result of this instruction is used to initialize the input motion vectors of a REF initialization instruction.
With interlaced images, the MBs for the top field MBs are considered as logically
overlapping with the bottom MBs.
Result Type
must be an OpTypeInt with 64-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5738
Result Type
Result
Payload
OpSubgroupAvcMceGetInterDistortionsINTEL
Get the MCE inter distortions result corresponding to the BMVs returned by
OpSubgroupAvcMceGetMotionVectorsINTEL
. The MCE inter directions result
returned by
OpSubgroupAvcMceGetInterDirectionsINTEL
will specify if the distortion corresponds to the forward MV, backward MV, or the bidirectional MV in the BMV. Up to 16 distortions are returned, one per work-item.
The distortions have to be selected by their respective work-items based on the result block major and minor shapes just as for the result MVs as described above.
Result Type
must be an OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5739
Result Type
Result
Payload
OpSubgroupAvcMceGetBestInterDistortionsINTEL
Get the best inter distortion for the whole MB.
Result Type
must be an OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5740
Result Type
Result
Payload
OpSubgroupAvcMceGetInterMajorShapeINTEL
Get the MCE inter MB major partition shape.
The returned values are as per the inter-MB major shapes values as per
Section 3, Binary Form
This can only be called as part of an IME or REF operation evaluation.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5741
Result Type
Result
Payload
OpSubgroupAvcMceGetInterMinorShapeINTEL
Get the MCE inter MB minor partition shapes.
It returns a bit field with the minor shapes for the 4 8x8 sub-partitions in traditional Z order. Two bits are reserved for each of the four sub-partitions in row-major order. The returned 2-bit values are as per the inter-MB minor shapes values as per
Section 3, Binary Form
This instruction returns valid results only if the major shape is 8x8, otherwise the results are undefined.
This can only be called as part of an IME or REF operation evaluation.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5742
Result Type
Result
Payload
OpSubgroupAvcMceGetInterDirectionsINTEL
Get the MCE inter MB major partition directions.
It returns a bit field with the direction for up to 4 major sub-partitions in traditional Z order. Two bits are reserved for each of the four sub-partitions. The returned 2-bit values are as per the inter-MB major shape direction values as per
Section 3, Binary Form
If the major partition is:
16x16, then bits in the range [0, 1] contains the direction
16x8 or 8x16, then bits in the ranges [0, 1] and [2,3] contains the two partitions
directions
8x8, then bits in the ranges [0, 1], [2, 3], [4,5], and [6, 7] contains the four partitions directions
The returned values are as per the inter direction values as per
Section 3, Binary Form
This can only be called as part of an IME or REF operation evaluation.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5743
Result Type
Result
Payload
OpSubgroupAvcMceGetInterMotionVectorCountINTEL
Get the count of motion vectors (based on the partitioning decision) returned by the search operation.
This can only be called as part of an IME or REF operation evaluation.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5744
Result Type
Result
Payload
OpSubgroupAvcMceGetInterReferenceIdsINTEL
Get the MCE inter MB reference identifiers in a packed integer format, with the following bits specifying the reference identifiers for the major partitions.
3:0
Fwd reference block 0
7:4
Bwd reference block 0
11:8
Fwd reference block 1
15:12
Bwd reference block 1
19:16
Fwd reference block 2
23:20
Bwd reference block 2
27:24
Fwd reference block 3
31:28
Bwd reference block 3
The values of each individual 4-bit reference identifier range from 0 to 15, with each value identifying the distance of ordered pair of forward/backward reference images as declared in the VME kernel parameter operand list.
If the dual-reference evaluation instructions are not used, then the values of the backward reference identifiers are undefined.
The blocks are numbered using the traditional Z order. For larger block sizes, the
sub-block reference identifier pairs are replicated. For example, for a 16x16 block all
four pairs of reference identifiers are replicated to the value of the first pair for
block 0.
Unless HW assisted multi-reference search was performed using the IME streamin/streamout evaluation instructions, the individual 4-bit reference identifier pair values will all be the same (pointing to the same pair for forward/backward reference
images).
Result Type
must be an OpTypeInt with 32-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5745
Result Type
Result
Payload
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL
Get the MCE inter MB reference field polarities for the corresponding reference identifiers returned by
OpSubgroupAvcMceGetInterReferenceIdsINTEL
in a packed integer format, with the following bits specifying the reference field polarities
for the major partitions.
Fwd reference block 0
Fwd reference block 1
Fwd reference block 2
Fwd reference block 3
Bwd reference block 4
Bwd reference block 5
Bwd reference block 6
Bwd reference block 7
If the dual-reference evaluation instructions are not used, then the values of the backward reference field polarities are undefined.
The blocks are numbered using the traditional Z order. For larger block sizes, the sub-block reference field polarities are replicated. For example, for a 16x16 block all
four pairs of reference field polarities are replicated to the value of the first pair for block 0.
An important restriction is that when multiple IME operations are performed for a
HW multi-assisted multi-reference search operation using the streamin/streamout capabilities, the same reference image parameter cannot be used with different polarities in the sequence of IME operations used for a HW-assisted search
operation. In other words, the field polarities for reference image parameters must be used consistently across IME operations used in a HW assisted multi-reference search
operation.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness.
Packed Reference Ids
must be an OpTypeInt with 32-bit Width and 0 Signedness, and is as defined by the return value of
OpSubgroupAvcMceGetInterReferenceIdsINTEL
Packed Reference Parameter Field Polarities
must be an OpTypeInt with 32-bit Width and 0 Signedness, and specifies the packed bit field of field polarities for each of the (up to 16) forward/backward interleaved pairs of reference images in the same order as specified in the kernel parameter operand list, as used for the inter search operation. If less than 16 pairs are used then the corresponding bit field values are ignored.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5746
Result Type
Result
Packed Reference Ids
Packed Reference Parameter Field Polarities
Payload
IME instructions
A set of ordered phases of instructions are required to be called to evaluate an integer motion estimation result.
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Initialization instructions
These instructions create a properly initialized payload that can be used for further configured for evaluating IME operations. This is a required initial phase.
OpSubgroupAvcImeInitializeINTEL
Return an initialized payload for a VME integer search (IME) operation.
The payload is initialized for progressive frame operations, and the cost configuration values and the miscellaneous property values are all initialized to zero. The cost configuration and the miscellaneous property configuration instructions must be used to override the initial configurations in the payload.
If the source image is an interlaced scan image, then the bottom field lines are considered as logically overlapping with the top field lines (i.e. the top field MBs are considered as logically overlapping with the bottom MBs) for the purposes for specifying the
Src Coord
value.
Result Type
must be the
OpTypeAvcImePayloadINTEL
type.
Src Coord
must be a vector(2) of i16 values and 0 Signedness. It represents the 2D offset of the top left corner of the source MB in pixel units in the source image. Source MBs at the image borders are allowed to be partial, but the top-left corner must be within the image.
Partition Mask
must be an OpTypeInt with 8-bit Width and 0 Signedness. The legal values can be composed by setting the appropriate bit fields specified by partition mask values as per
Section 3, Binary Form
using OpBitwiseAnd.
SAD Adjustment
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid SAD adjustment mode as per
Section 3, Binary Form
. If it is set to
AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL
, a simple wavelet transform, Haar transform, is used to refine the distortion measure of SAD. Haar transform here is used as a coarse estimation of the integer transform.
Capability:
SubgroupAvcMotionEstimationINTEL
5747
Result Type
Result
Src Coord
Partition Mask
SAD Adjustment
Configuration instructions
These instructions allow for configuration of the search window. A call to either
OpSubgroupAvcImeSetSingleReferenceINTEL
or
OpSubgroupAvcImeSetDualReferenceINTEL
is required. This is a required phase immediately following the initialization phase.
OpSubgroupAvcImeSetSingleReferenceINTEL
Update the input payload for a VME single-reference search with the configuration for the reference window search region, and return it.
If the reference image is an interlaced scan image, then the top field lines are considered as logically overlapping with the bottom field lines (i.e. the top field MBs are considered as logically overlapping with the bottom MBs) for the purposes for
specifying the
Ref Offset
value.
Result Type
must be the
OpTypeAvcImePayloadINTEL
type.
Ref Offset
specifies the 2D reference window offset, and must be a vector(2) of i16 values and interpreted as signed values. The X and Y coordinates must be in the range [-2048, 2047], otherwise the results are undefined. The reference window is allowed to be partially outside the image. Pixel replication is applied to generate out-of-bound reference pixels. It is specified in PEL units. Results are undefined in the reference region is completely outside the image.
Search Window Config
must be an OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid unreserved search window configuration value as per
Section 3, Binary Form
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5748
Result Type
Result
Ref Offset
Search Window Config
Payload
OpSubgroupAvcImeSetDualReferenceINTEL
Update the input payload for a VME dual-reference search with the configurations for the
reference window search regions, and return it.
If a reference image is an interlaced scan image, then the top field lines are considered as logically overlapping with the bottom field lines (i.e. the top field MBs are considered as logically overlapping with the bottom MBs) for the purposes for specifying the corresponding
Fwd Ref Offset
and/or
Bwd Ref Offset
values.
Result Type
must be the
OpTypeAvcImePayloadINTEL
type.
Fwd Ref Offset
Bwd Ref Offset
specify the 2D forward/backward reference window offset, and must be a vector(2) of i16 values and interpreted as signed values. The X and Y coordinates must be in the range [-2048, 2047], otherwise the results are undefined. The reference window is allowed to be partially outside the image. Pixel replication is applied to generate out-of-bound reference pixels. It is specified in PEL units. Results are undefined in the reference region is completely outside the image.
Search Window Config
must be an OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid unreserved search window configuration value as per
Section 3, Binary Form
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5749
Result Type
Result
Fwd Ref Offset
Bwd Ref Offset
Search Window Config
Payload
OpSubgroupAvcImeRefWindowSizeINTEL
Get the 2D size of the reference window in pixel units.
Result Type
must be a vector(2) of i16 values and 0 Signedness.
Search Window Config
must be an OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid unreserved search window configuration value as per
Section 3, Binary Form
Dual Ref
must be a 8-bit scalar integer type and must evaluate to zero for a single reference search window and one for a dual-reference search window. It is treated as an unsigned value.
Capability:
SubgroupAvcMotionEstimationINTEL
5750
Result Type
Result
Search Window Config
Dual Ref
OpSubgroupAvcImeAdjustRefOffsetINTEL
If the input 2D reference window offset,
Ref Offset
, causes the reference window to be fully out-of-bound of the reference image, adjust it such that the reference window is
within bounds of the reference image.
If the reference image is an interlaced scan image, then the bottom field lines are considered as logically overlapping with the top field lines the purposes for specifying the image size value. Since, the actual layout of the top and bottom fields in the reference image is in an interleaved fashion, the height of the top or bottom fields should be exactly half of the actual reference image height.
A call to OpSubgroupAvcImeAdjustRefOffsetINTEL is optional. It is required only if the reference window offsets inputs to
OpSubgroupAvcImeSetSingleReferenceINTEL
or
OpSubgroupAvcImeSetDualReferenceINTEL
is potentially out-of-bounds and need to be adjusted.
Result Type
must be a vector(2) of i16 values and interpreted as signed values.
Ref Offset
must be a vector(2) of i16 values and interpreted as signed values. It specifies the 2D reference window offset. The X and Y coordinates must be in the range [-2048, 2047], otherwise the results are undefined.
Src Coord
must be a vector(2) of i16 values and 0 Signedness. It represents the 2D offset of the top left corner of the source MB in pixel units in the source image. Source MBs at the image borders are allowed to be partial, but the top-left corner must be within the image.
Ref Window Size
must be a vector(2) of i16 values and 0 Signedness. It specifies
the 2D size of the reference window in pixel units.
Image Size
must be a vector(2) of i16 values and 0 Signedness. It specifies the 2D
size of the progressive scan, or top or bottom fields, of the interlaced scan image in pixel units.
Capability:
SubgroupAvcMotionEstimationINTEL
5751
Result Type
Result
Ref Offset
Src Coord
Ref Window Size
Image Size
Payload type conversion instructions
These are optional instructions that may be called following the search configuration phase to convert IME payload to MCE payloads and vice-versa.
OpSubgroupAvcImeConvertToMcePayloadINTEL
Convert the IME payload to a generic MCE payload.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5752
Result Type
Result
Payload
OpSubgroupAvcMceConvertToImePayloadINTEL
Convert the generic MCE payload to a IME payload.
Result Type
must be the
OpTypeAvcImePayloadINTEL
type.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5732
Result Type
Result
Payload
Miscellaneous property configuration instructions
These are optional instructions that may be called following the search configuration phase to enable miscellaneous properties setting in the payload.
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL
Specify the maximum number of motion vectors allowed for the current MB. The default setting is 32. Any other value may alter the MB partitioning decision. The IME operation
will compute the best allowed partitioning such that the number of sub-block motion vectors will not exceed
Max Motion Vector Count
This can be used to handle the restriction for certain profiles for AVC in that the maximum number of motion vectors allowed for two consecutive MBs can only be 16.
Result Type
must be the
OpTypeAvcImePayloadINTEL
type.
Max Motion Vector Count
must be an OpTypeInt with 8-bit Width and 0 Signedness, and specifies the maximum number of motion vectors allowed for the current MB. It must be in the range [1, 32], otherwise the results are undefined.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5753
Result Type
Result
Max Motion Vector Count
Payload
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL
Update the input payload to disable a mix of forward and backward MVs in the result.
Default is to enable it.
Result Type
must be the
OpTypeAvcImePayloadINTEL
type.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5754
Result Type
Result
Payload
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL
Specifies the threshold value of a distortion compute of a 16x16 partition of a MB for a
single-reference search, below which no more searching is performed for the MB.
The input payload must have been configured for a single-reference search with the 16x16 partition enabled for this threshold to be set, or else the results are undefined.
Result Type
must be an OpTypeInt with 8-bit Width and 0 Signedness.
Threshold
must be an OpTypeInt with 8-bit Width and 0 Signedness, and is specified in U4U4 format. Additionally, the integer value must fit within 14 bits.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5755
Result Type
Result
Threshold
Payload
OpSubgroupAvcImeSetWeightedSadINTEL
Set the (16) SAD weights for each 4x4 sub-block.
These values are used to decrease the SAD magnitude of each 4x4 sub-block by dividing
the SAD of 4x4 sub-block of the source MB by its mapped weight. It requires a
Partition Mask
of 16x16 and forward
Search Window Configuration
The weighting pattern used is the traditional Z order for each 4x4 block. Weighted-SAD
Control Mapping:
0 1 4 5
2 3 6 7
8 9 C D
A B E F
A prior call to
OpSubgroupAvcImeSetSingleReferenceINTEL
to set up the forward reference image is required.
This feature is mainly intended for improved block matching in image-rate conversion (FRC) kernels.
Packed Sad Weights
must be an OpTypeInt with 32-bit Width and 0 Signedness. Each weight is of 2 bits represented in a packed format for each of the 4x4 blocks in Z order.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5756
Result Type
Result
Packed Sad Weights
Payload
Evaluation instructions
These instructions perform the evaluation of the IME operation configured in the payload with a VME media sampler and return the results.
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL
Evaluate the basic IME operation with a single reference and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetSingleReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5757
Result Type
Result
Src Image
Ref Image
Payload
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL
Evaluate the basic IME operation with dual references and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetDualReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Fwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Bwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a backward reference image.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5758
Result Type
Result
Src Image
Fwd Ref Image
Bwd Ref Image
Payload
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL
Evaluate the single reference IME operation with streamout and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetSingleReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5761
Result Type
Result
Src Image
Ref Image
Payload
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL
Evaluate the basic IME operation with dual references with streamout and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetDualReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultDualReferenceStreamoutINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Fwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Bwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a backward reference image.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5762
Result Type
Result
Src Image
Fwd Ref Image
Bwd Ref Image
Payload
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL
Evaluate the single reference IME operation with streamin and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetSingleReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Streamin Components
must be the
OpTypeAvcImeSingleReferenceStreaminINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5759
Result Type
Result
Src Image
Ref Image
Payload
Streamin Components
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL
Evaluate the dual reference IME operation with streamin and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetDualReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Fwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Bwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a backward reference image.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Streamin Components
must be the
OpTypeAvcImeDualReferenceStreaminINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5760
Result Type
Result
Src Image
Fwd Ref Image
Bwd Ref Image
Payload
Streamin Components
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL
Evaluate the single reference IME operation with streamin/streamout and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetSingleReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.+
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Streamin Components
must be the
OpTypeAvcImeSingleReferenceStreaminINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5763
Result Type
Result
Src Image
Ref Image
Payload
Streamin Components
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL
Evaluate the dual reference IME operation with streamin/streamout and return its results. The IME payload must have been configured with
OpSubgroupAvcImeSetDualReferenceINTEL
Result Type
must be the
OpTypeAvcImeResultDualReferenceStreamoutINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Fwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Bwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a backward reference image.
Payload
must be the
OpTypeAvcImePayloadINTEL
type.
Streamin Components
must be the
OpTypeAvcImeDualReferenceStreaminINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5764
Result Type
Result
Src Image
Fwd Ref Image
Bwd Ref Image
Payload
Streamin Components
Result type conversion instructions
These are optional instructions that may be called following the evaluation phase to convert IME results to MCE results and vice-versa.
OpSubgroupAvcImeConvertToMceResultINTEL
Convert the IME result to a generic MCE result.
Result Type
must be the
OpTypeAvcMceResultINTEL
type.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5765
Result Type
Result
Payload
OpSubgroupAvcMceConvertToImeResultINTEL
Convert the generic MCE result to a IME result.
Result Type
must be the
OpTypeAvcImeResultINTEL
type.
Payload
must be the
OpTypeAvcMceResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5733
Result Type
Result
Payload
Result processing instructions
These instructions are called following the evaluation phase to extract the various result components from an IME evaluation result.
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL
Return the streamed out BMVs and distortions from the input result from a single reference streamout IME operation that can be used as streamin input for a subsequent IME operation.
Result Type
must be the
OpTypeAvcImeSingleReferenceStreaminINTEL
type.
Payload
must be the
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5766
Result Type
Result
Payload
OpSubgroupAvcImeGetDualReferenceStreaminINTEL
Return the streamed out BMVs and distortions from the input result from a dual reference streamout IME operation that can be used as streamin input for a subsequent IME operation.
Result Type
must be the
OpTypeAvcImeDualReferenceStreaminINTEL
type.
Payload
must be the
OpTypeAvcImeResultDualReferenceStreamoutINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5767
Result Type
Result
Payload
OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL
Strip out the single reference streamout BMVs and distortions from the streamout results and return the rest.
Result Type
must be the
OpTypeAvcImeResultINTEL
type.
Payload
must be the
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5768
Result Type
Result
Payload
OpSubgroupAvcImeStripDualReferenceStreamoutINTEL
Strip out the dual reference streamout BMVs and distortions from the streamout results and return the rest.
Result Type
must be the
OpTypeAvcImeResultINTEL
type.
Payload
must be the
OpTypeAvcImeResultDualReferenceStreamoutINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5769
Result Type
Result
Payload
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
Get the packed motion vectors for the input major shape from the IME single reference
streamout results.
Up to 4 packed MVs are returned, one per work-item. If the major shape is:
16x6, then one packed MV is returned by work-item 0
16x8, or 8x16, then two packed MVs are returned by work-items 0 and 1
8x8, then four packed MVs are returned by work-items 0 to 3.
Result Type
must be a OpTypeInt with 32-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
type.
Major Shape
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
5770
Result Type
Result
Payload
Major Shape
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL
Get the packed motion vectors for the input major shape from the IME dual reference
streamout results.
Up to 4 packed MVs are returned, one per work-item in the same format as for motion
vectors for single reference streamout as described in
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
Result Type
must be a OpTypeInt with 32-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultDualReferenceStreamoutINTEL
type.
Major Shape
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per
Section 3, Binary Form
Direction
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major direction value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
5773
Result Type
Result
Payload
Major Shape
Direction
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL
Get the distortions for the input major shape from the IME single reference streamout results.
Up to 4 distortions are returned, one per work-item in the same format as for motion
vectors as described in
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
Result Type
must be a OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
type.
Major Shape
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
5771
Result Type
Result
Payload
Major Shape
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL
Get the distortions for the input major shape from the IME dual reference streamout results.
Up to 4 distortion are returned, one per work-item in the same format as for motion
vectors for single reference streamout as described in
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
Result Type
must be a OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultDualReferenceStreamoutINTEL
type.
Major Shape
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per
Section 3, Binary Form
Direction
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major direction value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
5774
Result Type
Result
Payload
Major Shape
Direction
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL
Get the reference identifiers for the input major shape and direction from the IME dual reference streamout results
Up to 4 reference identifiers are returned, one per work-item in the same format as for motion
vectors as described in
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
Result Type
must be a OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultSingleReferenceStreamoutINTEL
type.
Major Shape
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
5772
Result Type
Result
Payload
Major Shape
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL
Get the reference identifiers for the input major shape from the IME dual reference streamout results.
Up to 4 reference identifiers are returned, one per work-item in the same format as for motion vectors for single reference streamout as described in
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL
Result Type
must be a OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultDualReferenceStreamoutINTEL
type.
Major Shape
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major shape value as per
Section 3, Binary Form
Direction
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is a valid inter macro-block major direction value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
5775
Result Type
Result
Payload
Major Shape
Direction
OpSubgroupAvcImeGetBorderReachedINTEL
Get the bitmask indicating whether any border of forward/backward reference image is reached by one or more MVs in the winning inter shape. The bitmask values are as per the inter border reached values as per
Section 3, Binary Form
The search window must have been configured for a forward reference if image_select is
set as
AVC_ME_FRAME_FORWARD_INTEL
and with a backward reference if image_select is set as
AVC_ME_FRAME_BACKWARD_INTEL
Result Type
must be a OpTypeInt with 8-bit Width and 0 Signedness.
Image Select
must be a OpTypeInt with 8-bit Width and 0 Signedness, and must come from a constant instruction of an integer-type scalar whose value is either
AVC_ME_FRAME_FORWARD_INTEL
or
AVC_ME_FRAME_BACKWARD_INTEL
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5776
Result Type
Result
Image Select
Payload
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL
Get the indication that the search operation was prevented from providing the lowest
distortion solution due to the tighter constraints on the maximum number of MB motion
vectors configured for the search operation.
Result Type
must be a OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5777
Result Type
Result
Payload
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL
Get the indication that unidirectional search operation terminated early because the configured distortion threshold was met.
Result Type
must be a OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5778
Result Type
Result
Payload
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL
Get the 16x16 motion vector corresponding to the minimum 16x16 distortion when applying
the traditional Z-order SAD weighting pattern.
This can only be called if a SAD weighting pattern was set prior to evaluation using
OpSubgroupAvcImeSetWeightedSadINTEL
Result Type
must be a OpTypeInt with 32-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5779
Result Type
Result
Payload
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL
Get the minimum 16x16 distortion when applying the traditional Z-order SAD weighting pattern.
Result Type
must be a OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcImeResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5780
Result Type
Result
Payload
REF instructions
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Initialization instructions
These instructions create a properly initialized payload that can be used for further configured for evaluating REF operations. This is a required initial phase. A call to either
OpSubgroupAvcFmeInitializeINTEL
or
OpSubgroupAvcBmeInitializeINTEL
is required.
OpSubgroupAvcFmeInitializeINTEL
Return an initialized payload for a VME fractional motion estimation operation (FME).
The payload is initialized for progressive frame operations, and the cost configuration
values and the miscellaneous property values are all initialized to zero. The cost configuration and the miscellaneous property configuration instructions must be used to override the initial configurations in the payload.
Result Type
must be the
OpTypeAvcRefPayloadINTEL
type.
Src Coord
must be a vector(2) of i16 values and 0 Signedness, and represents the 2D offset of the top left corner of the source MB in pixel units in the source image.
If the source image is an interlaced scan image, then the bottom field lines are considered as logically overlapping with the top field lines (i.e. the top field MBs are considered as logically overlapping with the bottom MBs) for the purposes for specifying
the
Src Coord
value.
Motion Vectors
must be an OpTypeInt with 64-bit Width and 0 Signedness. It represents the BMVs returned by an IME in the same format as
returned by
OpSubgroupAvcMceGetMotionVectorsINTEL
. The MVs are in QPEL units. The X and Y coordinates of each MV must be in the range [-2048.00, 2047.75), otherwise the results are undefined.
If this operand’s value is manually composed, all sub-block MVs must be replicated per its format for each partition. For example for 16x16 partition, all sub-block MVs must be replicated to the same MV, and for 8x8 partition, each 8x8 must have its respective sub-block MVs replicated.
Major Shapes
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of
OpSubgroupAvcMceGetInterMajorShapeINTEL
Minor Shapes
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of
OpSubgroupAvcMceGetInterMajorShapeINTEL
Directions
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of
OpSubgroupAvcMceGetInterDirectionsINTEL
Pixel Resolution
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values for it are either
AVC_ME_SUBPIXEL_MODE_HPEL_INTEL
or
AVC_ME_SUBPIXEL_MODE_QPEL_INTEL
Sad Adjustment
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
10
5781
Result Type
Result
Src Coord
Motion Vectors
Major Shapes
Minor Shapes
Direction
Pixel Resolution
Sad Adjustment
OpSubgroupAvcBmeInitializeINTEL
Return an initialized payload for a VME bidirectional motion estimation (BME) operation.
The payload is initialized for progressive frame operations, and the cost configuration
values and the miscellaneous property values are all initialized to zero. The cost configuration and the miscellaneous property configuration instructions must be used to override the initial configurations in the payload.
Result Type
must be the
OpTypeAvcRefPayloadINTEL
type.
Src Coord
must be a vector(2) of i16 values and 0 Signedness, and represents the 2D offset of the top left corner of the source MB in pixel units in the source image.
If the source image is an interlaced scan image, then the bottom field lines are considered as logically overlapping with the top field lines (i.e. the top field MBs are considered as logically overlapping with the bottom MBs) for the purposes for specifying
the
Src Coord
value.
Motion Vectors
must be an OpTypeInt with 64-bit Width and 0 Signedness. It represents the BMVs returned by an IME in the same format as
returned by
OpSubgroupAvcMceGetMotionVectorsINTEL
. The MVs are in QPEL units. The X and Y coordinates of each MV must be in the range [-2048.00, 2047.75), otherwise the results are undefined.
If this operand’s value is manually composed, all sub-block MVs must be replicated per its format for each partition. For example for 16x16 partition, all sub-block MVs must be replicated to the same MV, and for 8x8 partition, each 8x8 must have its respective sub-block MVs replicated.
Major Shapes
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of
OpSubgroupAvcMceGetInterMajorShapeINTEL
Minor Shapes
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of
OpSubgroupAvcMceGetInterMajorShapeINTEL
Directions
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values and format for it are as per the return value of
OpSubgroupAvcMceGetInterDirectionsINTEL
Pixel Resolution
must be an OpTypeInt with 8-bit Width and 0 Signedness. Legal values for it are either
AVC_ME_SUBPIXEL_MODE_HPEL_INTEL
or
AVC_ME_SUBPIXEL_MODE_QPEL_INTEL
Bidirectional Weight
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid bidirectional weight value as per
Section 3, Binary Form
Sad Adjustment
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
11
5782
Result Type
Result
Src Coord
Motion Vectors
Major Shapes
Minor Shapes
Direction
Pixel Resolution
Bidirectional Weight
Sad Adjustment
Payload type conversion instructions
These are optional instructions that may be called following the initialization phase to convert REF payload to MCE payloads and vice-versa.
OpSubgroupAvcRefConvertToMcePayloadINTEL
Convert the REF payload to a generic MCE payload.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Payload
must be the
OpTypeAvcRefPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5783
Result Type
Result
Payload
OpSubgroupAvcMceConvertToRefPayloadINTEL
Convert the generic MCE payload to a REF payload.
Result Type
must be the
OpTypeAvcRefPayloadINTEL
type.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5734
Result Type
Result
Payload
Miscellaneous property configuration instructions
These are optional instructions that may be called following the initialization phase to enable miscellaneous properties setting in the payload.
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL
Update the input payload to disable a mix of bidirectional and unidirectional MVs in the result.
Default is to enable it.
Result Type
must be the
OpTypeAvcRefPayloadINTEL
type.
Payload
must be the
OpTypeAvcRefPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5784
Result Type
Result
Payload
OpSubgroupAvcRefSetBilinearFilterEnableINTEL
Update the input payload to do enable bilinear filter interpolation instead of 4-tap
filter interpolation. Default is 4-tap filter interpolation.
This should not be called if the payload was initialized with integer pixel resolution.
Default is to enable it.
Result Type
must be the
OpTypeAvcRefPayloadINTEL
type.
Payload
must be the
OpTypeAvcRefPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5785
Result Type
Result
Payload
Evaluation instructions
These instructions perform the evaluation of the REF operation configured in the payload with a VME media sampler and return the results.
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL
Evaluate the basic REF operation with a single reference and return its results.
Result Type
must be the
OpTypeAvcRefResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Payload
must be the
OpTypeAvcRefPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5786
Result Type
Result
Src Image
Ref Image
Payload
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL
Evaluate the basic REF operation with dual references and return its results.
Result Type
must be the
OpTypeAvcRefResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Fwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Bwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a backward reference image.
Payload
must be the
OpTypeAvcRefPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5787
Result Type
Result
Src Image
Fwd Ref Image
Bwd Ref Image
Payload
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL
Evaluate the basic REF operation with multi references and return its results.
Result Type
must be the
OpTypeAvcRefResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Packed Reference Ids
must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
3:0
Fwd reference block 0
7:4
Bwd reference block 0
11:8
Fwd reference block 1
15:12
Bwd reference block 1
19:16
Fwd reference block 2
23:20
Bwd reference block 2
27:24
Fwd reference block 3
31:28
Bwd reference block 3
A forward[backward] reference identifier value of
indicates the forward[backward]
image from the
th
pair of forward/backward reference images, with the value of
ranging from 0 to 15.
If the REF operation is configured with only forward reference images then, the
values of the backward reference identifiers are not used.
The blocks are numbered using the traditional Z order. For larger block sizes, the
sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair
for block 0.
The value for the
Packed Reference Ids
is typically obtained by calling
OpSubgroupAvcMceGetInterReferenceIdsINTEL
for the preceding IME operation’s result.
Payload
must be the
OpTypeAvcRefPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5788
Result Type
Result
Src Image
Packed Reference Ids
Payload
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL
Evaluate the basic REF operation with multi references and return its results. This
is used for interlaced source and reference images.
Result Type
must be the
OpTypeAvcRefResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Packed Reference Ids
must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
3:0
Fwd reference block 0
7:4
Bwd reference block 0
11:8
Fwd reference block 1
15:12
Bwd reference block 1
19:16
Fwd reference block 2
23:20
Bwd reference block 2
27:24
Fwd reference block 3
31:28
Bwd reference block 3
A forward[backward] reference identifier value of
indicates the forward[backward]
image from the
th
pair of forward/backward reference images, with the value of
ranging from 0 to 15.
If the REF operation is configured with only forward reference images then, the
values of the backward reference identifiers are not used.
The blocks are numbered using the traditional Z order. For larger block sizes, the
sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair
for block 0.
The value for the
Packed Reference Ids
is typically obtained by calling
OpSubgroupAvcMceGetInterReferenceIdsINTEL
for the preceding IME operation’s result.
Packed Reference Field Polarities
must be an OpTypeInt with 8-bit Width and 0 Signedness. Reference field polarities for forward and backward reference images are specified for each of the allowed major partitions using it, with the following bits specifying the reference field polarities for the major partitions.
Fwd reference block 0
Fwd reference block 1
Fwd reference block 2
Fwd reference block 3
Bwd reference block 0
Bwd reference block 1
Bwd reference block 2
Bwd reference block 3
If the dual-reference evaluation instructions are not used, then the values of the
backward reference field polarities are not used.
The blocks are numbered using the traditional Z order. For larger block sizes, the
sub-block reference field polarities are replicated. For example, for a 16x16 block all
four pairs of reference field polarities are replicated to the value of the first pair for block 0.
Payload
must be the
OpTypeAvcRefPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5789
Result Type
Result
Src Image
Packed Reference Ids
Packed Reference Field Polarities
Payload
Result type conversion instructions
These are optional instructions that may be called following the evaluation phase to convert REF results to MCE results and vice-versa.
OpSubgroupAvcRefConvertToMceResultINTEL
Convert the REF result to a generic MCE result.
Result Type
must be the
OpTypeAvcMceResultINTEL
type.
Payload
must be the
OpTypeAvcRefResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5790
Result Type
Result
Payload
OpSubgroupAvcMceConvertToRefResultINTEL
Convert the generic MCE result to a REF result.
Result Type
must be the
OpTypeAvcRefResultINTEL
type.
Payload
must be the
OpTypeAvcMceResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5735
Result Type
Result
Payload
SIC instructions
These instruction are only guaranteed to work correctly if placed strictly within uniform control flow within the Subgroup execution scope. This ensures that if any invocation executes it, all invocations will execute it. If placed elsewhere, the results are undefined.
Initialization instructions
These instructions create a properly initialized payload that can be used for further configured for evaluating SIC operations. This is a required initial phase.
OpSubgroupAvcSicInitializeINTEL
Return an initialized payload for a VME SIC operation.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Src Coord
must be a vector(2) of i16 values and 0 Signedness. It represents the 2D offset of the top left corner of the source MB in pixel units in the source image. Source MBs at the image borders are allowed to be partial, but the top-left corner must be within the image.
If the source image is an interlaced scan image, then the bottom field lines are
considered as logically overlapping with the top field lines (i.e. the top field MBs
are considered as logically overlapping with the bottom MBs) for the purposes for specifying the
Src Coord
value.
If the SIC operation is being configured for chroma based intra estimation, then the x and y coordinates of
Src Coord
must be multiples of 2.
Capability:
SubgroupAvcMotionEstimationINTEL
5791
Result Type
Result
Src Coord
Configuration instructions
OpSubgroupAvcSicConfigureSkcINTEL
Configure the SIC payload for (uni or bi-directional) skip checks.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Skip Block Partition Type
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to one of the specified partition mask values as per
Section 3, Binary Form
Skip Motion Vector Mask
must be an OpTypeInt with 32-bit Width and 0 Signedness. Legal values for it can be composed using the OpBitwiseOr instruction from the values defined for it as per
Section 3, Binary Form
; both unidirectional and bidirectional skip vectors can be specified uniquely for each major partition (16x16 or 8x8) by an appropriate selection of the skip motion vector mask enumeration values. If the 16x16
Skip Block Partition Type
is specified, then only the 16x16 enumeration values may be used, else only the 8x8 enumeration values may be used.
The instruction
OpSubgroupAvcSicGetMotionVectorMask
may be used to set this operand’s value.
Motion Vectors
must be an OpTypeInt with 64-bit Width and 0 Signedness, and specifies the input packed BMVs. Either the forward or backward is ignored if the setting in
Skip Motion Vector Mask
is backward or forward respectively. If the setting is bidirectional, then both the forward and backward motion vectors will be used. If the
Skip Block Partition Type
is 16x16, work-item 0 in the subgroup provides the BMV, and if the
Skip Block Partition Type
is 8x8, work-items 0 to 4 in the subgroup provide the four BMVs. The MVs are in QPEL units. The X and Y coordinates of each MV must be in the range [-2048.00, 2047.75] and [-512.00 to 511.75] respectively, otherwise the results are undefined.
Bidirectional Weight
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid bidirectional weight value as per
Section 3, Binary Form
. If the setting is unidirectional, then the this parameter value is ignored and can be set to the value
Sad Adjustment
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL
5792
Result Type
Result
Skip Block Partition Type
Skip Motion Vector Mask
Motion Vectors
Bidirectional Weight
Sad Adjustment
Payload
OpSubgroupAvcSicConfigureIpeLumaINTEL
Return an initialized payload for a VME luma intra prediction estimation (IPE) operation.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Luma Intra Partition Mask
must be an OpTypeInt with 8-bit Width and 0 Signedness, which can be composed from their respective values as per
Section 3, Binary Form
using the OpBitwiseAnd instruction.
Intra Neighbour Availabilty
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid intra neighbour availabilty value as per
Section 3, Binary Form
Left Edge Luma Pixels
Upper Left Corner Luma Pixel
Upper Edge Luma Pixels
Upper Right Edge Luma Pixels
must be an OpTypeInt with 8-bit Width and 0 Signedness, and specify the neighbor edge pixels for the left, top-left corner, top
and top right edges with each work-item providing each pixel value. These pixels values are used to perform the intra mode estimation.
For the left and top edge pixels, successive subgroup work-items 0 to 15 provide the
successive edge pixels. For the top-right edge, successive work-items 0 to 7 provide the
successive edge pixels; the pixel values in work-items 8 to 15 are ignored. The top-left
corner pixel is a uniform pixel value with each work-item providing the same corner pixel.
Sad Adjustment
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
11
5793
Result Type
Result
Luma Intra Partition Mask
Intra Neighbour Availabilty
Left Edge Luma Pixels
Upper Left Corner Luma Pixel
Upper Edge Luma Pixels
Upper Right Edge Luma Pixels
Sad Adjustment
Payload
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL
Return an initialized payload for a VME luma and chroma intra prediction estimation (IPE) operation.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Luma Intra Partition Mask
must be an OpTypeInt with 8-bit Width and 0 Signedness, which can be composed from their respective values as per
Section 3, Binary Form
using the OpBitwiseAnd instruction.
Intra Neighbour Availabilty
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid intra neighbour availabilty value as per
Section 3, Binary Form
Left Edge Luma Pixels
Upper Left Corner Luma Pixel
Upper Edge Luma Pixels
Upper Right Edge Luma Pixels
Left Edge Chroma Pixels
Upper Left Corner Chroma Pixel
Upper Edge Chroma Pixels
must be an OpTypeInt with 8-bit Width and 0 Signedness, and specify the neighbor luma and chroma edge pixels for the left, top-left corner, top and top-right (luma only) edges with each work-item providing each pixel value. These pixels values are used to perform the intra mode estimation.
For the left and top edge pixels, successive subgroup work-items 0 to 15 provide the
successive edge pixels. For the top-right edge, successive work-items 0 to 7 provide the
successive edge pixels; the pixel values in work-items 8 to 15 are ignored. The top-left
corner pixel is a uniform pixel value with each work-item providing the same corner pixel.
For the left and top chroma CbCr pixels, successive subgroup work-items 0 to 7 provide the successive CbCr pixels; the pixel values in work-items 8 to 15 are ignored. The top-left corner pixel is a uniform CbCr pixel value with each work-item providing the same corner CbCr pixel.
Sad Adjustment
must be an OpTypeInt with 8-bit Width and 0 Signedness that must evaluate to a valid sad adjustment value as per
Section 3, Binary Form
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
14
5794
Result Type
Result
Luma Intra Partition Mask
Intra Neighbour Availabilty
Left Edge Luma Pixels
Upper Left Corner Luma Pixel
Upper Edge Luma Pixels
Upper Right Edge Luma Pixels
Left Edge Chroma Pixels
Upper Left Corner Chroma Pixel
Upper Edge Chroma Pixels
Sad Adjustment
Payload
OpSubgroupAvcSicGetMotionVectorMaskINTEL
Compose the value for the input argument
Skip Motion Vector Mask
for the
input
Skip Block Partition Type
and direction.
Result Type
must be an OpTypeInt with 32-bit Width and 0 Signedness.
Skip Block Partition Type
must be an OpTypeInt with 32-bit Width and 0 Signedness, which must evaluate to valid partition mask values for either 16x16 or 8x8 as per
Section 3, Binary Form
Direction
must be an OpTypeInt with 8-bit Width and 0 Signedness. It is a bit field with the directions for the 4 8x8 sub-partitions in traditional Z order, or for only the 16x16 partition. Two bits are reserved for each of the four sub-partitions in row-major order. The 2-bit values are as per the inter macro-block major direction values. If the
Skip Block Partition Type
indicates a 16x16 shape, then only the 1
st
2 bits contains the direction, and other bits must be zeroed.
Capability:
SubgroupAvcMotionEstimationINTEL
5795
Result Type
Result
Skip Block Partition Type
Direction
Payload type conversion instructions
These are optional instructions that may be called following the search configuration phase to convert SIC payload to MCE payloads and vice-versa.
OpSubgroupAvcSicConvertToMcePayloadINTEL
Convert the SIC payload to a generic MCE payload.
Result Type
must be the
OpTypeAvcMcePayloadINTEL
type.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5796
Result Type
Result
Payload
OpSubgroupAvcMceConvertToSicPayloadINTEL
Convert the generic MCE payload to a SIC payload.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Payload
must be the
OpTypeAvcMcePayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5736
Result Type
Result
Payload
Intra shape cost configuration instructions
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL
Set the shape penalty for inter motion estimation.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Packed Shape Penalty
must be a 32-bit scalar integer type. It is treated as an unsigned value. The following bits specify the shape penalty in U4U4 format:
7:0
Must be zero
15:8
16x16
23:16
8x8
31:24
4x4
The U4U4 decoded integer values for each of the bytes must fit within 12 bits.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5797
Result Type
Result
Packed Shape Penalty
Payload
Intra mode cost configuration instructions
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL
Update the payload to configure the luma mode cost function to be applied to the computed luma mode for SIC intra operations.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Luma Mode Penalty
specifies the penalty to be applied to the estimated luma mode if it differs from its predicted luma mode (based on its neighbor intra modes). It is specified in U4U4 format and must bit in 10 bits.
Luma Packed Neighbor Modes
specifies the values of the already computed top and left neighbor modes for the bordering 4x4 blocks, with the 4x4 blocks numbered in the traditional Z-order as shown
below.
0 1 4 5
2 3 6 7
8 9 C D
A B E F
The following bits specify the neighbor modes.
3:0
Left neighbor block 5
7:4
Left neighbor block 7
11:8
Left neighbor block D
15:12
Left neighbor block F
19:16
Top neighbor block A
23:20
Top neighbor block B
27:24
Top neighbor block E
31:28
Top neighbor block F
Luma Packed Non Dc Penalty
specifies the penalty to be applied for any computed non-DC luma mode for each of the 16x16, 8x8, and 4x4 shapes, with the following bits specifying the penalties.
7:0
Intra16x16
15:8
Intra8x8
23:16
Intra4x4
31:24
Must be zero
The component byte values are specified in 8-bit integer format.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
The intra distortion for each intra luma block can be described by the following formulas:
Intra_4x4_SAD(or Haar) +
Luma_Shape_Penalty_4x4 +
Luma_Non_Dc_4x4_Penalty(if not DC) +
Luma_Mode_Penalty(if computed mode is not
the same predicted mode from neighbor modes)

Intra_8x8_SAD(or Haar) +
Luma_Shape_Penalty_8x8 +
Luma_Non_Dc_8x8_Penalty(if not DC) +
Luma_Mode_Penalty(if computed mode is not
the same predicted mode from neighbor modes)
end{gather}

Intra_16x16_SAD(or Haar) +
Luma_Shape_Penalty_16x16 +
Luma_Non_Dc_16x16_Penalty(if not DC)
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5798
Result Type
Result
Luma Mode Penalty
Luma Packed Neighbor Modes
Luma Packed Non Dc Penalty
Payload
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL
Update the payload to configure the intra chroma mode cost function by specifying the penalty to be applied to the computed chroma mode for SIC intra operations.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Chroma Mode Base Penalty
is the base penalty to be applied to the computed intra chroma modes. This penalty is in U4U4 format.
The U4U4 decoded integer value must fit in 12 bits.
The base penalty is scaled based on the computed mode as defined below.
DC
0x
HORZ
1x
VERT
1x
PLANE
2x
The component byte values are specified in 8-bit integer format.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
The intra distortion for each intra 8x8 chroma block can be described by the following
formula:
Distortion =
SAD(or Haar) +
Chroma_Mode_Base_Penalty
(scaled based on computed mode)
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
5799
Result Type
Result
Chroma Mode Base Penalty
Payload
Miscellaneous property configuration instructions
These are optional instructions that may be called following the configuration phase to enable miscellaneous properties setting in the payload.
OpSubgroupAvcSicSetBilinearFilterEnableINTEL
Update the input payload to do enable bilinear filter interpolation instead of 4-tap
filter interpolation. Default is 4-tap filter interpolation.
This should not be called if the payload was initialized with integer pixel resolution.
Default is to enable it.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5800
Result Type
Result
Payload
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL
Enable skip check forward transform with the specified SAD coefficients thresholds in
the frequency domain to approximate the effects of forward quantization.
The skip decision will be enhanced to include an accurate AVC forward transform for skip
estimation. This feature is in addition to the previous SAD or HAAR skip estimation. The
results of the forward transform are compared one coefficient at a time against a
user-specified threshold, in the input argument packed_sad_coefficients, to
emulate quantization’s zeroing effect. The user is returned the count of coefficients that exceeded their threshold along with a sum of the amount exceeded, both grouped at the 8x8 block level (i.e. for each 8x8 block).
This is valid only for SKC operations.
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Packed Sad Coefficients
must be an OpTypeInt with 64-bit Width and 0 Signedness, and spoecifies the SAD coefficient threshold matrix. The SAD coefficient threshold matrix for a 4x4 transform as shown in the table below is packed into a 64-bit integer. The low 16 bits contains the larger DC threshold. The coefficient thresholds for the remaining 6 AC thresholds in the order of increasing frequency are provided by the successive 8-bit bit ranges.
0 (DC)
1 (AC)
2 (AC)
3 (AC)
1 (AC)
2 (AC)
3 (AC)
4 (AC)
2 (AC)
3 (AC)
4 (AC)
5 (AC)
3 (AC)
4 (AC)
5 (AC)
6 (AC)
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5801
Result Type
Result
Packed Sad Coefficients
Payload
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL
The raw skip SAD computed during the evaluation phase will be the maximal SAD of individual 4x4 (or 8x8) blocks, instead of the sum of the entire individual 4x4 block
SADs of the MB.
It is valid to call this function only if the payload is configured for a skip check
operation by a prior call to [blue]#
OpSubgroupAvcSicConfigureSkcINTEL
Result Type
must be the
OpTypeAvcSicPayloadINTEL
type.
Block Based Skip Type
must be an OpTypeInt with 8-bit Width and 0 Signedness, that must evaluate to a valid block based skip type value as per
Section 3, Binary Form
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5802
Result Type
Result
Block Based Skip Type
Payload
Evaluation instructions
These instructions perform the evaluation of the SIC operation configured in the payload with a VME media sampler and return the results.
OpSubgroupAvcSicEvaluateIpeINTEL
Evaluate the SIC IPE operation and return its results.
Result Type
must be the
OpTypeAvcSicResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5803
Result Type
Result
Src Image
Payload
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL
Evaluate the SIC operation with single reference and return its results.
Result Type
must be the
OpTypeAvcSicResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5804
Result Type
Result
Src Image
Ref Image
Payload
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL
Evaluate the SIC operation with dual references and return its results.
Result Type
must be the
OpTypeAvcSicResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Fwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a forward reference image.
Bwd Ref Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies a backward reference image.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5805
Result Type
Result
Src Image
Fwd Ref Image
Bwd Ref Image
Payload
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL
Evaluate the SIC operation with multi references and return its results.
Result Type
must be the
OpTypeAvcSicResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Packed Reference Ids
must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
3:0
Fwd reference block 0
7:4
Bwd reference block 0
11:8
Fwd reference block 1
15:12
Bwd reference block 1
19:16
Fwd reference block 2
23:20
Bwd reference block 2
27:24
Fwd reference block 3
31:28
Bwd reference block 3
A forward[backward] reference identifier value of
indicates the forward[backward]
image from the
th
pair of forward/backward reference images, with the value of
ranging from 0 to 15.
If the SIC operation is configured with only forward reference images then, the
values of the backward reference identifiers are not used.
The blocks are numbered using the traditional Z order. For larger block sizes, the
sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair
for block 0.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5806
Result Type
Result
Src Image
Packed Reference Ids
Payload
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL
Evaluate the SIC operation with multi references and return its results. This is used for interlaced source and reference images.
Result Type
must be the
OpTypeAvcSicResultINTEL
type.
Src Image
is an object whose type is an
OpTypeVmeImageINTEL
, and specifies the source image.
Packed Reference Ids
must be an OpTypeInt with 32-bit Width and 0 Signedness, with the following bits specifying the values for the pair of reference images for each major partition.
3:0
Fwd reference block 0
7:4
Bwd reference block 0
11:8
Fwd reference block 1
15:12
Bwd reference block 1
19:16
Fwd reference block 2
23:20
Bwd reference block 2
27:24
Fwd reference block 3
31:28
Bwd reference block 3
A forward[backward] reference identifier value of
indicates the forward[backward]
image from the
th
pair of forward/backward reference images, with the value of
ranging from 0 to 15.
If the SIC operation is configured with only forward reference images then, the
values of the backward reference identifiers are not used.
The blocks are numbered using the traditional Z order. For larger block sizes, the
sub-block reference identifier pairs must be replicated. For example, for a 16x16 block, all four pair of reference identifiers must be replicated to the value of the first pair
for block 0.
The value for the
Packed Reference Ids
is typically obtained by calling
OpSubgroupAvcMceGetInterSicerenceIdsINTEL
for the preceding IME operation’s result.
Packed Reference Field Polarities
must be an OpTypeInt with 8-bit Width and 0 Signedness. Reference field polarities for forward and backward reference images are specified for each of the allowed major partitions using it, with the following bits specifying the reference field polarities for the major partitions.
Fwd reference block 0
Fwd reference block 1
Fwd reference block 2
Fwd reference block 3
Bwd reference block 0
Bwd reference block 1
Bwd reference block 2
Bwd reference block 3
If the dual-reference evaluation instructions are not used, then the values of the
backward reference field polarities are not used.
The blocks are numbered using the traditional Z order. For larger block sizes, the
sub-block reference field polarities are replicated. For example, for a 16x16 block all
four pairs of reference field polarities are replicated to the value of the first pair for block 0.
Payload
must be the
OpTypeAvcSicPayloadINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5807
Result Type
Result
Src Image
Packed Reference Ids
Packed Reference Field Polarities
Payload
Result type conversion instructions
These are optional instructions that may be called following the evaluation phase to convert SIC results to MCE results and vice-versa.
OpSubgroupAvcSicConvertToMceResultINTEL
Convert the SIC result to a generic MCE result.
Result Type
must be the
OpTypeAvcMceResultINTEL
type.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5808
Result Type
Result
Payload
OpSubgroupAvcMceConvertToSicResultINTEL
Convert the generic MCE result to a SIC result.
Result Type
must be the
OpTypeAvcSicResultINTEL
type.
Payload
must be the
OpTypeAvcMceResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5737
Result Type
Result
Payload
Result processing instructions
These instructions are called following the evaluation phase to extract the various result components from an SIC evaluation result.
OpSubgroupAvcSicGetIpeLumaShapeINTEL
Return the best intra shape from the SIC result.
The returned values are valid intra-MB shapes as per
Section 3, Binary Form
Result Type
must be a OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5809
Result Type
Result
Payload
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL
Return the best intra luma distortion for the shape return by
OpSubgroupAvcSicGetIpeLumaShapeINTEL
from the SIC result.
Result Type
must be a OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5810
Result Type
Result
Payload
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL
Return the best intra chroma distortion for the 8x8 shape from the SIC result.
Result Type
must be a OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5811
Result Type
Result
Payload
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL
Return the packed intra luma modes for all blocks from the SIC result.
There are four bits per
luma mode for a block and legal values are valid intra luma modes as per
Section 3, Binary Form
The number of blocks is based on the result of
OpSubgroupAvcSicGetIpeLumaShapeINTEL
If the luma shape is:
16x16, then one mode is returned in bits [0, 3]
8x8, then four modes corresponding to the four partitions are returned by bits in the ranges [0, 3], [16,19], [32, 35], and [48, 51]; the order of the four partitions are in the traditional Z-order
4x4, then 16 modes (4 bits per mode) are returned of all 16 partitions by all the bits; the order of the 16 partitions are in the traditional Z-order as shown below:
0 1 4 5
2 3 6 7
8 9 C D
A B E F
Result Type
must be a OpTypeInt with 64-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5812
Result Type
Result
Payload
OpSubgroupAvcSicGetIpeChromaModeINTEL
Return the intra chroma mode for the 8x8 block from the SIC result.
The returned values are valid intra chroma modes as per
Section 3, Binary Form
Result Type
must be a OpTypeInt with 8-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationChromaINTEL
5813
Result Type
Result
Payload
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL
Return the packed count of luma coefficient components that exceeded their transform thresholds from the SIC result for each 8x8 partition in traditional Z-order.
The format of the results is as follows:
count of coefficients that exceeded their respective threshold for block 8x8_0 is returned in bit [0, 7]
count of coefficients that exceeded their respective threshold for block 8x8_1 is returned in bit [8, 15]
count of coefficients that exceeded their respective threshold for block 8x8_2 is returned in bit [16, 23]
count of coefficients that exceeded their respective threshold for block 8x8_0 is returned in bit [24, 31]
The results are only valid if the SIC operation was configured with frequency domain SAD transform coefficients using
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL
Result Type
must be a OpTypeInt with 32-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5814
Result Type
Result
Payload
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL
Return the packed sum of luma coefficient components that exceeded their transform thresholds from the SIC result for each 8x8 partition in traditional Z-order.
The format of the results is as follows:
sum of coefficients that exceeded their respective threshold for block 8x8_0 is returned in bit [0, 15]
sum of coefficients that exceeded their respective threshold for block 8x8_1 is returned in bit [16,31]
sum of coefficients that exceeded their respective threshold for block 8x8_2 is returned in bit [32,47]
sum of coefficients that exceeded their respective threshold for block 8x8_0 is returned in bit [48, 63]
The results are only valid if the SIC operation was configured with frequency domain SAD transform coefficients using
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL
Result Type
must be a OpTypeInt with 64-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL, SubgroupAvcMotionEstimationIntraINTEL
5815
Result Type
Result
Payload
OpSubgroupAvcSicGetInterRawSadsINTEL
Return the skip check raw SAD (i.e. without any mode or shape costs included) for the entire MB if the input payload was note configured for block based skip checks, otherwise return the maximal SAD of individual 4x4 (or 8x8, if the block size for block based skip checking was configured as 8x8) blocks with the MB.
Result Type
must be a OpTypeInt with 16-bit Width and 0 Signedness.
Payload
must be the
OpTypeAvcSicResultINTEL
type.
Capability:
SubgroupAvcMotionEstimationINTEL
5816
Result Type
Result
Payload
Validation Rules
Modify Section
2.16.1
Universal Validation Rules
, adding the following under the "Data Rules" bullet:
All
OpVmeImageINTEL
instructions must be in the same block in which their Result are consumed. Result from OpVmeImageINTEL instructions must not appear as operands to OpPhi instructions or OpSelect instructions, or any instructions other than the image lookup and query instructions specified to take an operand whose type is OpTypeVmeImageINTEL.
Issues
None.
Revision History
Rev
Date
Author
Changes
2018-10-29
Biju George
Initial version