.. _video_image_codec_and_preprocessing: 视频图像编解码和图像预处理 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _principle_introduction_of_codec: 原理介绍 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 媒体数据处理(包括解封装、解码、图像预处理等操作)是大多数神经网络应用的前置步骤,进行神经网络推理之前需要将输入转换成特定输入格式的图像。为了实现用户业务高效运行,LXHPL提供的媒体数据处理接口均为异步接口,并没有提供同步接口,用户可以采用 :ref:`synchronization_mechanism` 中的描述来进行业务流中某些流程的同步实现。 关于异步接口 """"""""""""""""""""""""""""""""""""""""""""""""""""" 对于LXHPL提供的涉及具体业务的异步接口,调用接口成功只代表从Client侧下发任务成功,并不代表该任务所涉及的操作(比如视频解码或图像预处理)执行成功。对于有先后依赖的任务(例如视频需要先解码才能执行图像预处理),为确保任务保序执行,建议用户将有依赖的接口在一个Stream中下发,因为同一个Stream中的异步任务会按接口的调用顺序严格保序执行。 调用异步接口后,不能马上释放资源,需调用同步等待接口(例如lynSynchronizeStream或lynSynchronizeEvent)确保下发的异步任务在Server侧执行完成后才能释放。 关于内存申请和释放 """"""""""""""""""""""""""""""""""""""""""""""""""""" 在进行媒体数据处理时,例如视频解码、JPEG硬解码、图像预处理、视频编码、图像编码和模型推理等功能前,如果需要申请Server侧的内存存放输入或输出数据,需调用lynMalloc和lynFree完成内存的申请和释放。 .. toctree:: :maxdepth: 2 :caption: 目录 视频解码<视频解码开发要点> 图像解码<图像解码开发要点> 视频编码<视频编码开发要点> 图像编码(JPEG)<图像编码开发要点> 图像预处理<图像预处理开发要点>