29#if __linux__ || __APPLE__
49static const char *ni_codec_format_str[] = {
"H.264",
"H.265",
"VP9",
"JPEG",
51static const char *ni_dec_name_str[] = {
"h264_ni_quadra_dec",
"h265_ni_quadra_dec",
52 "vp9_ni_quadra_dec",
"jpeg_ni_quadra_dec"};
53static const char *ni_enc_name_str[] = {
"h264_ni_quadra_enc",
"h265_ni_quadra_enc",
"empty",
54 "jpeg_ni_quadra_enc",
"av1_ni_quadra_enc"};
57#define DYN_STR_BUF_CHUNK_SIZE 4096
80 char *tmp_char_ptr = NULL;
84 (void)fprintf(stderr,
"ERROR: invalid param *dyn_str_buf\n");
98 formatted_len = vsnprintf(NULL, 0, fmt, tmp_vl);
103 add_buf_size = (formatted_len + 1) > avail_buf ?
117 (void)fprintf(stderr,
"ERROR: strcat_dyn_buf() failed realloc()\n");
152 for (
int xcoder_index_1 = 0;
165 strcat_dyn_buf(&output_buf,
" Last ran firmware loader version: %.8s\n",
167 strcat_dyn_buf(&output_buf,
" NOR flash firmware loader version: %.8s\n",
171 strcat_dyn_buf(&output_buf,
" NOR flash firmware revision: %.8s\n",
175 "no, possible missing features" :
"yes");
188 strcat_dyn_buf(&output_buf,
" PixelFormats: yuv420p, yuv420p10le, nv12, p010le"
194 for (
int xcoder_index_2 = 0;
203 &(p_device->
xcoders[dev_type][xcoder_index_2]);
222 " Operations: Crop (ni_quadra_crop), Scale (ni_quadra_scale), Pad "
223 "(ni_quadra_pad), Overlay (ni_quadra_overlay)\n"
224 " Drawbox (ni_quadra_drawbox), Rotate (ni_quadra_rotate), XStack (ni_quadra_xstack)\n");
229 " Operations: ROI (ni_quadra_roi), Background Replace (ni_quadra_bg)\n");
239 ni_codec_format_str[p_device_info->
dev_cap[i]
244 ni_dec_name_str[p_device_info->
dev_cap[i]
246 ni_enc_name_str[p_device_info->dev_cap[i]
276 printf(
"%s", output_buf.
str_buf);
290 int ddr_module_id = -1;
291 for (
int xcoder_index_1 = 0;
303 strcat_dyn_buf(&output_buf,
" Last ran firmware loader version: %.8s\n",
305 strcat_dyn_buf(&output_buf,
" NOR flash firmware loader version: %.8s\n",
309 strcat_dyn_buf(&output_buf,
" NOR flash firmware revision: %.8s\n",
313 "no, possible missing features" :
"yes");
330 for (
int xcoder_index_2 = 0;
339 &(p_device->
xcoders[dev_type][xcoder_index_2]);
347 ddr_module_id = p_device_info->
module_id;
359 " Operations: Crop (ni_quadra_crop), Scale (ni_quadra_scale), Pad "
360 "(ni_quadra_pad), Overlay (ni_quadra_overlay)\n"
361 " Drawbox (ni_quadra_drawbox), Rotate (ni_quadra_rotate), XStack (ni_quadra_xstack)\n"
362 " Delogo (ni_quadra_delogo), Merge (ni_quadra_merge), Flip (ni_quadra_flip)\n"
363 " Drawtext (ni_quadra_drawtext)\n");
370 " Operations: ROI (ni_quadra_roi), Background Replace (ni_quadra_bg), Ai Pre-processing (ni_quadra_ai_pre)\n"
371 " Background Remove (ni_quadra_bgr), Hvsplus (ni_quadra_hvsplus)\n");
381 ni_codec_format_str[p_device_info->
dev_cap[i]
386 ni_dec_name_str[p_device_info->
dev_cap[i]
388 ni_enc_name_str[p_device_info->dev_cap[i]
398 "yuv420p, yuv420p10le, nv12, p010le, ni_quad\n");
402 "yuvj420p, ni_quad\n");
417 "yuv420p, yuvj420p, yuv420p10le, nv12, p010le, ni_quad\n");
421 "yuvj420p, ni_quad\n");
454 if (ddr_module_id >= 0)
463 printf(
"%s", output_buf.
str_buf);
477 int ddr_module_id = -1;
479 for (
int xcoder_index_1 = 0;
484 strcat_dyn_buf(&output_buf,
" \"Device #%d\": [\n", xcoder_index_1);
486 "\t\t\"Serial number\": \"%.*s\",\n"
487 "\t\t\"Model number:\": \"%.*s\",\n"
488 "\t\t\"Last ran firmware loader version\": \"%.8s\",\n"
489 "\t\t\"NOR flash firmware loader version\": \"%.8s\",\n"
490 "\t\t\"Current firmware revision\": \"%.8s\",\n"
491 "\t\t\"NOR flash firmware revision\": \"%.8s\",\n"
492 "\t\t\"F/W & S/W compatibility\": \"%s\",\n"
493 "\t\t\"F/W branch\": \"%s\",\n"
494 "\t\t\"F/W commit time\": \"%s\",\n"
495 "\t\t\"F/W commit hash\": \"%s\",\n"
496 "\t\t\"F/W build time\": \"%s\",\n"
497 "\t\t\"F/W build id\": \"%s\",\n"
498 "\t\t\"F/W flavour\": \"%c\",\n"
499 "\t\t\"DeviceID\": \"%s\",\n"
505 p_dev_info->fw_branch_name, p_dev_info->fw_commit_time,
506 p_dev_info->fw_commit_hash, p_dev_info->fw_build_time,
507 p_dev_info->fw_build_id,
508 p_dev_info->fw_flavour ? p_dev_info->fw_flavour :
'-',
509 p_dev_info->dev_name);
513 for (
int xcoder_index_2 = 0;
522 &(p_device->
xcoders[dev_type][xcoder_index_2]);
530 ddr_module_id = p_device_info->
module_id;
536 "\t\t\t\t\"MaxNumInstances\": %d,\n"
537 , p_device_info->
hw_id,
544 "\"Crop (ni_quadra_crop), Scale (ni_quadra_scale), Pad "
545 "(ni_quadra_pad), Overlay (ni_quadra_overlay), "
546 "Drawbox (ni_quadra_drawbox), Rotate (ni_quadra_rotate), "
547 "XStack (ni_quadra_xstack), Delogo (ni_quadra_delogo), "
548 "Merge (ni_quadra_merge), Flip (ni_quadra_flip), "
549 "Drawtext (ni_quadra_drawtext)\"\n");
557 "\t\t\t\t\t\t\"Computing Power\": \"int8 18 tops\",\n"
558 "\t\t\t\t\t\t\"Operations\": "
559 "\"ROI (ni_quadra_roi), Background Replace (ni_quadra_bg), "
560 "Ai Pre-processing (ni_quadra_ai_pre), "
561 "Background Remove (ni_quadra_bgr), Hvsplus (ni_quadra_hvsplus)\"\n");
573 strcat_dyn_buf(&output_buf,
"\t\t\t\t\"%s (%s) Capabilities\": [\n",
577 ni_enc_name_str[p_device_info->dev_cap[i].supports_codec]);
587 "\"yuv420p, yuv420p10le, nv12, p010le, ni_quad\",\n");
591 "\"yuvj420p, ni_quad\",\n");
606 "\"yuv420p, yuvj420p, yuv420p10le, nv12, p010le, ni_quad\",\n");
610 "\"yuvj420p, ni_quad\",\n");
617 strcat_dyn_buf(&output_buf,
"\t\t\t\t\t\t\"MaxResolution\": \"%dx%d\",\n"
618 "\t\t\t\t\t\t\"MinResolution\": \"%dx%d\""
627 strcat_dyn_buf(&output_buf,
",\n\t\t\t\t\t\t\"Profiles\": \"%s\"",
654 if (ddr_module_id >= 0)
656 strcat_dyn_buf(&output_buf,
"\t\t\"Memory #%d\": [\n", ddr_module_id);
659 "\t\t\t\t\"Size\": \"8GB\"\n");
670 printf(
"%s", output_buf.
str_buf);
675int32_t
main(
int argc,
char *argv[])
678 bool list_uninitialized =
false;
683 while ((opt =
getopt(argc, argv,
"ahvlo:")) != -1)
688 list_uninitialized =
true;
692 printf(
"-------- ni_rsrc_list v%s --------\n"
693 "Display information for NETINT hardware.\n"
695 "-a Print includes info for uninitialized cards.\n"
696 "-h Display this help and exit.\n"
697 "-v Print version info.\n"
698 "-o Output format. [text, full, json]\n"
700 "-l Set loglevel of libxcoder API.\n"
701 " [none, fatal, error, info, debug, trace]\n"
706 printf(
"Release ver: %s\n"
719 (void)fprintf(stderr,
"FATAL: invalid log level selected: %s\n",
726 if (!strcmp(
optarg,
"text"))
730 else if (!strcmp(
optarg,
"full"))
734 else if (!strcmp(
optarg,
"json"))
740 (void)fprintf(stderr,
"Error: unknown selection for outputFormat: %s\n",
optarg);
745 (void)fprintf(stderr,
"FATAL: invalid arg '%c'\n", opt);
775 print_full_text(device);
#define NI_XCODER_REVISION
#define LIBXCODER_API_VERSION
@ NI_DEVICE_TYPE_XCODER_MAX
#define GET_XCODER_DEVICE_TYPE_STR(t)
int getopt(int argc, char *argv[], const char *optstring)
Implementation of getopt() and getopt_long() for Windows environment.
ni_log_level_t arg_to_ni_log_level(const char *arg_str)
Convert terminal arg string to ni_log_level_t.
void ni_log_set_level(ni_log_level_t level)
Set ni_log_level.
void ni_log(ni_log_level_t level, const char *fmt,...)
print log message using ni_log_callback
#define NI_SW_RELEASE_TIME
ni_retcode_t ni_rsrc_list_all_devices2(ni_device_t *p_device, bool list_uninitialized)
Grabs information for every initialized and uninitialized device.
Public definitions for managing NETINT video processing devices.
#define DYN_STR_BUF_CHUNK_SIZE
struct dyn_str_buf dyn_str_buf_t
int strcat_dyn_buf(dyn_str_buf_t *dyn_str_buf, const char *fmt,...)
Accumulate string data in a dynamically sized buffer. This is useful to separate error messages from ...
void clear_dyn_str_buf(dyn_str_buf_t *dyn_str_buf)
ni_retcode_t ni_strerror(char *dest, size_t dmax, int errnum)
int ni_vsprintf(char *dest, const size_t dmax, const char *fmt, va_list args)
uint8_t fw_commit_time[26]
uint8_t serial_number[20]
char dev_name[NI_MAX_DEVICE_NAME_LEN]
uint8_t fw_commit_hash[41]
int fw_ver_compat_warning
ni_device_type_t device_type
uint8_t fl_ver_last_ran[8]
uint8_t fw_branch_name[256]
uint8_t fw_rev_nor_flash[8]
uint8_t fw_build_time[26]
uint8_t fl_ver_nor_flash[8]
ni_device_video_capability_t dev_cap[EN_CODEC_MAX]
char level[NI_LEVELS_SUPP_STR_LEN]
char profiles_supported[NI_PROFILES_SUPP_STR_LEN]
ni_device_info_t xcoders[NI_DEVICE_TYPE_XCODER_MAX][NI_MAX_DEVICE_CNT]
int xcoder_cnt[NI_DEVICE_TYPE_XCODER_MAX]