libxcoder 5.6.0
Loading...
Searching...
No Matches
ni_rsrc_api.h
Go to the documentation of this file.
1/*******************************************************************************
2 *
3 * Copyright (C) 2022 NETINT Technologies
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18 * SOFTWARE.
19 *
20 ******************************************************************************/
21
22/*!*****************************************************************************
23 * \file ni_rsrc_api.h
24 *
25 * \brief Public definitions for managing NETINT video processing devices
26 ******************************************************************************/
27
28#pragma once
29
30#include "ni_defs.h"
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36#define NI_PROFILES_SUPP_STR_LEN 128
37#define NI_LEVELS_SUPP_STR_LEN 64
38#define NI_ADDITIONAL_INFO_STR_LEN 64
39
46
57
58extern bool g_device_in_ctxt;
59extern ni_device_handle_t g_dev_handle;
60
66
72
85
95
101
102typedef struct _ni_device_info
103{
106 int hw_id;
108 int load;
111 int fw_ver_compat_warning; // fw revision is not fully supported by this libxcoder
112 uint8_t fl_ver_nor_flash[8]; // firmware loader version stored in nor flash
113 uint8_t fl_ver_last_ran[8];
114 uint8_t fw_rev_nor_flash[8]; // fw revision stored in nor flash
115 uint8_t fw_rev[8]; // fw revision loaded, i.e., running
116 uint8_t fw_branch_name[256];
117 uint8_t fw_commit_time[26];
118 uint8_t fw_commit_hash[41];
119 uint8_t fw_build_time[26];
120 uint8_t fw_build_id[256];
121
122 uint8_t serial_number[20];
123 uint8_t model_number[40];
124
133
135 ni_lock_handle_t lock;
137
138// This structure is very big (2.6MB). Recommend storing in heap
144
151
162
173
175{
176 uint32_t fps;
177 uint32_t h;
178 uint32_t w;
179 uint32_t code_format;
181 uint32_t rdoLevel;
183 uint32_t bit_8_10;
184 int uploader;/*1 for uploader,0 for not uploader*/
185 int rgba;/*1 for rgba,0 for not*/
187
189{
190 uint32_t fps;
191 uint32_t h;
192 uint32_t w;
193 uint32_t bit_8_10;
194 int rgba;
195 int hw_frame;/*if out=hw,1 for out = hw_frame,0 for not*/
197
205
213
220
230{
231 uint16_t vf_id;
232 uint16_t ns_id;
234
241
253
259
260/*!******************************************************************************
261 * \brief Initialize and create all resources required to work with NETINT NVMe
262 * transcoder devices. This is a high level API function which is used
263 * mostly with user application like FFmpeg that relies on those resources.
264 * In case of custom application integration, revised functionality might
265 * be necessary utilizing coresponding API functions.
266 *
267 * \param[in] should_match_rev 0: transcoder firmware revision matching the
268 * library's version is NOT required for placing
269 * the transcoder into resource pool; 1: otherwise
270 * timeout_seconds 0: No timeout amount, loop until init success
271 * or fail; else: timeout will fail init once reached
272 *
273 * \return
274 * NI_RETCODE_SUCCESS on success
275 * NI_RETCODE_FAILURE on failure
276 *
277 *******************************************************************************/
278LIB_API int ni_rsrc_init(int should_match_rev, int timeout_seconds);
279
280/*!*****************************************************************************
281 * \brief Scan and refresh all resources on the host, taking into account
282 * hot-plugged and pulled out cards.
283 *
284 * \param[in] should_match_rev 0: transcoder firmware revision matching the
285 * library's version is NOT required for placing
286 * the transcoder into resource pool; 1: otherwise
287 *
288 * \return
289 * NI_RETCODE_SUCCESS on success
290 * NI_RETCODE_FAILURE on failure
291 *
292 ******************************************************************************/
293LIB_API ni_retcode_t ni_rsrc_refresh(int should_match_rev);
294
295#ifndef DEPRECATION_AS_ERROR
296/*!******************************************************************************
297 * \brief Scans system for all NVMe devices and returns the system device
298 * names to the user which were identified as NETINT transcoder deivices.
299 * Names are suitable for OpenFile api usage afterwards
300 * This function had been replaced by ni_rsrc_get_local_device_list2
301 * This function can't be callback with multi thread
302 *
303 *
304 * \param[out] ni_devices List of device names identified as NETINT NVMe transcoders
305 * \param[in] max_handles Max number of device names to return
306 *
307 * \return Number if devices found if successfull operation completed
308 * 0 if no NETINT NVMe transcoder devices were found
309 * NI_RETCODE_ERROR_MEM_ALOC if memory allocation failed
310 *******************************************************************************/
312 int max_handles);
313#endif
314
315/*!*****************************************************************************
316 * \brief Scans system for all NVMe devices and returns the system device
317 * names to the user which were identified as NETINT transcoder
318 * devices. Names are suitable for resource management API usage
319 * afterwards
320 * This function had replaced ni_rsrc_get_local_device_list
321 * This function can be callback with multi thread
322 *
323 * \param[out] ni_devices List of device names identified as NETINT NVMe
324 * transcoders
325 * \param[in] max_handles Max number of device names to return
326 * \param[in] xcoder_refresh_dev_names Xcoder fresh device name
327 * \param[in] xcoder_refresh_dev_count Xcoder fresh device number count
328 *
329 * \return Number of devices found. 0 if unsucessful.
330 ******************************************************************************/
332 int max_handles, char **xcoder_refresh_dev_names,
333 int xcoder_refresh_dev_count);
334
335/*!******************************************************************************
336* \brief Allocates and returns a pointer to ni_device_context_t struct
337* based on provided device_type and guid.
338* To be used for load update and codec query.
339*
340 * \param[in] device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_ENCODER
341 * \param[in] guid GUID of the encoder or decoder device
342*
343* \return pointer to ni_device_context_t if found, NULL otherwise
344*
345* Note: The returned ni_device_context_t content is not supposed to be used by
346* caller directly: should only be passed to API in the subsequent
347* calls; also after its use, the context should be released by
348* calling ni_rsrc_free_device_context.
349*******************************************************************************/
351
352/*!******************************************************************************
353 * \brief Free previously allocated device context
354 *
355 * \param p_device_context Pointer to previously allocated device context
356 *
357 * \return None
358 *******************************************************************************/
360
361/*!******************************************************************************
362* \brief List device(s) based on device type with full information
363* including s/w instances on the system.
364*
365* \param[in] device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_ENCODER
366* \param[out] p_device The device information returned.
367* \param[out] p_device_count The number of ni_device_info_t structs returned.
368*
369* \return
370* NI_RETCODE_SUCCESS
371* NI_RETCODE_FAILURE
372*
373* Note: Caller is responsible for allocating memory for "p_device".
374*******************************************************************************/
376 ni_device_info_t* p_device_info, int* p_device_count);
377
378/*!******************************************************************************
379* \brief List all devices with full information including s/w instances
380* on the system.
381
382* \param[out] p_device The device information returned.
383*
384* \return
385* NI_RETCODE_SUCCESS
386* NI_RETCODE_INVALID_PARAM
387* NI_RETCODE_FAILURE
388*
389* Note: Caller is responsible for allocating memory for "p_device".
390*******************************************************************************/
392
393/*!******************************************************************************
394* \brief Grabs information for every initialized and uninitialized
395* device.
396
397* \param[out] p_device The device information returned.
398* \param list_uninitialized Flag to determine if uninitialized devices
399* should be grabbed.
400*
401* \return
402* NI_RETCODE_SUCCESS
403* NI_RETCODE_INVALID_PARAM
404* NI_RETCODE_FAILURE
405*
406* Note: Caller is responsible for allocating memory for "p_device".
407*******************************************************************************/
408LIB_API ni_retcode_t ni_rsrc_list_all_devices2(ni_device_t* p_device, bool list_uninitialized);
409
410/*!*****************************************************************************
411* \brief Print detailed capability information of all devices
412* on the system.
413
414* \param none
415*
416* \return none
417*
418*******************************************************************************/
420
421/*!*****************************************************************************
422* \brief Prints detailed capability information for all initialized
423* devices and general information about uninitialized devices.
424
425* \param list_uninitialized Flag to determine if uninitialized devices
426* should be grabbed.
427*
428* \return none
429*
430*******************************************************************************/
431LIB_API void ni_rsrc_print_all_devices_capability2(bool list_uninitialized);
432
433/*!******************************************************************************
434* \brief Query a specific device with detailed information on the system
435
436* \param[in] device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_ENCODER
437* \param[in] guid unique device(decoder or encoder) id
438*
439* \return
440* pointer to ni_device_info_t if found
441* NULL otherwise
442*
443* Note: Caller is responsible for releasing memory that was allocated for the
444* returned pointer
445*******************************************************************************/
447
448/*!****************************************************************************
449* \brief Get GUID of the device by block device name and type
450*
451* \param[in] blk_name device's block name
452* \param[in] type device type
453*
454* \return device GUID (>= 0) if found, NI_RETCODE_FAILURE (-1) otherwise
455*******************************************************************************/
456LIB_API int ni_rsrc_get_device_by_block_name(const char *blk_name,
457 ni_device_type_t device_type);
458
459/*!*****************************************************************************
460* \brief Update the load value and s/w instances info of a specific decoder or
461* encoder. This is used by resource management daemon to update periodically.
462*
463* \param[in] p_ctxt The device context returned by ni_rsrc_get_device_context
464* \param[in] p_load The latest load value to update
465* \param[in] sw_instance_cnt Number of s/w instances
466* \param[in] sw_instance_info Info of s/w instances
467*
468* \return
469* NI_RETCODE_SUCCESS
470* NI_RETCODE_FAILURE
471*******************************************************************************/
473 int sw_instance_cnt, const ni_sw_instance_info_t sw_instance_info[]);
474
475/*!*****************************************************************************
476* \brief Allocate resources for decoding/encoding, by designating explicitly
477* the device to use. do not track the load on the host side
478*
479* \param[in] device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_ENCODER
480* \param[in] guid unique device (decoder or encoder) module id
481* \return pointer to ni_device_context_t if found, NULL otherwise
482*
483* Note: only need to specify the device type and guid and codec type
484*
485*
486* Note: the returned ni_device_context_t content is not supposed to be used by
487* caller directly: should only be passed to API in the subsequent
488* calls; also after its use, the context should be released by
489* calling ni_rsrc_free_device_context.
490*******************************************************************************/
492(
493 ni_device_type_t device_type,
494 int guid
495);
496
497/*!*****************************************************************************
498* \brief Release resources allocated for decoding/encoding.
499* function This *must* be called at the end of transcoding
500* with previously assigned load value by allocate* functions.
501*
502* \param[in/out] p_ctxt the device context
503* \param[in] load the load value returned by allocate* functions
504*
505* \return None
506*******************************************************************************/
508 uint64_t load);
509
510/*!*****************************************************************************
511* \brief check the NetInt h/w device in resource pool on the host.
512*
513* \param[in] guid the global unique device index in resource pool
514* device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_ENCODER
515*
516* \return
517* NI_RETCODE_SUCCESS
518*******************************************************************************/
519LIB_API int ni_rsrc_check_hw_available(int guid, ni_device_type_t device_type);
520
521/*!*****************************************************************************
522* \brief Remove an NetInt h/w device from resource pool on the host.
523*
524* \param[in] p_dev the NVMe device name
525*
526* \return
527* NI_RETCODE_SUCCESS
528* NI_RETCODE_FAILURE
529*******************************************************************************/
530LIB_API int ni_rsrc_remove_device(const char* p_dev);
531
532/*!*****************************************************************************
533* \brief Remove all NetInt h/w devices from resource pool on the host.
534*
535* \param none
536*
537* \return
538* NI_RETCODE_SUCCESS
539* NI_RETCODE_FAILURE
540*******************************************************************************/
542
543/*!*****************************************************************************
544* \brief Add an NetInt h/w device into resource pool on the host.
545*
546* \param[in] p_dev the NVMe device name
547* \param[in] should_match_rev 0: transcoder firmware revision matching the
548* library's version is NOT required for placing
549* the transcoder into resource pool; 1: otherwise
550*
551* \return
552* NI_RETCODE_SUCCESS
553* NI_RETCODE_INVALID_PARAM
554* NI_RETCODE_FAILURE
555*******************************************************************************/
556LIB_API int ni_rsrc_add_device(const char* p_dev, int should_match_rev);
557
558/*!*****************************************************************************
559 * \brief Create and return the allocated ni_device_pool_t struct
560 *
561 * \param None
562 *
563 * \return Pointer to ni_device_pool_t struct on success, or NULL on failure
564 *******************************************************************************/
566
567/*!*****************************************************************************
568* \brief Free all resources taken by the device pool
569*
570* \param[in] p_device_pool Poiner to a device pool struct
571*
572* \return None
573*******************************************************************************/
575
576/*!*****************************************************************************
577 * \brief Print the content of the ni_device_info_t struct
578 *
579 * \param p_device_info - pointer to the ni_device_info_t struct to print
580 *
581 * \return None
582 *******************************************************************************/
583LIB_API void ni_rsrc_print_device_info(const ni_device_info_t* p_device_info);
584
585/*!*****************************************************************************
586 * \brief lock a file lock and open a session on a device
587 *
588 * \param device_type
589 * \param lock
590 *
591 * \return None
592 *******************************************************************************/
593LIB_API int ni_rsrc_lock_and_open(int device_type, ni_lock_handle_t* lock);
594
595/*!*****************************************************************************
596 * \brief unlock a file lock
597 *
598 * \param device_type
599 * \param lock
600 *
601 * \return None
602 *******************************************************************************/
603LIB_API int ni_rsrc_unlock(int device_type, ni_lock_handle_t lock);
604
605/*!*****************************************************************************
606* \brief check if device FW revision is compatible with SW API
607*
608* \param fw_rev
609*
610* \return 1 for full compatibility, 2 for partial, 0 for none
611*******************************************************************************/
612LIB_API int ni_rsrc_is_fw_compat(uint8_t fw_rev[8]);
613
614/*!******************************************************************************
615 * \brief get linux numa_node
616 *
617 * \param[in] char *device_name
618 *
619 * \return int atoi(cmd_ret)
620 *******************************************************************************/
621LIB_API int ni_rsrc_get_numa_node(char *device_name);
622
623
624/*!******************************************************************************
625 * \brief Create a pointer to hw_device_info_coder_param_t instance .This instance will be created and
626 * set to default vaule by param mode.You may change the resolution fps bit_8_10 or other vaule you want to set.
627 *
628 * \param[in] mode:0:create instance with decoder_param ,encoder_param, scaler_param and ai_param will be set to NULL
629 * 1:create instance with encoder_param ,decoder_param, scaler_param and ai_param will be set to NULL
630 * 2:create instance with scaler_param ,decoder_param, encoder_param and ai_param will be set to NULL
631 * 3:create instance with ai_param ,decoder_param, encoder_param and scaler_param will be set to NULL
632 * >= 4:create instance with decoder_param encoder_param scaler_param and ai_param for ni_check_hw_info() hw_mode
633 *
634 * \return NULL-error,pointer to an instance when success
635 *******************************************************************************/
637
638/*!******************************************************************************
639 * \brief Release a pointer to hw_device_info_coder_param_t instance created by create_hw_device_info_coder_param
640 *
641 *
642 * \param[in] p_hw_device_info_coder_param:pointer to a hw_device_info_coder_param_t instance created by create_hw_device_info_coder_param
643 *
644 *******************************************************************************/
646
647/*!******************************************************************************
648 * \brief Create a pointer to ni_hw_device_info_quadra_t instance .
649 *
650 * \param[in] device_type_num:number of device type to be allocated in this function
651 *
652 * \param[in] avaliable_card_num:number of avaliable card per device to be allocated in this function
653 *
654 * \return NULL-error,pointer to an instance when success
655 *******************************************************************************/
656LIB_API ni_hw_device_info_quadra_t *ni_hw_device_info_alloc_quadra(int device_type_num,int avaliable_card_num);
657
658/*!******************************************************************************
659 * \brief Release a pointer to ni_hw_device_info_quadra_t instance created by create_hw_device_info_coder_param
660 *
661 *
662 * \param[in] p_hw_device_info:pointer to a ni_hw_device_info_quadra_t instance created by create_hw_device_info_coder_param
663 *
664 *******************************************************************************/
666
667/*!*****************************************************************************
668 * \brief check hw info, return the appropriate card number to use depends on the load&task_num&used resource
669 *
670 * \param[out] pointer_to_p_hw_device_info : pointer to user-supplied ni_hw_device_info_quadra_t (allocated by ni_hw_device_info_alloc).
671 * May be a ponter to NULL ,in which case a ni_hw_device_info_quadra_coder_param_t is allocated by this function
672 * and written to pointer_to_p_hw_device_info.
673 * record the device info, including available card num and which card to select,
674 * and each card's informaton, such as, the load, task num, device type
675 * \param[in] task_mode: affect the scheduling strategy,
676 * 1 - both the load_num and task_num should consider, usually applied to live scenes
677 * 0 - only consider the task_num, don not care the load_num
678 * \param[in] hw_info_threshold_param : an array of threshold including device type task threshold and load threshold
679 * in hw_mode fill the arry with both encoder and decoder threshold or
680 * fill the arry with preferential device type threshold when don not in hw_mode
681 * load threshold in range[0:100] task num threshold in range [0:32]
682 * \param[in] preferential_device_type : which device type is preferential 0:decode 1:encode .
683 * This need to set to encoder/decoder even if in sw_mode to check whether coder_param is wrong.
684 * \param[in] coder_param : encoder and decoder information that helps to choose card .This coder_param can be created and
685 * set to default value by function hw_device_info_coder_param_t * create_hw_device_info_coder_param().
686 * You may change the resolution fps bit_8_10 or other vaule you want to use
687 * \param[in] hw_mode:Set 1 then this function will choose encoder and decoder in just one card .
688 * When no card meets the conditions ,NO card will be choosed.
689 * You can try to use set hw_mode 0 to use sw_mode to do encoder/decoder in different card when hw_mode reports an error
690 * In hw_mode set both encoder_param and decoder_param in coder_param.
691 * Set 0 then just consider sw_mode to choose which card to do encode/decode,
692 * In sw_mode set one param in coder_param the other one will be set to NULL.
693 * \param[in] consider_mem : set 1 this function will consider memory usage extra
694 * set 0 this function will not consider memory usage
695 *
696 * \return 0-error 1-success
697 *******************************************************************************/
698LIB_API int ni_check_hw_info(ni_hw_device_info_quadra_t **pointer_to_p_hw_device_info,
699 int task_mode,
700 ni_hw_device_info_quadra_threshold_param_t *hw_info_threshold_param,
701 ni_device_type_t preferential_device_type,
703 int hw_mode,
704 int consider_mem);
705
706
707/*!*****************************************************************************
708* \brief Allocate resources for decoding/encoding, based on the provided rule
709*
710* \param[in] device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_ENCODER
711* \param[in] rule allocation rule
712* \param[in] codec EN_H264 or EN_H265
713* \param[in] width width of video resolution
714* \param[in] height height of video resolution
715* \param[in] frame_rate video stream frame rate
716* \param[out] p_load the load that will be generated by this encoding
717* task. Returned *only* for encoder for now.
718*
719* \return pointer to ni_device_context_t if found, NULL otherwise
720*
721* Note: codec, width, height, fps need to be supplied for NI_DEVICE_TYPE_ENCODER only,
722* they are ignored otherwize.
723* Note: the returned ni_device_context_t content is not supposed to be used by
724* caller directly: should only be passed to API in the subsequent
725* calls; also after its use, the context should be released by
726* calling ni_rsrc_free_device_context.
727*******************************************************************************/
729 ni_alloc_rule_t rule,
730 ni_codec_t codec,
731 int width, int height,
732 int frame_rate,
733 uint64_t *p_load);
734
735#ifdef __cplusplus
736}
737#endif
Common NETINT definitions used by all modules.
#define NI_DEPRECATED
Definition ni_defs.h:80
#define NI_MAX_DEVICE_CNT
Definition ni_defs.h:235
#define NI_MAX_DEVICE_NAME_LEN
Definition ni_defs.h:236
#define NI_MAX_CONTEXTS_PER_HW_INSTANCE
Definition ni_defs.h:248
ni_device_type_t
Definition ni_defs.h:356
@ NI_DEVICE_TYPE_XCODER_MAX
Definition ni_defs.h:364
ni_retcode_t
Definition ni_defs.h:442
LIB_API int ni_rsrc_remove_all_devices(void)
Remove all NetInt h/w devices from resource pool on the host.
LIB_API NI_DEPRECATED int ni_rsrc_get_local_device_list(char ni_devices[][NI_MAX_DEVICE_NAME_LEN], int max_handles)
Scans system for all NVMe devices and returns the system device names to the user which were identifi...
LIB_API ni_retcode_t ni_rsrc_list_all_devices2(ni_device_t *p_device, bool list_uninitialized)
Grabs information for every initialized and uninitialized device.
struct _ni_device_queue ni_device_queue_t
LIB_API ni_retcode_t ni_rsrc_refresh(int should_match_rev)
Scan and refresh all resources on the host, taking into account hot-plugged and pulled out cards.
#define NI_LEVELS_SUPP_STR_LEN
Definition ni_rsrc_api.h:37
struct _ni_device_extra_info ni_device_extra_info_t
ni_device_context_t * ni_rsrc_allocate_simple_direct(ni_device_type_t device_type, int guid)
Allocate resources for decoding/encoding, by designating explicitly the device to use....
LIB_API int ni_rsrc_lock_and_open(int device_type, ni_lock_handle_t *lock)
lock a file lock and open a session on a device
LIB_API int ni_rsrc_get_numa_node(char *device_name)
get linux numa_node
LIB_API void ni_destory_hw_device_info_quadra_coder_param(ni_hw_device_info_quadra_coder_param_t *p_hw_device_info_quadra_coder_param)
Release a pointer to hw_device_info_coder_param_t instance created by create_hw_device_info_coder_par...
struct _ni_sw_instance_info ni_sw_instance_info_t
int ni_rsrc_update_device_load(ni_device_context_t *p_ctxt, int load, int sw_instance_cnt, const ni_sw_instance_info_t sw_instance_info[])
Update the load value and s/w instances info of a specific decoder or encoder. This is used by resour...
LIB_API int ni_rsrc_unlock(int device_type, ni_lock_handle_t lock)
unlock a file lock
LIB_API void ni_rsrc_print_all_devices_capability(void)
Print detailed capability information of all devices on the system.
LIB_API ni_device_context_t * ni_rsrc_allocate_auto(ni_device_type_t device_type, ni_alloc_rule_t rule, ni_codec_t codec, int width, int height, int frame_rate, uint64_t *p_load)
Allocate resources for decoding/encoding, based on the provided rule.
LIB_API ni_device_info_t * ni_rsrc_get_device_info(ni_device_type_t device_type, int guid)
Query a specific device with detailed information on the system.
struct _ni_card_info_quadra ni_card_info_quadra_t
struct _ni_hw_device_info_quadra_scaler_param ni_hw_device_info_quadra_scaler_param_t
struct _ni_hw_device_info_quadra_decoder_param ni_hw_device_info_quadra_decoder_param_t
LIB_API void ni_rsrc_print_device_info(const ni_device_info_t *p_device_info)
Print the content of the ni_device_info_t struct.
ni_device_handle_t g_dev_handle
struct _ni_device_info ni_device_info_t
bool g_device_in_ctxt
#define NI_PROFILES_SUPP_STR_LEN
Definition ni_rsrc_api.h:36
LIB_API ni_hw_device_info_quadra_coder_param_t * ni_create_hw_device_info_quadra_coder_param(int mode)
Create a pointer to hw_device_info_coder_param_t instance .This instance will be created and set to d...
LIB_API int ni_rsrc_remove_device(const char *p_dev)
Remove an NetInt h/w device from resource pool on the host.
struct _ni_hw_device_info_quadra_encoder_param ni_hw_device_info_quadra_encoder_param_t
struct _ni_device_video_capability ni_device_video_capability_t
#define NI_ADDITIONAL_INFO_STR_LEN
Definition ni_rsrc_api.h:38
LIB_API void ni_rsrc_release_resource(ni_device_context_t *p_ctxt, uint64_t load)
Release resources allocated for decoding/encoding. function This must be called at the end of transco...
ni_sw_instance_status_t
Definition ni_rsrc_api.h:62
@ EN_IDLE
Definition ni_rsrc_api.h:63
@ EN_ACTIVE
Definition ni_rsrc_api.h:64
struct _ni_hw_device_info_quadra_threshold_param ni_hw_device_info_quadra_threshold_param_t
struct _ni_device_vf_ns_id ni_device_vf_ns_id_t
struct _ni_rsrc_video_ref_cap ni_rsrc_device_video_ref_cap_t
LIB_API int ni_rsrc_get_local_device_list2(char ni_devices[][NI_MAX_DEVICE_NAME_LEN], int max_handles, char **xcoder_refresh_dev_names, int xcoder_refresh_dev_count)
Scans system for all NVMe devices and returns the system device names to the user which were identifi...
struct _ni_hw_device_info_quadra ni_hw_device_info_quadra_t
LIB_API ni_device_context_t * ni_rsrc_get_device_context(ni_device_type_t type, int guid)
Allocates and returns a pointer to ni_device_context_t struct based on provided device_type and guid....
LIB_API void ni_rsrc_free_device_context(ni_device_context_t *p_ctxt)
Free previously allocated device context.
LIB_API int ni_rsrc_is_fw_compat(uint8_t fw_rev[8])
check if device FW revision is compatible with SW API
struct _ni_device_temp ni_device_temp_t
LIB_API ni_hw_device_info_quadra_t * ni_hw_device_info_alloc_quadra(int device_type_num, int avaliable_card_num)
Create a pointer to ni_hw_device_info_quadra_t instance .
LIB_API void ni_rsrc_print_all_devices_capability2(bool list_uninitialized)
Prints detailed capability information for all initialized devices and general information about unin...
LIB_API ni_retcode_t ni_rsrc_list_devices(ni_device_type_t device_type, ni_device_info_t *p_device_info, int *p_device_count)
List device(s) based on device type with full information including s/w instances on the system.
LIB_API ni_retcode_t ni_rsrc_list_all_devices(ni_device_t *p_device)
List all devices with full information including s/w instances on the system.
LIB_API int ni_rsrc_check_hw_available(int guid, ni_device_type_t device_type)
check the NetInt h/w device in resource pool on the host.
ni_codec_t
Definition ni_rsrc_api.h:48
@ EN_JPEG
Definition ni_rsrc_api.h:53
@ EN_INVALID
Definition ni_rsrc_api.h:49
@ EN_AV1
Definition ni_rsrc_api.h:54
@ EN_H264
Definition ni_rsrc_api.h:50
@ EN_H265
Definition ni_rsrc_api.h:51
@ EN_CODEC_MAX
Definition ni_rsrc_api.h:55
@ EN_VP9
Definition ni_rsrc_api.h:52
struct _ni_device ni_device_t
struct _ni_hw_device_info_quadra_ai_param ni_hw_device_info_quadra_ai_param_t
struct _ni_hw_device_info_quadra_coder_param ni_hw_device_info_quadra_coder_param_t
LIB_API int ni_check_hw_info(ni_hw_device_info_quadra_t **pointer_to_p_hw_device_info, int task_mode, ni_hw_device_info_quadra_threshold_param_t *hw_info_threshold_param, ni_device_type_t preferential_device_type, ni_hw_device_info_quadra_coder_param_t *coder_param, int hw_mode, int consider_mem)
check hw info, return the appropriate card number to use depends on the load&task_num&used resource
ni_alloc_rule_t
@ EN_ALLOC_LEAST_LOAD
@ EN_ALLOC_LEAST_INSTANCE
LIB_API void ni_hw_device_info_free_quadra(ni_hw_device_info_quadra_t *p_hw_device_info)
Release a pointer to ni_hw_device_info_quadra_t instance created by create_hw_device_info_coder_param...
struct _ni_device_pool ni_device_pool_t
LIB_API ni_device_pool_t * ni_rsrc_get_device_pool(void)
Create and return the allocated ni_device_pool_t struct.
LIB_API int ni_rsrc_get_device_by_block_name(const char *blk_name, ni_device_type_t device_type)
Get GUID of the device by block device name and type.
LIB_API void ni_rsrc_free_device_pool(ni_device_pool_t *p_device_pool)
Free all resources taken by the device pool.
struct _ni_device_context ni_device_context_t
LIB_API int ni_rsrc_add_device(const char *p_dev, int should_match_rev)
Add an NetInt h/w device into resource pool on the host.
LIB_API int ni_rsrc_init(int should_match_rev, int timeout_seconds)
Initialize and create all resources required to work with NETINT NVMe transcoder devices....
ni_device_info_t * p_device_info
ni_lock_handle_t lock
char shm_name[NI_MAX_DEVICE_NAME_LEN]
uint8_t fw_build_id[256]
uint8_t fw_commit_time[26]
uint8_t serial_number[20]
char dev_name[NI_MAX_DEVICE_NAME_LEN]
uint8_t fw_rev[8]
uint8_t fw_commit_hash[41]
char blk_name[NI_MAX_DEVICE_NAME_LEN]
ni_sw_instance_info_t sw_instance[NI_MAX_CONTEXTS_PER_HW_INSTANCE]
uint64_t xcode_load_pixel
ni_device_type_t device_type
uint8_t fl_ver_last_ran[8]
uint8_t fw_branch_name[256]
uint8_t model_number[40]
uint8_t fw_rev_nor_flash[8]
uint32_t active_num_inst
uint8_t fw_build_time[26]
uint8_t fl_ver_nor_flash[8]
ni_lock_handle_t lock
ni_device_video_capability_t dev_cap[EN_CODEC_MAX]
ni_device_queue_t * p_device_queue
Definition ni_rsrc_api.h:99
ni_lock_handle_t lock
Definition ni_rsrc_api.h:98
int32_t xcoders[NI_DEVICE_TYPE_XCODER_MAX][NI_MAX_DEVICE_CNT]
Definition ni_rsrc_api.h:70
uint32_t xcoder_cnt[NI_DEVICE_TYPE_XCODER_MAX]
Definition ni_rsrc_api.h:69
int32_t composite_temp
int32_t on_board_temp
int32_t on_die_temp
char level[NI_LEVELS_SUPP_STR_LEN]
Definition ni_rsrc_api.h:82
char profiles_supported[NI_PROFILES_SUPP_STR_LEN]
Definition ni_rsrc_api.h:81
char additional_info[NI_ADDITIONAL_INFO_STR_LEN]
Definition ni_rsrc_api.h:83
ni_device_info_t xcoders[NI_DEVICE_TYPE_XCODER_MAX][NI_MAX_DEVICE_CNT]
int xcoder_cnt[NI_DEVICE_TYPE_XCODER_MAX]
ni_hw_device_info_quadra_encoder_param_t * encoder_param
ni_hw_device_info_quadra_ai_param_t * ai_param
ni_hw_device_info_quadra_decoder_param_t * decoder_param
ni_hw_device_info_quadra_scaler_param_t * scaler_param
ni_card_info_quadra_t ** card_info
ni_device_type_t * device_type
ni_sw_instance_status_t status
Definition ni_rsrc_api.h:89