昇腾社区首页
中文
注册

函数:vdec_send_frame

C函数原型

aclError aclvdecSendFrame(aclvdecChannelDesc *channelDesc, acldvppStreamDesc *input, acldvppPicDesc *output, aclvdecFrameConfig *config, void* userData)

Python函数

ret = acl.media.vdec_send_frame(vdec_channel_desc, dvpp_stream_desc, dvpp_pic_desc, vdec_frame_config, user_data)

函数功能

将待解码的输入内存和解码输出内存一起传到解码器进行解码,异步接口。

输入说明

vdec_channel_desc:int,指定通道描述信息,与调用acl.media.dvpp_create_channel接口创建通道时指定的dvpp_channel_desc保持一致。调用acl.media.vdec_set_channel_desc系列接口设置通道描述信息的属性,包括解码通道号、线程、回调函数、视频编码协议等。

说明:

对于昇腾310 AI处理器,由于软件约束,不支持调用acl.media.vdec_set_channel_desc_ref_frame_num接口设置通道描述信息的对应属性,若调用,则会返回报错。

对于昇腾910 AI处理器,由于软件约束,不支持调用acl.media.vdec_set_channel_desc_ref_frame_num接口设置通道描述信息的对应属性,若调用,则会返回报错。

dvpp_stream_desc:int,输入码流描述信息,输入内存用户需提前申请。

dvpp_pic_desc:int,输出图片描述信息,输出内存用户需提前申请。

dvpp_pic_desc参数作为输入时,需要用户调用如下接口:

  • 调用acl.media.dvpp_create_pic_desc接口创建图片描述信息。
  • 调用acl.media.dvpp_set_pic_desc系列接口设置输出图片的数据内存、内存大小、宽、高、格式。
    • 如果此处设置输出图片的宽高,则需要同时设置width、height、widthStride、heightStride这4个参数,且当width<16时,widthStride必须对齐到32,不能对齐到16;如果这4个参数都不设置,则以输入码流的宽高为准;如果设置部分参数,则接口返回错误。
    • 如果此处设置输出图片的格式,则以此处为准;如果此处不设置,则以通道描述信息中设置的为准。
    • 输出图像格式的要求,请参见功能及约束说明

dvpp_pic_desc参数作为输出时,用户需在回调函数中获取解码后的输出图片数据。隔行码流场景下,隔行码流每帧发送两场,解码时其中一场无图像输出,属于正常现象,会返回ERR_DECODE_NOPIC = 0x20000错误码;隔行码流的解码输出数据都在奇数场对应的输出buffer中。

vdec_frame_config:int,解码配置,预留,当前可填0。

user_data:python对象,用户自定义数据。如果用户需要获取解码的帧序号,则可以在user_data参数处定义,然后解码的帧序号可以通过user_data参数传递给VDEC的回调函数,用于确定回调函数中处理的是第几帧数据。

返回值说明

ret:int,错误码。

  • 返回0表示成功。
  • 返回其它值表示失败。

约束说明

  • 发送数据前必须保证通道已经被创建,否则返回错误。

  • 发送码流时须按帧发送,一次只发送完整的一帧码流。

  • 不能发送eos为0的空码流包(码流长度为0或码流地址为空)。

  • 发送完所有码流后,可以发送eos为1的空码流包,表示当前码流文件结束。发送eos后,本接口会等待已发送帧全部解码并且用户的回调函数处理完成后才返回。

  • acl.media.vdec_send_frame接口内部封装了acl.rt.launch_callback接口,用于在Stream的任务队列中增加一个需要在Host/板端环境上执行的回调函数。用户在实现VDEC功能时,无需再单独调用acl.rt.launch_callback接口。

注意事项

  • Device的内存,支持调用acl.rt.malloc接口/acl.rt.free接口申请/释放内存,也支持调用acl.media.dvpp_malloc/acl.media.dvpp_free接口申请/释放内存

  • VDEC输出图像的格式为(如果不设置输出格式,默认使用YUV420SP NV12):

    YUV420SP NV12

    YUV420SP NV21

参考资源