1*ba62d9d3SAndroid Build Coastguard Worker# Media Features Summary 2*ba62d9d3SAndroid Build Coastguard Worker 3*ba62d9d3SAndroid Build Coastguard Worker## Supported Decoding Output Format and Max Resolution 4*ba62d9d3SAndroid Build Coastguard WorkerNote: Before vaapi version(1.9.0), media driver only allow to create 16bit surface for 12bit bitstream decoding, padding bits will be filled with 0 by hardware. After 1.9.0 vaapi version, media driver is supported to create both 12bit and 16bit surface for 12bit bitstream decoding. 5*ba62d9d3SAndroid Build Coastguard Worker 6*ba62d9d3SAndroid Build Coastguard Worker| Codec | Type | BMG | LNL | MTLx | DG2/ATSM | DG1/SG1 | TGLx | ICL | KBLx | BXTx | SKL | BDW | 7*ba62d9d3SAndroid Build Coastguard Worker|------------|--------- |----------------|----------------|----------------|----------------|----------------|----------------|----------------|------|------|------|------| 8*ba62d9d3SAndroid Build Coastguard Worker| AVC | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | 9*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 10*ba62d9d3SAndroid Build Coastguard Worker| MPEG-2 | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | 11*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 12*ba62d9d3SAndroid Build Coastguard Worker| VC-1 | Output | | | | | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | 13*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | | | | | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 14*ba62d9d3SAndroid Build Coastguard Worker| VP8 | Output | NV12 | NV12 | NV12 | | | NV12* | NV12 | NV12 | NV12 | NV12 | NV12 | 15*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 4k | 4k | 4k | | | 4k* | 4k | 4k | 4k | 4k | 4k | 16*ba62d9d3SAndroid Build Coastguard Worker| HEVC 8bit | Output | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12 | NV12 | NV12 | | 17*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | 8k | 8k | | 18*ba62d9d3SAndroid Build Coastguard Worker| HEVC 10bit | Output | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010 | P010 | | | 19*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | 8k | | | 20*ba62d9d3SAndroid Build Coastguard Worker| HEVC 12bit | Output** | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | | | | | | 21*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | | | | | | 22*ba62d9d3SAndroid Build Coastguard Worker| VP9 8bit | Output | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12 | NV12 | | | 23*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | 4k | | | 24*ba62d9d3SAndroid Build Coastguard Worker| VP9 10bit | Output | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010 | | | | 25*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | | | | 26*ba62d9d3SAndroid Build Coastguard Worker| VP9 12bit | Output** | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | | | | | | 27*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | | | | | | 28*ba62d9d3SAndroid Build Coastguard Worker| AV1 8bit | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | | | | | | 29*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | | | | | | 30*ba62d9d3SAndroid Build Coastguard Worker| AV1 10bit | Output | P010 | P010 | P010 | P010 | P010 | P010 | | | | | | 31*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | 32*ba62d9d3SAndroid Build Coastguard Worker| VVC 8bit | Output | | NV12 | | | | | | | | | | 33*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | | 16k | | | | | 34*ba62d9d3SAndroid Build Coastguard Worker| VVC 10bit | Output | | P010 | | | | | | | | | | 35*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | | 16k | | | | | 36*ba62d9d3SAndroid Build Coastguard Worker 37*ba62d9d3SAndroid Build Coastguard Worker- \* VP8 is only supported on TGL platform 38*ba62d9d3SAndroid Build Coastguard Worker- \** HVEC/VP9 12bit use P016/Y216/Y416 with the least significant 4 bits are set to zero 39*ba62d9d3SAndroid Build Coastguard Worker 40*ba62d9d3SAndroid Build Coastguard Worker### JPEG Decoding Format Support 41*ba62d9d3SAndroid Build Coastguard Worker| Input Format | Output Format | Max resolution | Supported Platforms | 42*ba62d9d3SAndroid Build Coastguard Worker|------------------------------------------------------|---------------|----------------|---------------------| 43*ba62d9d3SAndroid Build Coastguard Worker| 4:2:0, 8-bit | IMC3 | 16K | BDW+ | 44*ba62d9d3SAndroid Build Coastguard Worker| 4:2:2, 8-bit | 422H | 16K | BDW+ | 45*ba62d9d3SAndroid Build Coastguard Worker| 4:2:2, 8-bit | 422V | 16K | BDW+ | 46*ba62d9d3SAndroid Build Coastguard Worker| 4:1:1, 8-bit | 411P | 16K | BDW+ | 47*ba62d9d3SAndroid Build Coastguard Worker| 4:4:4, 8-bit | 444P | 16K | BDW+ | 48*ba62d9d3SAndroid Build Coastguard Worker| 4:4:4, 8-bit | RGBP / BGRP | 16K | BDW+ | 49*ba62d9d3SAndroid Build Coastguard Worker| 4:0:0, 8-bit | 400P | 16K | BDW+ | 50*ba62d9d3SAndroid Build Coastguard Worker| 420 / 422H<br/>interleaved single scan | YUY2 | 16K | BDW+ | 51*ba62d9d3SAndroid Build Coastguard Worker| 420 / 422H<br/>interleaved single scan | UYVY | 16K | BDW+ | 52*ba62d9d3SAndroid Build Coastguard Worker| 420 / 422H / 422V<br/>interleaved single scan | NV12 | 16K | BDW+ | 53*ba62d9d3SAndroid Build Coastguard Worker| 400/420/422H/444/RGB/BGR<br/>interleaved single scan | A8R8G8B8 | 16K | SKL+ | 54*ba62d9d3SAndroid Build Coastguard Worker 55*ba62d9d3SAndroid Build Coastguard Worker## Supported Encoding Input Format and Max Resolution 56*ba62d9d3SAndroid Build Coastguard Worker 57*ba62d9d3SAndroid Build Coastguard Worker### Hardware Encoding, Low Power Encoding(VDEnc/Huc) 58*ba62d9d3SAndroid Build Coastguard Worker 59*ba62d9d3SAndroid Build Coastguard Worker| Codec | Type | LNL | MTLx | DG2/ATSM | DG1/SG1 | TGLx | ICL | KBLx | BXTx | SKL | BDW | 60*ba62d9d3SAndroid Build Coastguard Worker|------------|--------------|--------------------|--------------------|--------------------|--------------------|--------------------|-----------|--------|--------|--------|-----| 61*ba62d9d3SAndroid Build Coastguard Worker| AVC | Input | *More | *More | *More | *More | *More | *More | *More | NV12 | NV12 | | 62*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | | 63*ba62d9d3SAndroid Build Coastguard Worker| JPEG | Input/Output | **Note | **Note | **Note | **Note | **Note | **Note | **Note | **Note | **Note | | 64*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k | 16k | 16k | 16k | 16k | 16k | 16k | 16k | 16k | | 65*ba62d9d3SAndroid Build Coastguard Worker| HEVC 8bit | Input | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/AYUV | | | | | 66*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k*** | 16k*** | 16k*** | 8k | 8k | 8k | | | | | 67*ba62d9d3SAndroid Build Coastguard Worker| HEVC 10bit | Input | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y410 | | | | | 68*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 16k*** | 16k*** | 16k*** | 8k | 8k | 8k | | | | | 69*ba62d9d3SAndroid Build Coastguard Worker| VP9 8bit | Input | | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | | | | | 70*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | | 8k | 8k | 8k | 8k | 8k | | | | | 71*ba62d9d3SAndroid Build Coastguard Worker| VP9 10bit | Input | | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | | | | | 72*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | | 8k | 8k | 8k | 8k | 8k | | | | | 73*ba62d9d3SAndroid Build Coastguard Worker| AV1 8bit | Input | NV12 | NV12 | NV12 | | | | | | | | 74*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 8k | 8k | 8k | | | | | | | | 75*ba62d9d3SAndroid Build Coastguard Worker| AV1 10bit | Input | P010 | P010 | P010 | | | | | | | | 76*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 8k | 8k | 8k | | | | | | | | 77*ba62d9d3SAndroid Build Coastguard Worker 78*ba62d9d3SAndroid Build Coastguard Worker- \*More: KBL/CFL/ICL/TGL AVC encoding supported input formats: NV12/YUY2/YUYV/YVYU/UYVY/AYUV/ARGB 79*ba62d9d3SAndroid Build Coastguard Worker- \**Note: JPEG encoding supports input format NV12/YUY2/UYVY/ABGR/Y8 and output format YUV400/YUV420/YUV422H_2Y/YUV444/RGB24. 80*ba62d9d3SAndroid Build Coastguard Worker- \***: 16k=16384x12288 81*ba62d9d3SAndroid Build Coastguard Worker 82*ba62d9d3SAndroid Build Coastguard Worker 83*ba62d9d3SAndroid Build Coastguard Worker### Hardware(PAK) + Shader(media kernel+VME) Encoding 84*ba62d9d3SAndroid Build Coastguard Worker 85*ba62d9d3SAndroid Build Coastguard Worker| Codec | Type | DG1/SG1 | TGLx | ICL | KBLx | BXTx | SKL | BDW | 86*ba62d9d3SAndroid Build Coastguard Worker|------------|----------|----------------|----------------|-----------|------|------|------|------| 87*ba62d9d3SAndroid Build Coastguard Worker| AVC | Input | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | 88*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 89*ba62d9d3SAndroid Build Coastguard Worker| MPEG2 | Input | NV12 | NV12 | NV12 | NV12 | | NV12 | NV12 | 90*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 2k | 2k | 2k | 2k | | 2k | 2k | 91*ba62d9d3SAndroid Build Coastguard Worker| VP8 | Input | NV12 | NV12 | NV12 | NV12 | | | | 92*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 4k | 4k | 4k | 4k | | | | 93*ba62d9d3SAndroid Build Coastguard Worker| HEVC 8bit | Input | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/AYUV | NV12 | NV12 | NV12 | | 94*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 8k | 8k | 8k | 4k | 4k | 4k | | 95*ba62d9d3SAndroid Build Coastguard Worker| HEVC 10bit | Input | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y410 | | | | | 96*ba62d9d3SAndroid Build Coastguard Worker| | Max Res. | 8k | 8k | 8k | 97*ba62d9d3SAndroid Build Coastguard Worker 98*ba62d9d3SAndroid Build Coastguard Worker## Supported Video Processing CSC/Scaling Format 99*ba62d9d3SAndroid Build Coastguard Worker 100*ba62d9d3SAndroid Build Coastguard Worker| Platform | Format | NV12 | YV12 | I420 | P010 | YUY2 | UYVY | Y210 | AYUV | Y410 | P016* | Y216* | Y416* | ARGB/ABGR | A2R10G10B10/A2B10G10R10 | 101*ba62d9d3SAndroid Build Coastguard Worker|---------------|--------|------|------|------|------|------|------|------|------|------|-------|-------|-------|-----------|-------------------------| 102*ba62d9d3SAndroid Build Coastguard Worker| BDW | Input | Y | Y | Y | | Y | | | | | | | | Y | N | 103*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | | Y | | | | | | | | Y | N | 104*ba62d9d3SAndroid Build Coastguard Worker| SKL/BXTx/KBLx | Input | Y | Y | Y | Y | Y | | | | | | | | Y | N | 105*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | | Y | | | | | | | | Y | N | 106*ba62d9d3SAndroid Build Coastguard Worker| ICL | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | Y | N | 107*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | | | | Y | Y | 108*ba62d9d3SAndroid Build Coastguard Worker| JSL/EHL | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | Y | N | 109*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | | | | Y | Y | 110*ba62d9d3SAndroid Build Coastguard Worker| TGLx | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | 111*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | Y | Y | Y | Y | Y | 112*ba62d9d3SAndroid Build Coastguard Worker| DG1/SG1 | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | 113*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | Y | Y | Y | Y | Y | 114*ba62d9d3SAndroid Build Coastguard Worker| DG2/ATSM | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | 115*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | Y | Y | Y | Y | Y | 116*ba62d9d3SAndroid Build Coastguard Worker| MTLx | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | 117*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | Y | Y | Y | Y | Y | 118*ba62d9d3SAndroid Build Coastguard Worker| LNL | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | 119*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | Y | Y | Y | Y | Y | 120*ba62d9d3SAndroid Build Coastguard Worker| BMG | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | 121*ba62d9d3SAndroid Build Coastguard Worker| | Output | Y | Y | Y | Y | Y | | Y | Y | Y | Y | Y | Y | Y | Y | 122*ba62d9d3SAndroid Build Coastguard Worker* \* For SFC path, there are NOT real 16bit, SFC precision is 12bit; For kernel path, we support real 16bit. 123*ba62d9d3SAndroid Build Coastguard Worker* TGL/DG1/SG1 capable of max resolution: 16K; ICL/JSL/EHL/SKL/BXT/KBL/BDW capable of max resolution: 4k. 124*ba62d9d3SAndroid Build Coastguard Worker* Composition path does not support conversion from BT2020 RGB to BT2020 YUV, BT2020->BT601/BT709, BT601/BT709 -> BT2020. So if some formats, RGB444 planar for example, are only supported by compositon path, make sure the color space isn't BT2020. 125*ba62d9d3SAndroid Build Coastguard Worker 126*ba62d9d3SAndroid Build Coastguard Worker## Supported Video Processing Feature Combination 127*ba62d9d3SAndroid Build Coastguard WorkerVideo processing has various feature filters including Blending(or Composition), CSC(Color Space Conversion), De-Interlace, De-Noise, Luma Key, Mirroring, Procamp, Rotation, Scaling, Sharpening, STD/E, TCC, Color Fill, Chroma Sitting, HDR10 TM, 3DLUT. These features can be divided into VEBOX/SFC/EU 3 categories according to hardware units. Generally, VEBOX+SFC or VEBOX+EU feature combination is valid and HW execution sequence is usually VEBOX first, SFC/EU second. 128*ba62d9d3SAndroid Build Coastguard Worker* VEBOX: Chroma Sitting, De-Interlace, De-Noise, Procamp, STD/E, TCC, HDR10 TM, 3DLUT, CSC 129*ba62d9d3SAndroid Build Coastguard Worker ##### HDR10 TM is the feature for HDR video content, hence, not compatible with denoise, deinterlace, STD/E, TCC. 130*ba62d9d3SAndroid Build Coastguard Worker* SFC: Chroma Sitting, CSC, Mirroring, Rotation, Scaling, Sharpening, Color Fill 131*ba62d9d3SAndroid Build Coastguard Worker* EU (Media Kernel or Shader): Blending, CSC, Rotation, Scaling, Color Fill 132*ba62d9d3SAndroid Build Coastguard Worker 133*ba62d9d3SAndroid Build Coastguard Worker## Supported Media Copy 134*ba62d9d3SAndroid Build Coastguard WorkerFor media usage, there are a lot of interactive between CPU and GPU memory. To accelerate CPU<->GPU surface sharing performance, media copy is enabled to use GPU hardware engine or GPU kernel to copy the surface from/to CPU accessable location. It's supported from ATSM/Meteor Lake(MTL)+ platforms. You could get the detail API information from [vaCopy](http://intel.github.io/libva/va_8h.html#a5ff39794f6201b8a68ccb0d0f934be1e). 135*ba62d9d3SAndroid Build Coastguard Worker 136*ba62d9d3SAndroid Build Coastguard WorkerMedia Copy support most of formats like Nv12/p010/p016/ARGB/yuy2/y210/y216/AYUV/y410/ARGB10, and also popular resolution like 8K/4k/2k/1080p/720p/480p/320P, etc. 137*ba62d9d3SAndroid Build Coastguard Worker 138*ba62d9d3SAndroid Build Coastguard WorkerBesides, it's required that CPU start address need 4k alignment, you can refer: [drm_i915_gem_userptr](https://dri.freedesktop.org/docs/drm/gpu/driver-uapi.html#c.drm_i915_gem_userptr) 139*ba62d9d3SAndroid Build Coastguard Worker 140*ba62d9d3SAndroid Build Coastguard Worker 141*ba62d9d3SAndroid Build Coastguard Worker##### Resolution definition: 2k=2048x2048, 4k=4096x4096, 8k=8192x8192, 16k=16384x16384 142