下载
中文
注册

功能及约束说明

功能及约束说明

VDEC(Video Decoder)实现视频的解码,VDEC内部经过VPC处理后,输出YUV420SP格式(包括NV12和NV21)的图片。

  • VDEC输入的约束
    • 输入码流分辨率:

      最大分辨率4096*4096,最小分辨率128*128。

    • 输入码流格式:

      H264 bp/mp/hp level5.1 YUV420编码的码流,当前只支持annex-B的裸码流。

      H265 8/10bit level5.1 YUV420编码的码流,当前只支持annex-B的裸码流。

    • 输入内存:

      支持调用aclrtMalloc/aclrtFree接口或aclrtMallocHost/aclrtFreeHost接口申请/释放内存,也支持调用acldvppMalloc/acldvppFree接口申请/释放内存,这部分内存的生命周期由用户自行管理。

  • VDEC输出的约束
    • 输出图像分辨率:

      最大分辨率4096*4096,最小分辨率10*6。

    • 输出图像的格式:
      昇腾310 AI处理器支持acldvppPixelFormat枚举值中的如下枚举项:
      PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,   // YUV420SP NV12 8bit, 默认输出该格式
      PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,   // YUV420SP NV21 8bit
      昇腾910 AI处理器支持acldvppPixelFormat枚举值中的如下枚举项:
      PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1,   // YUV420SP NV12 8bit, 默认输出该格式
      PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,   // YUV420SP NV21 8bit
    • 输出内存:
      • 输出的内存首地址要求16对齐。调用acldvppMalloc接口/acldvppFree接口申请或释放内存,这部分内存的生命周期由用户自行管理。
      • 输出内存大小(单位Byte)与图片数据的格式相关,计算公式如下:

        YUV420SP:大于或等于widthStride*heightStride*3/2

    • 输出图片的widthStride、heightStride:
      • YUV420SP(包括NV12和NV21)

        输出图片的widthStride(对齐后的宽度),对齐到16。如果用户设置的输出图片宽度小于16,则widthStride必须对齐到32,不能对齐到16。

        输出图片的heightStride(对齐后的高度),对齐到2。

  • 其它约
    • VDEC只支持按帧输入码流进行解码。
    • 若码流中有坏帧、缺帧等情况,解码器VDEC可能会丢帧。
    • 通过隔行扫描方式编码出来的码流,VDEC仅支持解码H264 8bit编码的码流。

性能指标说明(昇腾310 AI处理器

  • 针对如下典型场景下各分辨率的码流,单个Device的VDEC解码的路数(n)推荐如下值:
    720p指分辨率为1280*720的图片;1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。

    分辨率

    总性能

    单路性能(n路)

    每路VDEC解码的最大内存消耗(此处以H265格式的输入码流、参考帧数量9个为例,作为参考值)

    4k

    120fps

    120fps/n(推荐n=4,每路30fps)

    约182MB

    1080p

    480fps

    480fps/n(推荐n=16,每路30fps)

    约56MB

    ≤720p

    960fps

    960fps/n(推荐n=32,每路30fps)

    约35MB

    下表以1080P分辨率的输入码流为例,说明每路VDEC解码的最大内存消耗的计算公式,在计算公式中:
    • 输入码流缓存大小:1080P分辨率及以下的输入码流,输入码流缓存大小默认为6M;1080P分辨率以上的输入码流,输入码流缓存大小默认为9M。
    • 解码图像帧存大小:1080P分辨率的输入码流,该参数值为3MB。其它分辨率时参数值可等量折算。
    • 视频解码图像TMV缓存大小:H264格式、1080P分辨率的输入码流,该参数值为0.5MB;H265格式、1080P分辨率的输入码流,该参数值为1MB。其它分辨率时参数值可等量折算。
    • 参考帧数量:以最大参考帧个数为例,系统内部会根据实际码流的参考帧个数自适应。

    每路VDEC解码的内存消耗计算公式

    场景举例

    内存消耗(单位为MB)

    4MB + 输入码流缓存大小 * 2 + (解码图像帧存大小 + 视频解码图像TMV缓存大小) * (参考帧数量 + 1 )

    • 输入码流格式H264
    • 输入码流分辨率1080P
    • 输入码流缓存大小为6M
    • 解码图像帧存大小为3MB
    • 视频解码图像TMV缓存大小为0.5MB

    51MB(参考帧数量9个)

    26.5MB(参考帧数量2个)

    • 输入码流格式H265
    • 输入码流分辨率1080P
    • 输入码流缓存大小为6M
    • 解码图像帧存大小为3MB
    • 视频解码图像TMV缓存大小为1MB

    56MB(参考帧数量9个)

    28MB(参考帧数量2个)

  • 关于解码路数与帧率的建议

    注意:下表中给出的规格建议供参考,如果单进程内启动的路数超过下表中的建议,则可能出现内存不足或性能不够的问题,进而导致创建解码通道失败或执行解码缓慢。

    720p指分辨率为1280*720的图片;1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。

    典型分辨率

    单进程内各启动路数时的规格建议(依据输入帧率得出)

    -

    输入帧率≥25fps

    20fps<输入帧率<25fps

    15fps<输入帧率≤20fps

    10fps<输入帧率≤15fps

    输入帧率≤10fps

    ≤720p

    32路

    32路

    32路

    32路

    32路

    1080p

    16路

    19路

    24路

    32路

    32路

    4K

    4路

    4路

    6路

    8路

    12路

    上述性能指标,基于CtrlCPU与AI CPU的配比是4:4。

性能指标说明(昇腾910 AI处理器

1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。单个Device的基本场景性能指标参考如下:

场景举例

总帧率

1080p*n路*2进程 (n≤20)

n*30*2fps

4k*n路*2进程 (n≤5)

n*30*2fps

下表以1080P分辨率的输入码流为例,说明每路VDEC解码的最大内存消耗的计算公式,在计算公式中:
  • 输入码流缓存大小:1080P分辨率及以下的输入码流,输入码流缓存大小默认为6M;1080P分辨率以上的输入码流,输入码流缓存大小默认为9M。
  • 解码图像帧存大小:1080P分辨率的输入码流,该参数值为3MB。其它分辨率时参数值可等量折算。
  • 视频解码图像TMV缓存大小:H264格式、1080P分辨率的输入码流,该参数值为0.5MB;H265格式、1080P分辨率的输入码流,该参数值为1MB。其它分辨率时参数值可等量折算。
  • 参考帧数量:以最大参考帧个数为例,系统内部会根据实际码流的参考帧个数自适应。

每路VDEC解码的内存消耗计算公式

场景举例

内存消耗(单位为MB)

4MB + 输入码流缓存大小 * 2 + (解码图像帧存大小 + 视频解码图像TMV缓存大小) * (参考帧数量 + 1 )

  • 输入码流格式H264
  • 输入码流分辨率1080P
  • 输入码流缓存大小为6M
  • 解码图像帧存大小为3MB
  • 视频解码图像TMV缓存大小为0.5MB

51MB(参考帧数量9个)

26.5MB(参考帧数量2个)

  • 输入码流格式H265
  • 输入码流分辨率1080P
  • 输入码流缓存大小为6M
  • 解码图像帧存大小为3MB
  • 视频解码图像TMV缓存大小为1MB

56MB(参考帧数量9个)

28MB(参考帧数量2个)

上述性能指标,基于CtrlCPU与AI CPU的配比是4:4。