acl.himpi.vpc_rotate
acl.himpi.vpc_get_rotation_matrix
| c函数原型 | **hi_s32 hi_mpi_vpc_get_rotation_matrix(**hi_float_point center_point, hi_double angle, hi_double scale, hi_transform_matrix *matrix) |
|---|---|
| Python函数 | matrix, ret = acl.himpi.vpc_get_rotation_matrix(center_point, angle, scale**)** |
| 函数功能 | 获取仿射变换需要的旋转矩阵。 |
| 输入说明 | - center_point:dict,输入图像的旋转中心点字典。 - angle:float,旋转角度,正值表示逆时针旋转。 - scale:float,缩放参数,“scale”参数值大于1表示放大图片,参数值小于1表示缩小图片。 |
| 返回值说明 | - matrix:dict,仿射变换需要的变换矩阵信息字典,其中“matrix_type”参数值请参考实际输入矩阵进行配置,具体参见hi_transform_matrix。 - ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VPC图像处理返回码。 |
父主题: VPC图像处理接口
acl.himpi.vpc_lut_remap
| c函数原型 | hi_s32 hi_mpi_vpc_lut_remap(hi_vpc_chn chn, hi_warp_transform_param* transform_param, hi_remap_lut *remap_lut, hi_u32 *task_id, hi_s32 milli_sec) |
|---|---|
| Python函数 | task_id, ret = acl.himpi.vpc_lut_remap(chn, transform_param**,** remap_lut, milli_sec**)** |
| 函数功能 | 基于输入像素位置重映射表的方式对图片进行Remap处理。异步接口。 |
| 输入说明 | - chn:int,图片处理通道号。 - Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 - **transform_param:**dict,Remap变换参数字典,相关约束请参见约束说明。 - remap_lut:像素位置重映射表信息,具体请参见hi_remap_lut。 需提前调用以下get接口获取像素位置重映射表信息:acl.himpi.vpc_get_affine_lut、或acl.himpi.vpc_get_perspective_lut、或acl.himpi.vpc_get_remap_lut,但本接口的缩放算法需与get接口的缩放算法保持一致,否则可能导致remap结果不符合预期。 - milli_sec:超时时间配置,单位是毫秒,取值范围如下。 - “-1”:阻塞方式。 - “0”:非阻塞方式。 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
| 返回值说明 | - ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VPC图像处理返回码。 - task_id:任务分配的ID,用来区分任务。 |
| 约束说明 | - 在任务执行过程中,需要临时缓存,因此每个通道第一次执行本接口前需先调用acl.himpi.vpc_set_chn_workspace接口申请内部临时缓存。 Atlas 200/500 A2推理产品上,由于硬件约束,除YUV420SP NV12、YUV420SP NV21图片格式外,其它格式在输入与输出保持一致的情况下,无需调用acl.himpi.vpc_set_chn_workspace接口申请内部临时缓存,达到节省内存的目的。 。 - VPC功能中,关于图片分辨率、图片格式、宽高对齐、内存等约束,请参见约束说明。 - 单张1080P(1920*1080)的图像处理超时时间建议设置10ms,其他分辨率,按照图像尺寸进行近似的等价折算,例如,4096*4096分辨率的图像建议超时时间设置为40ms。 - Atlas 200/500 A2推理产品上,由于YUV格式图像下采样约束,当输出图片格式为YUV420SP或YUV422SP格式时,在配置边界填充类型时,建议设置为“边界复制模式”,避免输出图片边缘异常数据。 |
约束说明
| 版本 | 约束 |
|---|---|
| Atlas 200/500 A2推理产品 | - 输入、输出图片分辨率的取值范围为:10*6~4096*8192。 - 支持如下输入图片格式: text<br> HI_PIXEL_FORMAT_YUV_400 = 0, // YUV400 8bit<br> HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bit <br> HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YUV420SP NV21 8bit <br> HI_PIXEL_FORMAT_RGB_888 = 12, // RGB888<br> HI_PIXEL_FORMAT_BGR_888 = 13, // BGR888<br> HI_PIXEL_FORMAT_YUV_PACKED_444 = 11, // YUV444P 8bit<br> HI_PIXEL_FORMAT_YVU_PACKED_444 = 58, // YVU444P 8bit<br> - 支持如下输出图片格式: text<br> HI_PIXEL_FORMAT_YUV_400 = 0, // YUV400 8bit<br> HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bit <br> HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YUV420SP NV21 8bit <br> HI_PIXEL_FORMAT_RGB_888 = 12, // RGB888<br> HI_PIXEL_FORMAT_BGR_888 = 13, // BGR888<br> HI_PIXEL_FORMAT_YUV_PACKED_444 = 11, // YUV444P 8bit<br> HI_PIXEL_FORMAT_YVU_PACKED_444 = 58, // YVU444P 8bit<br> HI_PIXEL_FORMAT_YUYV_PACKED_422 = 7, // YUV422P YUYV 8bit <br> HI_PIXEL_FORMAT_UYVY_PACKED_422 = 8, // YUV422P UYVY 8bit<br> HI_PIXEL_FORMAT_YVYU_PACKED_422 = 9, // YUV422P YVYU 8bit <br> HI_PIXEL_FORMAT_VYUY_PACKED_422 = 10, // YUV422P VYUY 8bit <br> - 关于图片宽高对齐、内存等约束,请参见约束说明。 - 在任务执行过程中,需要临时缓存,因此每个通道第一次执行本接口前需先调用acl.himpi.vpc_set_chn_workspace接口申请内部临时缓存。 由于硬件约束,除YUV420SP NV12、YUV420SP NV21图片格式外,其它格式在输入与输出保持一致的情况下,无需调用acl.himpi.vpc_set_chn_workspace接口申请内部临时缓存,达到节省内存的目的。 - 单张1080P(1920*1080)的图像处理超时时间建议设置10ms,其他分辨率,按照图像尺寸进行近似的等价折算,例如,4096*4096分辨率的图像建议超时时间设置为40ms。 - 由于YUV格式图像下采样约束,当输出图片格式为YUV420SP或YUV422SP格式时,在配置边界填充类型时,建议设置为“边界复制模式”,避免输出图片边缘异常数据。 |
父主题: VPC图像处理接口
acl.himpi.vpc_median_blur
| c函数原型 | hi_s32 hi_mpi_vpc_median_blur(hi_vpc_chn chn, const hi_median_blur_param* median_blur_param, hi_u32 *task_id, hi_s32 milli_sec) |
|---|---|
| Python函数 | task_id, ret = acl.himpi.vpc_median_blur(chn, median_blur_param,milli_sec) |
| 函数功能 | 对输入图片做中值滤波处理。 |
| 输入说明 | - chn:int,图片处理通道号。 - Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 - median_blur_param:dict,中值滤波信息字典。 在hi_median_blur_param字典内配置输入、输出图片信息,以及中值滤波参数。其中,中值滤波参数在hi_median_blur_param字典内配置。 - milli_sec:超时时间配置,单位是毫秒,取值范围如下。 - “-1”:阻塞方式。 - “0”:非阻塞方式。 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
| 返回值说明 | - ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VPC图像处理返回码。 - task_id:任务分配的ID,用来区分任务。 |
约束说明
-
输入、输出图片分辨率的取值范围为:10*6~4096*8192,且输入、输出图片的分辨率需保持一致。
-
支持如下输入图片格式(输出图片格式与输入保持一致):
HI_PIXEL_FORMAT_YUV_400 = 0, // YUV400 8bitHI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bitHI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YUV420SP NV21 8bitHI_PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 3, // YUV422SP 8bitHI_PIXEL_FORMAT_YVU_SEMIPLANAR_422 = 4, // YVU422SP 8bitHI_PIXEL_FORMAT_YUYV_PACKED_422 = 7, // YUV422Packed YUYV 8bitHI_PIXEL_FORMAT_YVYU_PACKED_422 = 9, // YUV422Packed YVYU 8bitHI_PIXEL_FORMAT_YUV_PACKED_444 = 11, // YUV444 Package 8bitHI_PIXEL_FORMAT_RGB_888 = 12, // RGB888HI_PIXEL_FORMAT_BGR_888 = 13, // BGR888HI_PIXEL_FORMAT_YVU_PACKED_444 = 58, // YVU444 Package 8bitHI_PIXEL_FORMAT_RGB_888_PLANAR = 69, // RGB888 PlanarHI_PIXEL_FORMAT_BGR_888_PLANAR = 70, // BGR888 Planar
父主题: VPC图像处理接口
acl.himpi.vpc_rotate
| c函数原型 | hi_s32 hi_mpi_vpc_rotate(hi_vpc_chn chn, const hi_rotate_param* rotate_param**, hi_u32 *task_id, hi_s32 milli_sec)** |
|---|---|
| Python函数 | task_id, ret = acl.himpi.vpc_rotate(chn, rotate_param**,** milli_sec**)** |
| 函数功能 | 对输入图片做90度/180度/270度操作,输出图片宽高也要随旋转角度置换。 |
| 输入说明 | - chn:int,图片处理通道号。 - Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 - rotate_param:dict,旋转信息字典。 在hi_rotate_param字典内配置输入、输出图片信息,以及旋转参数。 - milli_sec:超时时间配置,单位是毫秒,取值范围如下。 - “-1”:阻塞方式。 - “0”:非阻塞方式。 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
| 返回值说明 | - ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VPC图像处理返回码。 - task_id:任务分配的ID,用来区分任务。 |
约束说明
| 版本 | 约束 |
|---|---|
| Atlas 200/500 A2推理产品 | - 输入、输出图片分辨率的取值范围为:10*6~4096*8192。 - 支持如下输入图片格式(输出图片格式与输入保持一致): text<br> HI_PIXEL_FORMAT_YUV_400 = 0, // YUV400 8bit<br> HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bit <br> HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YUV420SP NV21 8bit <br> HI_PIXEL_FORMAT_YUV_PACKED_444 = 11, // YUV444 Package 8bit<br> HI_PIXEL_FORMAT_RGB_888 = 12, // RGB888<br> HI_PIXEL_FORMAT_BGR_888 = 13, // BGR888<br> HI_PIXEL_FORMAT_YVU_PACKED_444 = 58, // YVU444 Package 8bit<br> HI_PIXEL_FORMAT_RGB_888_PLANAR = 69, // RGB888 Planar<br> HI_PIXEL_FORMAT_BGR_888_PLANAR = 70, // BGR888 Planar<br> |
父主题: VPC图像处理接口
acl.himpi.vpc_set_chn_workspace
| c函数原型 | hi_s32 **hi_mpi_vpc_set_chn_workspace(**hi_vpc_chn chn, hi_vpc_workspace_param *workspace_param, hi_u32 param_cnt) |
|---|---|
| Python函数 | ret = acl.himpi.vpc_set_chn_workspace(chn, workspace_param**,** param_cnt**)** |
| 函数功能 | 调用本接口后,系统内部会根据输入图片、输出图片的最大宽高信息申请需使用的内部临时缓存,通过该接口申请的临时缓存,在销毁通道时会自动释放。同步接口。 |
| 输入说明 | - chn:int,图片处理通道号。 - Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 - workspace_param:list,元素类型为hi_vpc_workspace_param字典的数组。 此处需根据所使用的Remap功能或仿射变换功能来设置hi_vpc_workspace_param["func"]参数值。 若在一个应用程序中,涉及Remap、仿射变换两种功能,则可以在hi_vpc_workspace_param数组中包含2个元素,一个元素的hi_vpc_workspace_param["func"]设置为REMAP,一个元素的hi_vpc_workspace_param["func"]设置为AFFINE。 - param_cnt:int,数组长度,需与workspace_param数组长度保持一致。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VPC图像处理返回码。 |
| 约束说明 | 对于每个通道,该接口只能设置一次,后续不能修改。 |
父主题: VPC图像处理接口
acl.himpi.vpc_warp_affine
| c函数原型 | hi_s32 hi_mpi_vpc_warp_affine(hi_vpc_chn chn, hi_transform_matrix *matrix**, hi_warp_transform_param *transform_param, hi_u32 *task_id, hi_s32 milli_sec)** |
|---|---|
| Python函数 | task_id, ret = acl.himpi.vpc_warp_affine(chn, matrix, transform_param, milli_sec**)** |
| 函数功能 | 对输入图片做仿射变换。 |
| 输入说明 | - chn:int,图片处理通道号。 - Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 - matrix:dict,仿射变换需要的变换矩阵信息字典,具体参见hi_transform_matrix。使用acl.himpi.vpc_get_affine_transform或者acl.himpi.vpc_get_rotation_matrix接口获取的仿射变换矩阵信息字典。 - transform_param:dict,仿射变换参数,在hi_warp_transform_param字典内配置输入、输出图片信息,相关约束请参见约束说明。 - milli_sec:超时时间配置,单位是毫秒,取值范围如下。 - “-1”:阻塞方式。 - “0”:非阻塞方式。 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
| 返回值说明 | - ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VPC图像处理返回码。 - task_id:任务分配的ID,用来区分任务。 |
约束说明
-
输入、输出图片分辨率的取值范围为:10*6~4096*8192。
-
关于输入、输出图片格式的要求如下(关于图片宽高对齐、内存等约束,请参见约束说明):
版本 约束 Atlas 200/500 A2推理产品 - 支持如下输入图片格式:
text<br> HI_PIXEL_FORMAT_YUV_400 = 0, // YUV400 8bit<br> HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bit <br> HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YUV420SP NV21 8bit <br> HI_PIXEL_FORMAT_RGB_888 = 12, // RGB888<br> HI_PIXEL_FORMAT_BGR_888 = 13, // BGR888<br> HI_PIXEL_FORMAT_YUV_PACKED_444 = 11, // YUV444P 8bit<br> HI_PIXEL_FORMAT_YVU_PACKED_444 = 58, // YVU444P 8bit<br>
- 支持如下输出图片格式:
text<br> HI_PIXEL_FORMAT_YUV_400 = 0, // YUV400 8bit<br> HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bit <br> HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YUV420SP NV21 8bit <br> HI_PIXEL_FORMAT_RGB_888 = 12, // RGB888<br> HI_PIXEL_FORMAT_BGR_888 = 13, // BGR888<br> HI_PIXEL_FORMAT_YUV_PACKED_444 = 11, // YUV444P 8bit<br> HI_PIXEL_FORMAT_YVU_PACKED_444 = 58, // YVU444P 8bit<br> HI_PIXEL_FORMAT_YUYV_PACKED_422 = 7, // YUV422P YUYV 8bit <br> HI_PIXEL_FORMAT_UYVY_PACKED_422 = 8, // YUV422P UYVY 8bit<br> HI_PIXEL_FORMAT_YVYU_PACKED_422 = 9, // YUV422P YVYU 8bit <br> HI_PIXEL_FORMAT_VYUY_PACKED_422 = 10, // YUV422P VYUY 8bit <br> -
在任务执行过程中,需要临时缓存,因此每个通道第一次执行本接口前需先调用acl.himpi.vpc_set_chn_workspace接口申请内部临时缓存。
-
由于YUV格式图像下采样约束,当输出图片格式为YUV420SP或YUV422SP格式时,在配置边界填充类型时,建议设置为“边界复制模式”,避免输出图片边缘异常数据。
父主题: VPC图像处理接口
JPEGD功能及约束说明
功能说明
JPEGD(JPEG Decoder)实现.jpg、.jpeg、.JPG、.JPEG图片文件的解码。
-
JPEGD在解码图片时,支持对图片进行旋转。
如果输入图片的码流中包含Orientation信息(代表捕获图像时摄像机相对于场景的方向),则JPEGD在解码时会解析Orientation信息,将图片进行90度、180度、270度或镜像旋转。旋转后输出图片的宽stride、高stride、输出内存仍需满足图片格式、宽高对齐、内存约束中的要求。如果输入图片的码流异常,导致JPEGD解码时无法读取Orientation信息,则不能实现图片旋转的功能。
:::note 说明 Atlas 200/500 A2推理产品上,JPEGD 422格式旋转图片,若原图高为奇数,并且旋转方式为宽高对换,则旋转后宽存在黑边,建议用户将宽向下对齐到偶数使用(即去除黑边),比如原图为200*101,若旋转后为101*200,则建议用户实际使用区域为100*200。
Atlas 200/500 A2推理产品上,JPEGD 440格式旋转图片,若原图宽为奇数,并且旋转方式为宽高对换,则旋转后高存在黑边,建议用户将高向下对齐到偶数使用(即去除黑边),比如原图为201*101,若旋转后为100*201,则建议用户实际使用区域为100*200。
JPEGD 422格式旋转图片,若原图高为奇数,并且旋转方式为宽高对换,则旋转后宽存在黑边,建议用户将宽向下对齐到偶数使用(即去除黑边),比如原图为200*101,若旋转后为101*200,则建议用户实际使用区域为100*200。
JPEGD 440格式旋转图片,若原图宽为奇数,并且旋转方式为宽高对换,则旋转后高存在黑边,建议用户将高向下对齐到偶数使用(即去除黑边),比如原图为201*101,若旋转后为100*201,则建议用户实际使用区域为100*200。 :::
-
JPEGD在解码图片时,支持按源图片格式解码。
源图片格式解码是指解码前后图片的编码格式保持一致,例如解码前输入图片为jpeg(440),解码后输出图片为YUV440SP V在前U在后或YUV440SP U在前V在后。
使用源图片格式解码,有以下方式:
-
在调用JPEGD解码接口时,直接将输出图片格式配置为“HI_PIXEL_FORMAT_UNKNOWN”,输出格式默认按源图片格式输出、且是V在前U在后的Semi-Planar格式。例如,JPEG源图片格式为jpeg(440),输出图片格式配置为“HI_PIXEL_FORMAT_UNKNOWN”,JPEGD解码后,实际输出图片格式为YUV440SP V在前U在后。
此种方式,由于不知道输出图片格式,因此需要用户申请尽量大的内存或调用acl.himpi.dvpp_get_image_info接口获取解码输出内存大小,防止内存不够,无法存放输出图片。
-
先调用acl.himpi.dvpp_get_image_info接口根据传入的jpeg源图片,获取按源图解码时的输出图片的宽、高、宽stride、高stride、解码输出内存大小、图片格式等信息后,再调用JPEGD解码接口,使用通过acl.himpi.dvpp_get_image_info接口获取的图片格式来设置输出图片格式。
:::note 说明 JPEGD解码后的输出图片,如果要直接作为模型推理的输入,建议将输出图片格式配置为“HI_PIXEL_FORMAT_UNKNOWN”,这时JPEGD使用源图片格式解码(但这里要确保解码后的图片格式模型是支持的),保证模型推理的精度。
JPEGD解码后的输出图片,如果直接作为VPC的输入,该场景下若使用源图片格式解码时,则需要关注解码后的输出图片格式VPC是否支持(VPC输入图片的格式请参见约束说明),如果VPC不支持,则用户需按VPC支持的情况指定JPEGD的输出图片格式。 :::
-
图片分辨率约束
-
输入图片分辨率
版本 分辨率范围 Atlas 200/500 A2推理产品 最大分辨率:16384*16384,最小分辨率:32*32。 -
输出图片分辨率
JPEGD只对图片解码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致。
图片格式、宽高对齐、内存约束
实现JPEGD图片解码功能时,需调用acl.himpi.dvpp_malloc接口申请Device上的输入、输出内存,调用acl.himpi.dvpp_free接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。
- 输入内存的大小就是指实际的输入图片所占用的大小。
- 输出内存的大小参见下表中的计算公式。
实现JPEGD图片解码功能时,仅支持Huffman编码,压缩前的原图像色彩空间为YUV,像素的各分量比例为4:4:4、4:2:2、4:2:0、4:0:0或4:4:0,不支持算术编码、不支持渐进JPEG格式、不支持JPEG2000格式。
:::note 说明 输出图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念。 :::
表1 图片格式、宽高对齐、内存大小约束
输入图片格式(YUV分量比例) | 输出图片格式 | 输出图片宽、高对齐要求 | 输出图片宽stride、高stride、内存大小要求 |
|---|---|---|---|
jpeg(444) | YVU444SP 8bit | 无对齐要求 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 3 |
YUV444SP 8bit | |||
YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 3/2 | |
YUV420SP NV21 8bit | |||
jpeg(422) | YVU422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 2 |
YUV422SP 8bit | |||
YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 3/2 | |
YUV420SP NV21 8bit | |||
jpeg(420) | YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 3/2 |
YUV420SP NV21 8bit | |||
jpeg(400) | YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 3/2 |
YUV420SP NV21 8bit | |||
YUV400 8bit | 无对齐要求 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride | |
jpeg(440) | YVU440SP 8bit | 宽没有对齐要求 高2对齐 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 2 |
YUV440SP 8bit | |||
YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽64对齐后的值。 高stride为高16对齐后的值。 内存大小(单位Byte)≥ 宽stride * 高stride * 3/2 | |
YUV420SP NV21 8bit |
软、硬件约束
- 硬件约束:
- 最多支持4张Huffman表,其中包括2 张DC(Direct Current)(直流)表和2 张AC(Alternating Current)(交流)表。
- 最多支持3张量化表。
- 只支持8bit采样精度。
- 只支持对顺序式编码的图片进行解码。
- 只支持基于DCT(Discrete Cosine Transform)变换的JPEG 格式解码。
- 只支持一个SOS(Start of Scan)标志的图片解码。
- 软件约束:
- 支持3个SOS标志的图片解码。
- 支持mcu(Minimum Coded Unit)数据不足的异常图片解码。
精度相关约束
JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽stride*高stride有64*16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以在执行VPC功能时(例如缩放时),需在输入图片的hi_vpc_pic_info["picture_width"]、hi_vpc_pic_info["picture_height"]属性处正确设置输入图片的原图宽高,这样VPC在缩放图片前会先根据原图宽高自行抠图,目的是去除无效数据对图像精度的影响。
其它注意事项
若图片内EOI(End Of Image,标记代码为0XFFD9)之后,还有用户自定义的数据,则JPEGD在对图片进行解码时,会直接清零EOI之后的8字节数据,若用户需要保留这些自定义的数据,则将图片数据读入内存之后,需要提前备份这部分数据,再传给JPEGD处理。
若需要查看图片内EOI之后是否存在自定义数据,可以使用二进制查看工具打开图片查看,例如下图中的FFD9标记符之后就存在自定义数据。

父主题: VDEC视频解码/JPEGD图像解码接口
在线提单