Restrictions
Resolution Restrictions
Input image resolution::
10*6~8192*8192
When an API is called to implement the VPC function, the resolution requirements of each API may be different. For details, see the description of each API in VPC. When the input image format is YUV440SP or YUV440P, the maximum width of the image is 4096.
|
Model |
Resolution Range |
|---|---|
|
|
10*6~4096*4096 |
|
|
10*6~4096*8192 |
Restrictions on Image Formats, Width and Height Alignment, and Buffers
When the VPC processes images, the acldvppMalloc API needs to be called to allocate the input and output buffers on the device, and the acldvppFree API needs to be called to release the input and output buffers. The lifecycle of the buffers is managed by the user.
For details about the image format, see acldvppPixelFormat. For details about the width stride, height stride, and 8K, see Terminology.
For details about the restrictions on the image formats and width and height alignment, see Table 7 and Table 8. For details about the input image formats supported in the 8K scenario, see Table 9.
|
Input formats: |
Input Width and Height Alignment |
Input Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV400 8bit |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV420SP NV12 8bit YUV420SP NV21 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV422SP 8bit YVU422SP 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YUV444SP 8bit YVU444SP 8bit |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride = Width × 2 Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV444Packed 8bit RGB888 BGR888 |
No alignment requirement. |
Width stride = Width × 3 Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
ARGB8888 ABGR8888 RGBA8888 BGRA8888 |
No alignment requirement. |
Width stride=Width x 4. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV440SP 8bit YVU440SP 8bit |
Width: No alignment requirements. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YVU420Planar YUV420Planar |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3/2 |
|
YVU422Planar YUV422Planar |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YVU444Planar YUV444Planar |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YVU444Packed 8bit |
No alignment requirement. |
Width stride: No alignment requirement. Width stride = Width × 3. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV440Planar YVU440Planar |
Width: No alignment requirement, but the width must be ≤ 4096. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
RGB888Planar BGR888Planar |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YUV400 FP32 RGB888 FP32 BGR888 FP32 |
No alignment requirement. |
Width stride: No alignment requirement. Width stride = Width × 3. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
RGB888Planar FP32 BGR888Planar FP32 |
No alignment requirement. |
Width stride: No alignment requirements, but the value must be the same as the width. Height stride: No alignment requirements, but the value must be the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
Output Format |
Output Width and Height |
Output Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV420SP NV12 8bit YUV420SP NV21 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV400 8bit |
No alignment requirement. |
Width stride: No alignment requirement. The value is the same as width. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV422SP 8bit YVU422SP 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: No alignment requirements, but the value must be the same as the width. Height stride: No alignment requirements, but the value must be the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YUV444Packed 8bit RGB888 BGR888 |
No alignment requirement. |
Width stride = Width x 3. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
ARGB8888 ABGR8888 RGBA8888 BGRA8888 |
No alignment requirement. |
Width stride = Width x 4. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
YVU444Packed |
No alignment requirement. |
Width stride = Width x 3. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
RGB888Planar BGR888Planar |
No alignment requirement. |
Width stride: No alignment requirements, but the value must be the same as the width. Height stride: No alignment requirements, but the value must be the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YUV400 FP32 RGB888 FP32 BGR888 FP32 |
No alignment requirement. |
Width stride: No alignment requirement. Width stride = Width × 3. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
RGB888Planar FP32 BGR888Planar FP32 |
No alignment requirement. |
Width stride: No alignment requirements, but the value must be the same as the width. Height stride: No alignment requirements, but the value must be the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
Input formats: |
Input Width and Height Alignment |
Input Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV400 8bit |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV420SP NV12 8bit YUV420SP NV21 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV422SP 8bit YVU422SP 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YUV444SP 8bit YVU444SP 8bit |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride = Width × 2 Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV444Packed 8bit RGB888 BGR888 |
No alignment requirement. |
Width stride = Width × 3 Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
ARGB8888 ABGR8888 RGBA8888 BGRA8888 |
No alignment requirement. |
Width stride=Width x 4. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV440SP 8bit YVU440SP 8bit |
Width: No alignment requirements. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YVU420Planar YUV420Planar |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3/2 |
|
YVU422Planar YUV422Planar |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YVU444Planar YUV444Planar |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YVU444Packed 8bit |
No alignment requirement. |
Width stride: No alignment requirement. Width stride = Width × 3. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV440Planar YVU440Planar |
Width: No alignment requirement, but the width must be ≤ 4096. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
RGB888Planar BGR888Planar |
No alignment requirement. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
Output Format |
Output Width and Height |
Output Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV420SP NV12 8bit YUV420SP NV21 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: No alignment requirements. The value is the same as the width. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV400 8bit |
No alignment requirement. |
Width stride: No alignment requirement. The value is the same as width. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV422SP 8bit YVU422SP 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: No alignment requirements, but the value must be the same as the width. Height stride: No alignment requirements, but the value must be the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YUV444Packed 8bit RGB888 BGR888 |
No alignment requirement. |
Width stride = Width x 3. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
ARGB8888 ABGR8888 RGBA8888 BGRA8888 |
No alignment requirement. |
Width stride = Width x 4. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
YVU444Packed |
No alignment requirement. |
Width stride = Width x 3. Height stride: No alignment requirement. The value is the same as height. Buffer size (in bytes) = Width stride × Height stride |
|
RGB888Planar BGR888Planar |
No alignment requirement. |
Width stride: No alignment requirements, but the value must be the same as the width. Height stride: No alignment requirements, but the value must be the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
Input formats: |
Input Width and Height Alignment |
Input Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV400 8bit |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV420SP NV12 8bit YUV420SP NV21 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV422SP 8bit YVU422SP 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YUV444SP 8bit YVU444SP 8bit |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 2. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV444Packed 8bit RGB888 BGR888 |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 3. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
ARGB8888 ABGR8888 RGBA8888 BGRA8888 |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 4. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV440SP 8bit YVU440SP 8bit |
Width: No alignment requirements. Height: Must be a multiple of 2. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
Output Format |
Output Width and Height |
Output Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV420SP NV12 8bit YUV420SP NV21 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV400 8bit |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
YUV422SP 8bit YVU422SP 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YUV444Packed 8bit RGB888 BGR888 |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 3. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
ARGB8888 ABGR8888 RGBA8888 BGRA8888 |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 4. Height stride: No alignment requirements. The value is the same as the height. Buffer size (in bytes) = Width stride × Height stride |
|
Input formats: |
Input Width and Height Alignment |
Input Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV400 8bit |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV420SP NV12 8bit YUV420SP NV21 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV422SP 8bit YVU422SP 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride × 2 |
|
YUV444SP 8bit YVU444SP 8bit |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride × 3 |
|
YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit |
Width: Must be a multiple of 2. Height: No alignment requirements. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 2. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride |
|
YUV444Packed 8bit RGB888 BGR888 |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 3. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride |
|
ARGB8888 ABGR8888 RGBA8888 BGRA8888 |
No alignment requirement. |
Width stride: Round up the width to the nearest multiple of 16 and multiply the result by 4. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride × Height stride |
|
Output Format |
Output Width and Height |
Output Width Stride, Height Stride, and Buffer Size |
|---|---|---|
|
YUV420SP NV12 8bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: Round up the width to the nearest multiple of 16. Height stride: Round up the height to the nearest multiple of 2. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV420SP NV21 8bit |
In the 8K scenario, the input image formats supported by each model are different, as listed in the following table.
|
Model |
Supported Input Image Formats |
|---|---|
|
|
YUV420SP NV12 8-bit, YUV420SP NV21 8-bit |
|
|
|
The minimum or maximum width stride and height stride vary according to product models.
- The minimum width stride is 10 and the maximum width stride is 16384. (16384=4096 x 4. For a 4096-pixel ARGB image, one pixel occupies four bytes, and a line of pixels occupies 4096 x 4.) The minimum height stride is 6 and the maximum height stride is 16384. The following models are supported:
Atlas A3 training product /Atlas A3 inference product Atlas A2 training product /Atlas A2 inference product Atlas 200I/500 A2 inference product - The minimum width stride is 32 and the maximum width stride is 16384. (16384=4096 x 4. For a 4096-pixel ARGB image, one pixel occupies four bytes, and a line of pixels occupies 4096 x 4.) The minimum height stride is 6 and the maximum height stride is 16384. The following models are supported:
Atlas training product
Restrictions on Image Cropping and Pasting
|
Product Version |
Restrictions on Image Cropping and Pasting |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Restrictions on Downsampling of YUV Images
VPC converts the input image format to YUV444 or RGB for internal processing based on the input or output image format. YUV444 or RGB output format has no restriction on the odd and even numbers of the width and height, while the YUV420SP or YUV422SP output format, which performs downsampling processing, has such restrictions due to the data format. Therefore, abnormal data may exist on the output image boarders.
The root cause is that during the computation, when the output image is at an odd start point, the image is correct for the YUV444 format. However, when the YUV420SP format is downsampled, the odd and even lines share the same UV. In this case, the Y of the start line and the UV of the previous line form a new pixel and abnormal data is generated.