| vip_init() | 描述:<br/>初始化VIP 硬件和VIPLite 软件环境。详细地说,该API 重置和初始化<br/>VIP 硬件处于就绪状态以接受命令。它还初始化软件环境,例如<br/>如视频内存堆、电源管理和MMU 表。<br/>在应用程序调用任何其他VIPLite API 以使用VIP 硬件之前调用此API。之后<br/>应用程序完成后,调用vip_destroy()。<br/>您可以多次调用vip_init()API。但是,vip_destroy()调用的数量应该<br/>匹配vip_init()调用的数量。只有第一个vip_init()调用和最后一个vip-destroy<br/>()执行调用。之间的其他vip_init()和vip_destroy()调用不会触发初始化或销<br/>毁应用。<br/>Syntax:<br/>vip_status_e vip_init(<br/>void<br/>);<br/>Parameters:<br/>None<br/>Returns:<br/>vip_status_e<br /> |
| vip_destroy() | 描述:<br/>终止VIPLite 驱动程序,释放vip_init()请求的资源,并关闭vip hardware<br/>在应用程序完成后调用此API。执行此API 后,在任何其他API 之前调用vip_init<br/>()<br/>VIPLite API。<br/>您可以多次调用vip_init()API。但是,vip_destroy()调用的数量应该<br/>匹配vip_init()调用的数量。只有第一个vip_init()调用和最后一个vip-destroy<br/>()<br/>执行调用。之间的其他vip_init()和vip_destroy()调用不会触发初始化或<br/>销毁应用。<br/>Syntax:<br />vip_status_e vip_destroy(<br/>void<br/>);<br/>Parameters:<br/>None<br/>Returns:<br/>vip_status_e |
| vip_create_network() | 描述:<br/>从给定的二进制文件创建网络。二进制是由生成的二进制大对象(BLOB)数据<br/>图是一个二进制生成器。VIPLite 驱动程序可以解释它以创建网络对象。<br/>Syntax:<br/>vip_status_e vip_create_network(<br/>void<br/>*data,<br/>vip_uint32_t<br/>size_of_data,<br/>vip_enum<br/>type,<br/>vip_network<br/>*network<br/>);<br/>Parameters:<br/>IN<br/>*data<br/>The pointer to the graph binary.<br/>IN<br/>size_of_data<br/>The size in bytes of the graph binary.<br/>IN<br/>type<br/>The network type.<br/>The supported types are defined in the<br/>vip_create_network_type_e enumeration.<br/>OUT<br/>*network<br/>The pointer to receive the created network object if the network is<br/>created successfully.<br/>If the network creation fails, VIP_NULL is returned.<br/>Returns:<br/>vip_status_e |
| vip_destroy_network() | 描述:<br/>销毁网络。该API 释放分配给网络的所有相关资源。为指定网络执行此API 后,网<br/>络的命令缓冲区将从指定的网络也被释放。然而,复制网络的系数为保留。<br/>Syntax:<br />vip_status_e vip_destroy_network(<br/>vip_network<br/>network<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be destroyed.<br/>Returns:<br/>vip_status_e |
| vip_query_network() | 描述:<br/>查询网络的属性。<br/>Syntax:<br/>vip_status_e vip_query_network(<br/>vip_network<br/>network,<br/>vip_enum<br/>property,<br/>void<br/>*value<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be queried.<br/>IN<br/>property<br/>The network property to be queried.<br/>The following properties are available for query:<br/>VIP_NETWORK_PROP_LAYER_COUNT<br/>VIP_NETWORK_PROP_INPUT_COUNT<br/>VIP_NETWORK_PROP_OUTPUT_COUNT<br/>VIP_NETWORK_PROP_NETWORK_NAME<br/>VIP_NETWORK_PROP_READ_REG_IRQ<br/>VIP_NETWORK_PROP_ADDRESS_INFO<br/>VIP_NETWORK_PROP_MEMORY_POOL_SIZE<br/>VIP_NETWORK_PROP_PROFILING<br/>For details, see Section 2.2.5, vip_network_property_e.<br/>OUT<br/>*value<br/>A pointer in memory to store the returned property value.<br/>The data type of the value varies according to the property queried.<br/>Returns: |
| vip_set_network() | 描述:<br />配置网络。在运行网络之前,需要通过调用vip_prepare_network().<br/>Syntax:<br/>vip_status_e vip_set_network(<br/>vip_network<br/>network,<br/>vip_enum<br/>property,<br/>void<br/>*value<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be configured.<br/>IN<br/>property<br/>The network property to be configured.<br/>The supported properties are:<br/>VIP_NETWORK_PROP_CHANGE_PPU_PARAM<br/>VIP_NETWORK_PROP_SET_MEMORY_POOL<br/>VIP_NETWORK_PROP_SET_DEVICE_ID<br/>VIP_NETWORK_PROP_SET_PRIORITY<br/>For details, see Section 2.2.5, vip_network_property_e.<br/>IN<br/>*value<br/>A pointer in memory to the property value.<br/>Returns:<br/>vip_status_e |
| vip_prepare_network() | 描述:<br/>验证网络的配置。该API 将内部存储器资源分配给网络,将所有操作的资源部署到<br/>内部内存池,分配并修补命令内部内存池中资源的缓冲区。成功执行此API 后,网<br/>络被认为准备在VIP 硬件上运行。在此API 之前,使用vip_set_network()API 配<br/>置网络。如果调用此API,则更多在网络配置保持不变的情况下,驱动程序多次默<br/>认忽略API 调用,除了第一个请求。<br/>Syntax:<br/>vip_status_e vip_prepare_network(<br/>vip_network<br/>network<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be prepared.<br/>Returns:<br />vip_status_e |
| vip_query_input() | 描述:<br/>查询网络输入的属性。<br/>Syntax:<br/>vip_status_e vip_query_input(<br/>vip_network<br/>network,<br/>vip_uint32_t<br/>index,<br/>vip_enum<br/>property,<br/>void<br/>*value<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be queried.<br/>IN<br/>index<br/>The index of the network input to be queried.<br/>IN<br/>property<br/>The input buffer property to be queried.<br/>The following properties are available for query:<br/>VIP_BUFFER_PROP_QUANT_FORMAT<br/>VIP_BUFFER_PROP_NUM_OF_DIMENSION<br/>VIP_BUFFER_PROP_SIZES_OF_DIMENSION<br/>VIP_BUFFER_PROP_DATA_FORMAT<br/>VIP_BUFFER_PROP_FIXED_POINT_POS<br/>VIP_BUFFER_PROP_TF_SCALE<br/>VIP_BUFFER_PROP_TF_ZERO_POINT<br/>VIP_BUFFER_PROP_NAME<br/>VIP_BUFFER_PROP_DATA_TYPE<br/>For details, see Section 2.2.6, vip_buffer_property_e.<br/>OUT<br/>*value<br/>A pointer in memory to store the returned property value.<br/>Returns:<br/>vip_status_e |
| vip_query_output() | 描述:<br/>查询网络输出的属性.<br/>Syntax:<br/>vip_status_e vip_query_output(<br />vip_network<br/>network,<br/>vip_uint32_t<br/>index,<br/>vip_enum<br/>property,<br/>void<br/>*value<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be queried.<br/>IN<br/>index<br/>The index of the network output to be queried.<br/>IN<br/>property<br/>The output buffer property to be queried.<br/>The following properties are available for query:<br/>VIP_BUFFER_PROP_QUANT_FORMAT<br/>VIP_BUFFER_PROP_NUM_OF_DIMENSION<br/>VIP_BUFFER_PROP_SIZES_OF_DIMENSION<br/>VIP_BUFFER_PROP_DATA_FORMAT<br/>VIP_BUFFER_PROP_FIXED_POINT_POS<br/>VIP_BUFFER_PROP_TF_SCALE<br/>VIP_BUFFER_PROP_TF_ZERO_POINT<br/>VIP_BUFFER_PROP_NAME<br/>VIP_BUFFER_PROP_DATA_TYPE<br/>For details, see Section 2.2.6, vip_buffer_property_e.<br/>OUT<br/>*value<br/>A pointer in memory to store the returned property value.<br/>Returns:<br/>vip_status_e |
| vip_set_input() | 描述:<br/>将输入缓冲区连接到网络。将输入缓冲区连接到网络时,VIPLite 驱动程序修补网<br/>络命令缓冲区以填充输入缓冲区。您还可以调用此API 来更新输入缓冲区。更新将<br/>从下一个网络生效处决在将输入缓冲区连接到网络之前, 请确保使用<br/>vip_prepare_network()API。在使用vip_run_network()运行网络之前,请确保每<br/>个有效的网络输入附加有缓冲器。否则, 返回<br/>VIP_ERROR_MISSING_INPUT_OUTPUT 调用vip_run_network()API。<br/>Syntax:<br/>vip_status_e vip_set_input(<br />vip_network<br/>network,<br/>vip_uint32_t<br/>index,<br/>vip_buffer<br/>input<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be configured.<br/>IN<br/>index<br/>The index of the network input to be configured.<br/>IN<br/>input<br/>An opaque handle to the buffer to be attached to the network<br/>input.<br/>Returns:<br/>vip_status_e |
| vip_set_output() | 描述:<br/>将输出缓冲区连接到网络。将输出缓冲区连接到网络时,VIPLite 驱动程序修补网<br/>络命令缓冲区以填充输出缓冲区。您还可以调用此API 来更新输出缓冲区。更新将<br/>从下一个网络生效执行在将输出缓冲区连接到网络之前, 请确保使用<br/>vip_prepare_network()API。在使用vip_run_network()运行网络之前,请确保已<br/>连接网络输出具有缓冲器。否则,返回VIP_ERROR_MISSING_INPUT_OUTPUT<br/>调用vip_run_network()API。<br/>Syntax:<br/>vip_status_e vip_set_output(<br/>vip_network<br/>network,<br/>vip_uint32_t<br/>index,<br/>vip_buffer<br/>output<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be configured.<br/>IN<br/>index<br/>The index of the network output to be configured.<br/>IN<br />output<br/>An opaque handle to the buffer to be attached to the network output.<br/>Returns:<br/>vip_status_e |
| vip_run_network() | 描述:<br/>为网络提交执行任务。VIP 硬件执行最高优先级的任务在已提交的任务中。您可以<br/>多次调用此API。<br/>VIP 硬件完成执行后返回API 执行状态。如果你需要要在不等待执行完成的情况下<br/>立即返回状态,请使用<br/>vip_trigger_network()API。要设置网络优先级,请使用vip_set_network()API。<br/>在运行网络之前,请确保使用vip_prepare_network()准备网络。在里面此外,通<br/>过使用确保每个网络输入和网络输出都带有缓冲区<br/>set_ input ( ) 和vip_ 。否则, VIP_ERROR_MISSING_INPUT_OUTPUT 为调用<br/>vip_run_network()后返回。<br/>要在一个组中运行多个网络,请使用vip_run_group()或vip_ trigger_group()。<br/>Syntax:<br/>vip_status_e vip_run_network(<br/>vip_network<br/>network<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be run.<br/>Returns:<br/>vip_status_e |
| vip_trigger_network() | 描述:<br/>为网络提交执行任务。VIP 硬件执行最高优先级的任务在已提交的任务中。您可以<br/>多次调用此API。<br/>API 执行状态立即返回, 无需等待硬件完成处决要获取状态, 请调用<br/>vip_wait_network()进行同步。如果您需要状态要在VIP 硬件完成执行后返回,请<br/>使用VIP_run_network()API。要设置网络优先级,请使用vip_set_network()API。<br/>在运行网络之前,请确保使用vip_prepare_network()准备网络。在里面此外,通<br/>过使用确保每个网络输入和网络输出都带有缓冲区set_ input()和vip_。否则,<br/>VIP_ERROR_MISSING_INPUT_OUTPUT 为调用vip_trigger_network()后返回。<br/>要在一个组中运行多个网络,请使用vip_run_group()或vip_ trigger_group()。<br/>Syntax:<br/>vip_status_e vip_trigger_network(<br/>vip_network<br/>network<br/>);<br/>Parameters:<br/>IN<br/>network<br />An opaque handle to the network to be executed.<br/>Returns:<br/>vip_status_e |
| vip_wait_network() | 描述:<br/>等待VIP 硬件完成指定网络的推断。<br/>调用vip_trigger_network()后调用此API。<br/>Syntax:<br/>vip_status_e vip_wait_network(<br/>vip_network<br/>network<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network.<br/>Returns:<br/>vip_status_e |
| vip_finish_network() | 描述:<br/>释放准备好的网络的资源。调用此API 后,所有内部内存资源分配给网络的数据在<br/>网络未被破坏的情况下被释放。如果不再需要网络,使用vip_destroy_network()<br/>API 销毁它。仅当网络不再使用时,调用vip_finish_network()API 来完成准备好<br/>的网络或者剩余的系统资源对于其他网络是有限的。如果仍然需要网络,请不要调<br/>用此API,因为准备网络非常耗时。在为准备好的网络成功执行vip_finish_network<br/>()调用后,重复调用包括静默忽略,直到使用vip_prepare_network()API 重新<br/>准备网络。为了未准备好的网络,vip_finish_network()调用将被静默忽略。重要<br/>提示:不要为正在运行的网络调用vip_finish_network()API。<br/>Syntax:<br/>vip_status_e vip_finish_network(<br/>vip_network<br/>network<br/>);<br/>Parameters:<br/>IN<br/>network<br/>An opaque handle to the network to be finished.<br/>Returns:<br/>vip_status_e |
| vip_create_buffer() | 描述:<br/>创建指定大小的VIP 缓冲区,行、片或批之间没有填充。<br/>Syntax:<br/>vip_status_e vip_create_buffer(<br/>vip_buffer_create_params_t<br/>*create_param,<br />vip_uint32_t<br/>size_of_param,<br/>vip_buffer<br/>*buffer<br/>);<br/>Parameters:<br/>IN<br/>*create_param<br/>The pointer to a vip_buffer_create_params_t structure.<br/>IN<br/>size_of_param<br/>The size of the data structure created by *create_param in bytes.<br/>OUT<br/>*buffer<br/>The pointer to receive the created buffer object if the VIP buffer is<br/>created successfully.<br/>If the VIP buffer creation fails, VIP_NULL is returned.<br/>Returns:<br/>vip_status_e<br/>If VIP_SUCCESS is returned, a VIP buffer is created successfully.<br/>If VIP_ERROR_<error_type> is returned, no buffer is created. |
| vip_create_buffer_from_handle() | 描述:<br/>从句柄创建VIP 缓冲区,并将句柄关联的物理地址映射到缓冲区。<br/>使用此API 之前,请启用VIP MMU。否则,API 返回VIP_ERROR_FAILURE。<br/>Syntax:<br/>vip_status_e vip_create_buffer_from_handle(<br/>vip_buffer_create_params_t<br/>*create_param,<br/>vip_ptr<br/>handle_logical,<br/>vip_uint32_t<br/>handle_size,<br/>vip_buffer<br/>*buffer<br/>)<br/>Parameters:<br/>IN<br/>*create_param<br/>A pointer to a vip_buffer_create_params_t structure.<br/>IN<br/>handle_logical<br/>The address of the handle from which the new VIP buffer is to be<br/>created.<br/>For a non-real-time Linux operating system, specify a logical<br />address. The address is allocated by the Linux malloc() function.<br/>For a real-time operating system, specify a physical address.<br/>Note: Address alignment to 64 bytes is recommended.<br/>IN<br/>handle_size<br/>The size of the memory to which the handle points.<br/>Note: Size alignment to 64 bytes is recommended.<br/>OUT<br/>*buffer<br/>The pointer to receive the created buffer object if the VIP buffer is<br/>created successfully.<br/>If the VIP buffer creation fails, VIP_NULL is returned.<br/>Returns:<br/>vip_status_e<br/>If VIP_SUCCESS is returned, a VIP buffer is created successfully.<br/>If VIP_ERROR_<error_type> is returned, no buffer is created. |
| vip_destroy_buffer() | 描述:<br/>销毁VIP 缓冲区并释放缓冲区使用的内存。<br/>Syntax:<br/>vip_status_e vip_destroy_buffer(<br/>vip_buffer<br/>buffer<br/>);<br/>Parameters:<br/>IN<br/>buffer<br/>The opaque handle of the buffer to be destroyed.<br/>Returns:<br/>vip_status_e |
| vip_map_buffer() | 描述:<br/>创建指向指定VIP 缓冲区的指针。应用程序可以使用指针访问缓冲区。<br/>Syntax:<br/>void *vip_map_buffer(<br/>vip_buffer<br/>buffer<br/>);<br/>Parameters:<br/>IN<br/>buffer<br/>The opaque handle of the buffer for which a pointer is to be<br/>created.<br/>Returns:<br/>A pointer to the buffer that applications can use to read or write the buffer data |
| vip_unmap_buffer() | 描述:<br/>释放应用程序用于访问VIP 缓冲区的指针。<br/>Syntax:<br/>vip_status_e *vip_unmap_buffer(<br/>vip_buffer<br/>buffer<br/>);<br/>Parameters:<br/>IN<br/>buffer<br/>The opaque handle of the buffer whose pointer is to be released.<br/>Returns:<br/>vip_status_e |
| vip_get_buffer_size() | 描述:<br/>检索缓冲区的大小(以字节为单位)。<br/>Syntax:<br/>vip_uint32_t vip_get_buffer_size(<br/>vip_buffer<br/>buffer<br/>);<br/>Parameters:<br/>IN<br/>buffer<br/>The opaque handle of the buffer whose size is requested.<br/>Returns:<br/>vip_uint32_t<br/>The buffer size in bytes. |
| vip_flush_buffer() | 描述:<br/>刷新或使从VIP_create_buffer ( ) 创建的VIP 缓冲区缓存无效, 或<br/>vip_create_buffer_from_handle()API。<br/>在以下情况下调用此API:如果正在使用的VIP 缓冲区包含CPU 缓存,则在调用<br/>vip_run_network()。<br/>从vip_wait_network()或vip_ run_networks()返回后,使用此API 使缓冲区缓存。<br/>Syntax:<br/>vip_status_e vip_flush_buffer(<br/>vip_buffer<br/>buffer,<br/>vip_buffer_operation_type_e<br/>type<br/>);<br/>Parameters:<br/>IN<br/>buffer<br/>The opaque handle of the buffer whose cache is to be flushed or<br />invalidated.<br/>IN<br/>type<br/>The buffer cache operation to be executed on the buffer.<br/>The buffer catch operations are defined in the<br/>vip_buffer_operation_type_e enumeration.<br/>Returns:<br/>vip_status_e |
| Running a Single<br/>Network | 运行网络的过程详细如下:<br/>1. 调用vip_init() 初始化VIPLite 引擎,包括软件和硬件。<br/>该API 重置硬件以使其准备好使用,并初始化软件资源。它设置了视频.<br/>内存和其他硬件资源,如中断和寄存器内存,供VIPLite 使用。<br/>2.从文件或存储器读取网络二进制图(NBG)数据。<br/>3.使用vip_Create_network()API 创建网络。<br/>该API 对NBG 数据执行健全性检查。因此,建议您检查返回的用于验证网络是否<br/>已成功生成的错误代码。<br/>4.使用vip_Query_input()和vip_Query_output()查询输入和输出属性。<br/>建议执行此步骤以避免输入或输出属性不匹配导致的错误。<br/>5. 使用以下API 创建输入和输出缓冲区: vip_Create_buffer ( ) ,<br/>vip_create_buffer_from_handle ( ) 、vip_create_buffer_from_physical ( ) 和<br/>vip_create_buffer_from_fd()。<br/>6.(可选)使用vip_set_network()配置网络属性。<br/>7.使用vip_Prepare_network()API 准备网络命令缓冲区。<br/>建议您检查此API 返回的错误代码。这是因为API 可能会失败,因为由于资源限制,<br/>例如内存不足。<br/>8.借助vip_map_buffer()API 从输入和输出缓冲区加载数据。<br/>9.使用vip_set_input()和vip_ set_output()将输入和输出缓冲区连接到网络。<br/>10.使用vip_Run_network()或vip_trigger_networks()API 运行网络。<br/>如果使用vip_run_network(),则在vip 硬件完成处决如果使用vip_trigger_network<br/>(),它将立即返回,而无需等待vip 硬件完成执行。如果CPU 工作负载很重,这<br/>将优化CPU 使用。在这种情况下,当CPU 需要API 结果时,调用vip_wait_network<br/>()进行同步。<br/>注意:可以创建多个网络。但是,一次只能运行一个网络。应用程序运行<br/>根据使用vip_set_network()API 配置的网络优先级,一个接一个地访问网络。<br/>11.使用vip_Flush_buffer()将网络执行结果从CPU 缓存刷新到输出缓冲区。<br/>12.在vip_map_buffer()的帮助下,检查输出缓冲区的网络执行结果。<br/>13.(可选)重复步骤6 至12 以多次运行网络。<br/>14.调用vip_finish_network()以释放分配给网络的内部内存。<br/>15.调用vip_destroy_network()释放分配给网络的所有其他资源。<br/>16.调用vip_destroy_buffer()释放分配给输入和输出缓冲区的内存。<br/>17.调用vip_destroy()释放VIPLite 资源并退出。 |