libxcoder  5.2.0
ni_quadra_filter_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_quadra_filter_api.h
24 *
25 * \brief NETINT filters API header file
26 *
27 *******************************************************************************/
28 
29 #pragma once
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 // #include "ni_defs.h"
34 // #include "ni_rsrc_api.h"
35 // #include "ni_util.h"
36 // #include "ni_device_api.h"
37 // #include "ni_av_codec.h"
38 // #include "ni_bitstream.h"
39 #define LIB_API
40 
41 #ifdef _WIN32
42 #include <windows.h>
43 #include <process.h>
44 #include <malloc.h>
45 #elif __linux__ || __APPLE__
46 #if __linux__
47 #include <linux/types.h>
48 #endif
49 #include <sys/time.h>
50 #include <pthread.h>
51 #include <errno.h>
52 #include <semaphore.h>
53 #endif
54 
55 #include <assert.h>
56 #include <ctype.h>
57 #include <inttypes.h>
58 #include <signal.h>
59 #include <stdbool.h>
60 #include <stdint.h>
61 #include <stdio.h>
62 #include <stdlib.h>
63 #include <string.h>
64 #include <time.h>
65 
66 #include "ni_macro_defs_quadra.h"
67 
68 #ifndef __va_list__
69 typedef __gnuc_va_list va_list;
70 #endif /* not __va_list__ */
71 
72 #define NI_QUADRA_BEST_MODEL_LOAD_STR "bestmodelload"
73 #define NI_QUADRA_BEST_REAL_LOAD_STR "bestload"
74 
75 // if you change it, you need change ni_device_api.h
76 // NI_MAX_KEEP_ALIVE_TIMEOUT NI_MIN_KEEP_ALIVE_TIMEOUT NI_DEFAULT_KEEP_ALIVE_TIMEOUT
77 #define NI_QUADRA_MAX_KEEP_ALIVE_TIMEOUT 100
78 #define NI_QUADRA_MIN_KEEP_ALIVE_TIMEOUT 1
79 #define NI_QUADRA_DEFAULT_KEEP_ALIVE_TIMEOUT 3
80 
81 // if you change it, you need change ni_device_api.h MAX_NUM_FRAMEPOOL_HWAVFRAME
82 #define MAX_QUADRA_NUM_FRAMEPOOL_HWAVFRAME 128
83 
84 
85 // if change it, you need change ni_def.h NI_MAX_NUM_DATA_POINTERS
86 #define NI_QUADRA_MAX_NUM_DATA_POINTERS 4
87 
88 // if change it, you need change ni_device_api.h NI_MAX_NUM_AUX_DATA_PER_FRAME
89 #define NI_QUADRA_MAX_NUM_AUX_DATA_PER_FRAME 16
90 
91 // if change it, you need change ni_def.h NI_MAX_NUM_OF_DECODER_OUTPUTS
92 #define NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS 3
93 
94 // if change it, you need change ni_def.h NI_MAX_PPU_PARAM_EXPR_CHAR
95 #define NI_QUADRA_MAX_PPU_PARAM_EXPR_CHAR 20
96 
97 // if change it, you need change ni_device_api.h NI_MAX_FIFO_CAPACITY
98 #define NI_QUADRA_MAX_FIFO_CAPACITY 120
99 
100 // if change it, you need change ni_device_api.h NI_NOPTS_VALUE
101 #define NI_QUADRA_NOPTS_VALUE ((int64_t)UINT64_C(0x8000000000000000))
102 
103 /*Values below used for VPU resolution range checking*/
104 // if change it, you need change ni_device_api.h
105 // NI_MAX_WIDTH NI_MIN_WIDTH NI_MAX_HEIGHT NI_MIN_HEIGHT
106 #define NI_QUADRA_MAX_WIDTH 8192
107 #define NI_QUADRA_MIN_WIDTH 144
108 #define NI_QUADRA_MAX_HEIGHT 8192
109 #define NI_QUADRA_MIN_HEIGHT 128
110 
111 #define NIALIGN(x, a) (((x) + (a)-1) & ~((a)-1))
112 #define NIMAX(a, b) ((a) > (b) ? (a) : (b))
113 #define NIMIN(a, b) ((a) > (b) ? (b) : (a))
114 
115 // if change it, you need change ni_device_api.h
116 #define NI_QUADRA_SCALER_FLAG_IO \
117  0x0001 /* 0 = source frame, 1 = destination frame */
118 #define NI_QUADRA_SCALER_FLAG_PC \
119  0x0002 /* 0 = single allocation, 1 = create pool */
120 #define NI_QUADRA_SCALER_FLAG_PA \
121  0x0004 /* 0 = straight alpha, 1 = premultiplied alpha */
122 #define NI_QUADRA_SCALER_FLAG_P2 \
123  0x0008 /* 0 = normal allocation, 1 = P2P allocation */
124 #define NI_QUADRA_SCALER_FLAG_FCE \
125  0x0010 /* 0 = no fill color, 1 = fill color enabled */
126 #define NI_QUADRA_SCALER_FLAG_CS \
127  0x0020 /* 0 = BT.709, 1 = BT.2020 */
128 #define NI_QUADRA_SCALER_FLAG_CMP \
129  0x0800 /* 0 = no compress, 1 = compress*/
130 
131 #define NI_QUADRA_AI_FLAG_IO 0x0001 /* 0 = source frame, 1 = destination frame */
132 #define NI_QUADRA_AI_FLAG_PC 0x0002 /* 0 = single allocation, 1 = create pool */
133 
134 // if change it, you need change ni_device_api.h
135 // NI_MAX_RESOLUTION_WIDTH NI_MAX_RESOLUTION_HEIGHT
136 #define NI_QUADRA_MAX_RESOLUTION_WIDTH 8192
137 #define NI_QUADRA_MAX_RESOLUTION_HEIGHT 8192
138 
139 #define NI_QUADRA_MIN_RESOLUTION_WIDTH_SCALER 32
140 #define NI_QUADRA_MIN_RESOLUTION_HEIGHT_SCALER 32
141 
142 // if change it, you need change ni_device_api.h NI_MAX_SUPPORT_DRAWBOX_NUM
143 #define NI_QUADRA_MAX_SUPPORT_DRAWBOX_NUM 5
144 #define NI_QUADRA_MAX_SUPPORT_WATERMARK_NUM 6
145 
146 #define NI_QUADRA_MAX_DEVICE_CNT 128
147 
148 // Assume that each buffer is the same size
149 typedef struct _ni_fifo_buffer_t
150 {
151  pthread_mutex_t mutex;
152  uint32_t number_of_buffers; // total number of buffers
153  uint32_t buffer_size; // the size of every buffer
155  uint8_t *buffer;
156  uint32_t rndx, wndx;
158 
159 typedef enum
160 {
161  NI_QUADRA_LOG_INVALID = -1, // invalid selection
162  NI_QUADRA_LOG_NONE = 0, // display no logging
163  NI_QUADRA_LOG_FATAL = 1, // log messages immediately prior to program exit
164  NI_QUADRA_LOG_ERROR = 2, // error messages
165  NI_QUADRA_LOG_INFO = 3, // info and warning messages
166  NI_QUADRA_LOG_DEBUG = 4, // very verbose messages about program execution
167  NI_QUADRA_LOG_TRACE = 5 // most verbose messages (eg. function enter/exit, NVMe
168  // transactions, read/write polling retries)
170 
172 {
178 // if change it, you need change ni_def.h ni_scaler_opcode_t
180 {
194 
195 // if change it, you need change ni_device_api.h ni_codec_format_t
197 {
204 
205 typedef enum
206 {
215 
216 // if change it, you need change ni_def.h ni_device_type_t
217 typedef enum
218 {
220 
221  // xcoder instance types
227 
228  // pseudo types
230  4, // share instance with NI_DEVICE_TYPE_ENCODER
231 
234 
235 typedef enum
236 {
237  NI_QUADRA_PIX_FMT_YUV420P = 0, /* 8-bit YUV420 planar */
238  NI_QUADRA_PIX_FMT_YUV420P10LE = 1, /* 10-bit YUV420 planar */
239  NI_QUADRA_PIX_FMT_NV12 = 2, /* 8-bit YUV420 semi-planar */
240  NI_QUADRA_PIX_FMT_P010LE = 3, /* 10-bit YUV420 semi-planar */
241  NI_QUADRA_PIX_FMT_RGBA = 4, /* 32-bit RGBA packed */
242  NI_QUADRA_PIX_FMT_BGRA = 5, /* 32-bit BGRA packed */
243  NI_QUADRA_PIX_FMT_ARGB = 6, /* 32-bit ARGB packed */
244  NI_QUADRA_PIX_FMT_ABGR = 7, /* 32-bit ABGR packed */
245  NI_QUADRA_PIX_FMT_BGR0 = 8, /* 32-bit RGB packed */
246  NI_QUADRA_PIX_FMT_BGRP = 9, /* 24-bit RGB packed */
247  NI_QUADRA_PIX_FMT_NV16 = 10, /* 8-bit YUV422 semi-planar */
248  NI_QUADRA_PIX_FMT_YUYV422 = 11, /* 8-bit YUV422 */
249  NI_QUADRA_PIX_FMT_UYVY422 = 12, /* 8-bit YUV422 */
250  NI_QUADRA_PIX_FMT_8_TILED4X4 = 13, /* 8 bit tiled4x4 */
251  NI_QUADRA_PIX_FMT_10_TILED4X4 = 14, /* 10 bit tiled4x4 */
252  NI_QUADRA_PIX_FMT_NONE = 15, /* invalid format */
253  NI_QUADRA_PIX_FMT_YUV420P10BE = 16, /* 10-bit YUV420 planar */
256 
257 // if change it, you need change ni_device_api.h ni_frame_config_t
259 {
260  uint16_t picture_width;
261  uint16_t picture_height;
262  uint16_t picture_format;
263  uint16_t options;
264  uint16_t rectangle_width;
266  int16_t rectangle_x;
267  int16_t rectangle_y;
268  uint32_t rgba_color;
269  uint16_t frame_index;
270  uint16_t session_id;
271  uint8_t output_index;
272  uint8_t orientation; // 0 <= n <= 3, (n * 90°) clockwise rotation
274 
276 {
277  uint32_t num_of_dims; /* The number of dimensions specified in *sizes */
278  uint32_t sizes[6]; /* The pointer to an array of dimension */
279  int32_t
280  data_format; /* Data format for the tensor, see ni_ai_buffer_format_e */
281  int32_t
282  quant_format; /* Quantized format see ni_ai_buffer_quantize_format_e */
283  union
284  {
285  struct
286  {
287  int32_t
288  fixed_point_pos; /* Specifies the fixed point position when the input element type is int16, if 0 calculations are performed in integer math */
289  } dfp;
290 
291  struct
292  {
293  float scale; /* Scale value for the quantized value */
294  int32_t zeroPoint; /* A 32 bit integer, in range [0, 255] */
295  } affine;
296  } quant_data; /* The union of quantization information */
297  /* The type of this buffer memory. */
298  uint32_t memory_type;
300 
302 {
306 
308 {
309  int32_t offset;
311 
313 {
314  uint32_t input_num;
315  uint32_t output_num;
318  *inset; /* point to each input layer start offset from p_frame */
320  *outset; /* point to each output layer start offset from p_packet */
322 
323 // if change this structure, you need to change ni_device_api.h ni_frameclone_desc_t
325 {
326  uint16_t ui16SrcIdx;
327  uint16_t ui16DstIdx;
328  uint32_t ui32Offset;
329  uint32_t ui32Size;
330  uint32_t reserved;
332 
333 /*!*
334 * \brief This is an enumeration for hw actions
335 */
337 {
345 
346 typedef struct _ni_quadra_filter_t
347 {
348  int32_t device_handle;
349  int32_t blk_io_handle;
351  uint32_t device_type;
353  int hw_id;
356  /* from the command line, which resource allocation method we use */
357  void *api_ctx;
358  void *params;
359  void *dst_frame;
360  /* for drawtext filter use */
361  void *dl_frame;
362  void *txt_frame;
363  void *dst_pkt;
364 
367  int keep_alive_timeout; /* keep alive timeout setting */
368  bool is_p2p;
374 
376 {
377  int enabled;
378  int w[3];
379  int h[3];
380  int f[3]; //planar format
381  int f8b[3]; //forced 8bit
382  //int crop_meta_data_rltb[3][4]; //crop rectangle
384 // if change it, you need change ni_device_api.h niFrameSurface1_t
386 {
387  uint16_t ui16FrameIdx; //frame location on device
388  uint16_t ui16session_ID; //for instance tracking
389  uint16_t ui16width; // width on device
390  uint16_t ui16height; // height on device
391  uint32_t ui32nodeAddress; //currently not in use, formerly offset
392  int32_t device_handle; //handle to access device
393  int8_t bit_depth; //1 == 8bit per pixel, 2 == 10bit
394  int8_t encoding_type; //0 = semiplanar, 1 = planar, 2 = tiled4x4
395  int8_t output_idx; // 0-2 for decoder output index
396  int8_t src_cpu; // frame origin location
397  int32_t dma_buf_fd; // P2P dma buffer file descriptor
399 
400 typedef struct NIFramesContext
401 {
405  void *api_ctx; //for down/uploading frames
406  void *src_session_io_data; // for upload frame to be sent up
408  void *dst_frame;
410  int uploader_device_id; //same one passed to libxcoder session open
415 typedef struct AVNIDeviceContext
416 {
419 
420  int32_t cards[128];
422 
423 // if change it, you need change ni_device_api.h ni_scaler_drawbox_params_t
425 {
426  uint32_t start_x;
427  uint32_t start_y;
428  uint32_t end_x;
429  uint32_t end_y;
430  uint32_t rgba_c;
432 
434  uint32_t ui32StartX;
435  uint32_t ui32StartY;
436  uint32_t ui32Width;
437  uint32_t ui32Height;
438  uint32_t ui32Valid;
440 
441 // if change it, you need change ni_device_api.h ni_scaler_multi_drawbox_params_t
443 {
447 
449 {
453 
454 typedef struct _ni_quadra_card_info
455 {
456  int card_idx;
457  int load;
459  int task_num;
464 
466 {
473  int err_code;
475 
477 {
478  uint32_t fps;
479  uint32_t h;
480  uint32_t w;
481  uint32_t code_format;
483  uint32_t rdoLevel;
484  uint32_t lookaheadDepth;
485  uint32_t bit_8_10;
486  int uploader;/*1 for uploader,0 for not uploader*/
487  int rgba;/*1 for rgba,0 for not*/
489 
491 {
492  uint32_t fps;
493  uint32_t h;
494  uint32_t w;
495  uint32_t bit_8_10;
496  int rgba;
497  int hw_frame;/*if out=hw,1 for out = hw_frame,0 for not*/
499 
501 {
502  uint32_t h;
503  uint32_t w;
504  uint32_t bit_8_10;
505  int rgba;
507 
509 {
510  uint32_t h;
511  uint32_t w;
512  uint32_t bit_8_10;
513  int rgba;
515 
517 {
522 
524 {
525  int hw_mode;
531 
533 {
537 
539 {
540  int32_t lock;
543 
544 /*!*****************************************************************************
545  * \brief Init filter
546  *
547  * \param[in/out] nifilter Pointer ni_quadra_filter_t
548  *
549  * \return On success
550  * NI_RETCODE_SUCCESS
551  * On failure
552  * NI_RETCODE_FAILURE
553  *
554  *******************************************************************************/
556 
557 /*!*****************************************************************************
558  * \brief Alloc frame pool for filter
559  *
560  * \param[in/out] nifilter Pointer ni_quadra_filter_t
561  * \param[in] width frame width
562  * \param[in] height frame height
563  * \param[in] out_format frame format
564  *
565  * \return On success
566  * NI_RETCODE_SUCCESS
567  * On failure
568  * NI_RETCODE_FAILURE
569  *
570  *******************************************************************************/
571 LIB_API int ni_quadra_build_frame_pool(ni_quadra_filter_t *nifilter, int width,
572  int height, int out_format,
573  int pool_size);
574 
575 /*!*****************************************************************************
576 * \brief Allocate memory for the hwDescriptor buffer based on provided
577 * parameters taking into account pic size and extra data.
578 *
579 * \param[in/out] nifilter Pointer ni_quadra_filter_t
580 *
581 * \param[in] video_width Width of the video frame
582 * \param[in] video_height Height of the video frame
583 * \param[in] extra_len Extra data size (incl. meta data)
584 *
585 * \return On success
586 * NI_RETCODE_SUCCESS
587 * On failure
588 * NI_RETCODE_FAILURE
589 * NI_RETCODE_ERROR_MEM_ALOC
590 *****************************************************************************/
591 LIB_API int
593  int video_width, int video_height,
594  int extra_len);
595 
596 /*!*****************************************************************************
597  * \brief Allocate a frame on the device for 2D engine or AI engine
598  * to work on based on provided parameters
599  *
600  * \param[in/out] nifilter Pointer ni_quadra_filter_t
601  * \param[in] width width, in pixels
602  * \param[in] height height, in pixels
603  * \param[in] format pixel format
604  * \param[in] options options bitmap flags, bit 0 (NI_SCALER_FLAG_IO) is
605  * 0=input frame or 1=output frame. Bit 1 (NI_SCALER_FLAG_PC) is
606  * 0=single allocation, 1=create pool. Bit 2 (NI_SCALER_FLAG_PA) is
607  * 0=straight alpha, 1=premultiplied alpha
608  * \param[in] rectangle_width clipping rectangle width
609  * \param[in] rectangle_height clipping rectangle height
610  * \param[in] rectangle_x horizontal position of clipping rectangle
611  * \param[in] rectangle_y vertical position of clipping rectangle
612  * \param[in] rgba_color RGBA fill colour (for padding only)
613  * \param[in] frame_index input hwdesc index
614  * \param[in] device_type only NI_DEVICE_TYPE_SCALER
615  * and NI_DEVICE_TYPE_AI (only needs p_ctx and frame_index)
616  *
617  * \return NI_RETCODE_FAILURE
618  * NI_RETCODE_ERROR_INVALID_SESSION
619  * NI_RETCODE_ERROR_NVME_CMD_FAILED
620  * NI_RETCODE_ERROR_MEM_ALOC
621  ******************************************************************************/
623  ni_quadra_filter_t *nifilter, int width, int height, int format,
624  int options, int rectangle_width, int rectangle_height, int rectangle_x,
625  int rectangle_y, int rgba_color, int frame_index, int type);
626 
627 /*!*****************************************************************************
628  * \brief Allocate a frame on the device and return the frame index
629  *
630  * \param[in] p_ctx pointer to session context
631  * \param[in] p_out_surface pointer to output frame surface
632  * \param[in] device_type currently only NI_DEVICE_TYPE_AI
633  *
634  * \return NI_RETCODE_INVALID_PARAM
635  * NI_RETCODE_ERROR_INVALID_SESSION
636  * NI_RETCODE_ERROR_UNSUPPORTED_FW_VERSION
637  * NI_RETCODE_ERROR_NVME_CMD_FAILED
638  * NI_RETCODE_ERROR_MEM_ALOC
639  ******************************************************************************/
641  niquadraFrameSurface1_t *p_hwdesc,
642  int type);
643 
644 /*!*****************************************************************************
645  * \brief Copy the data of src hwframe to dst hwframe
646  *
647  * \param[in] p_ctx pointer to session context
648  * \param[in] p_frameclone_desc pointer to the frameclone descriptor
649  *
650  * \return NI_RETCODE_INVALID_PARAM
651  * NI_RETCODE_ERROR_UNSUPPORTED_FW_VERSION
652  * NI_RETCODE_ERROR_INVALID_SESSION
653  * NI_RETCODE_ERROR_NVME_CMD_FAILED
654  * NI_RETCODE_ERROR_MEM_ALOC
655  ******************************************************************************/
657  ni_quadra_filter_t *nifilter,
658  ni_quadra_frameclone_desc_t *p_frameclone_desc);
659 
660 /*!*****************************************************************************
661 * \brief Read data from the device
662 * If device_type is NI_DEVICE_TYPE_DECODER reads data hwdesc from
663 * decoder
664 * If device_type is NI_DEVICE_TYPE_SCALER reads data hwdesc from
665 * scaler
666 *
667 * \param[in/out] p_ctx Pointer to void *
668 * ni_session_context_t struct
669 * \param[in/out] p_data Pointer to void *
670 * ni_session_data_io_t struct
671 * \param[in] device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_SCALER
672 * If NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_SCALER is specified,
673 * hw descriptor info will be stored in p_data ni_frame
674 * \return On success
675 * Total number of bytes read
676 * On failure
677 * NI_RETCODE_FAILURE
678 * NI_RETCODE_ERROR_NVME_CMD_FAILED
679 * NI_RETCODE_ERROR_INVALID_SESSION
680 ******************************************************************************/
681 LIB_API int
682 ni_quadra_device_session_read_hwdesc(void *p_ctx, void *p_data,
683  int device_type);
684 
685 /*!*****************************************************************************
686  * \brief Read data from the device
687  * If device_type is NI_DEVICE_TYPE_DECODER reads data packet from
688  * decoder
689  * If device_type is NI_DEVICE_TYPE_ENCODER reads data frame from
690  * encoder
691  * If device_type is NI_DEVICE_TYPE_AI reads data frame from AI engine
692  *
693  * \param[in/out] p_ctx Pointer to void *
694  * ni_session_context_t struct
695  * \param[in/out] p_data Pointer to void *
696  * ni_session_data_io_t struct
697  * \param[in] device_type NI_DEVICE_TYPE_DECODER, NI_DEVICE_TYPE_ENCODER, or
698  * NI_DEVICE_TYPE_SCALER
699  * If NI_DEVICE_TYPE_DECODER is specified, data that
700  * was read will be placed into ni_frame_t struct
701  * inside the p_data pointer
702  * If NI_DEVICE_TYPE_ENCODER is specified, data that
703  * was read will be placed into ni_packet_t struct
704  * inside the p_data pointer
705  * If NI_DEVICE_TYPE_AI is specified, data that was
706  * read will be placed into ni_frame_t struct inside
707  * the p_data pointer
708  * \return On success
709  * Total number of bytes read
710  * On failure
711  * NI_RETCODE_INVALID_PARAM
712  * NI_RETCODE_ERROR_NVME_CMD_FAILED
713  * NI_RETCODE_ERROR_INVALID_SESSION
714  ******************************************************************************/
715 LIB_API int ni_quadra_device_session_read(void *p_ctx, void *p_data,
716  int device_type);
717 
718 /*!******************************************************************************
719  * \brief Send a p_config command to configure scaling drawbox parameters.
720  *
721  * \param[in/out] nifilter Pointer ni_quadra_filter_t
722  * \param[in] p_params Pointer ni_quadra_scaler_drawbox_params_t
723  *
724  * \return - NI_RETCODE_SUCCESS on success, NI_RETCODE_ERROR_INVALID_SESSION, NI_RETCODE_ERROR_NVME_CMD_FAILED on failure
725 *******************************************************************************/
728 
729 /*!******************************************************************************
730  * \brief Send a p_config command to configure watermark parameters.
731  *
732  * \param[in/out] nifilter Pointer ni_quadra_filter_t
733  * \param[in] p_params Pointer ni_quadra_scaler_watermark_params_t
734  *
735  * \return - NI_RETCODE_SUCCESS on success, NI_RETCODE_ERROR_INVALID_SESSION, NI_RETCODE_ERROR_NVME_CMD_FAILED on failure
736 *******************************************************************************/
739 
740 /*!*****************************************************************************
741 * \brief Get data from device
742 *
743 * \param[in/out] nifilter Pointer ni_quadra_filter_t
744 * \param[in] data frame data
745 * \param[in] width frame width
746 * \param[in] height frame height
747 *
748 * \return 0
749 *
750 ******************************************************************************/
752  uint8_t *data, int width,
753  int height);
754 
755 /*!*****************************************************************************
756 * \brief Get niframe data3 from device
757 *
758 * \param[in/out] p_frame Pointer void
759 *
760 * \return Pointer to uint8_t
761 *
762 ******************************************************************************/
763 uint8_t *ni_quadra_filter_get_data3(void *p_frame);
764 
765 /*!*****************************************************************************
766 * \brief prepare frames for ni_drawtext filter
767 *
768 * \param[in/out] niframe Pointer void
769 *
770 * \return 0
771 *
772 ******************************************************************************/
774 
775 /*!*****************************************************************************
776  * \brief Allocate preliminary memory for the frame buffer based on provided
777  * parameters.
778  *
779  * \param[in] niframe Pointer void
780  * \param[in] video_width Width of the video frame
781  * \param[in] video_height Height of the video frame
782  * \param[in] alignment Allignment requirement
783  * \param[in] pixel_format Format for input
784  *
785  * \return On success
786  * NI_RETCODE_SUCCESS
787  * On failure
788  * NI_RETCODE_INVALID_PARAM
789  * NI_RETCODE_ERROR_MEM_ALOC
790  ******************************************************************************/
792  int video_width,
793  int video_height,
794  int pixel_format);
795 
796 /*!*****************************************************************************
797 * \brief Close filter
798 *
799 * \param[in/out] nifilter Pointer ni_quadra_filter_t
800 *
801 * \return none
802 *
803 ******************************************************************************/
805 
806 /*!*****************************************************************************
807  * \brief configure a network context based with the network binary
808  *
809  * \param[in] nifilter Pointer to ni_quadra_filter_t
810  * \param[in] p_network Pointer to caller allocated ni_quadra_network_data_t
811  * \param[in] file Pointer to caller network binary file path
812  *
813  * \return NI_RETCODE_SUCCESS
814  * NI_RETCODE_INVALID_PARAM
815  * NI_RETCODE_ERROR_MEM_ALOC
816  * NI_RETCODE_ERROR_INVALID_SESSION
817  * NI_RETCODE_ERROR_NVME_CMD_FAILED
818  * NI_RETCODE_FAILURE
819  *
820  ******************************************************************************/
821 LIB_API int
823  ni_quadra_network_data_t *p_network,
824  const char *file);
825 
826 /*!*****************************************************************************
827  * \brief configure a hvsplus context based with the network binary
828  *
829  * \param[in] nifilter Pointer to ni_quadra_filter_t
830  * \param[in] p_network Pointer to caller allocated ni_quadra_network_data_t
831  * \param[in] nb_width Width for network binary
832  * \param[in] nb_height Height for network binary
833  * \param[in] level Hvsplus level
834  * \param[in] format Pixel format
835  *
836  * \return NI_RETCODE_SUCCESS
837  * NI_RETCODE_INVALID_PARAM
838  * NI_RETCODE_ERROR_MEM_ALOC
839  * NI_RETCODE_ERROR_INVALID_SESSION
840  * NI_RETCODE_ERROR_NVME_CMD_FAILED
841  * NI_RETCODE_FAILURE
842  *
843  ******************************************************************************/
844 LIB_API int
846  ni_quadra_network_data_t *p_network,
847  int nb_width,
848  int nb_height,
849  int level,
850  int format);
851 
852 /*!*****************************************************************************
853  * \brief Allocate input layers memory for AI frame buffer based on provided parameters
854  * taking into account width, height, format defined by network.
855  *
856  * \param[out] p_frame Pointer to void *
857  * \param[in] p_network Pointer to caller allocated ni_network_data_t
858  *
859  * \return NI_RETCODE_SUCCESS
860  * NI_RETCODE_INVALID_PARAM
861  * NI_RETCODE_ERROR_MEM_ALOC
862  *
863  ******************************************************************************/
864 LIB_API int
865 ni_quadra_ai_frame_buffer_alloc(void *p_frame,
866  ni_quadra_network_data_t *p_network);
867 
868 /*!*****************************************************************************
869  * \brief Allocate output layers memory for the packet buffer based on provided network
870  *
871  * \param[out] p_pkt Pointer to void *
872  * \param[in] p_network Pointer to a caller allocated
873  * ni_quadra_network_data_t struct
874  *
875  * \return On success
876  * NI_RETCODE_SUCCESS
877  * On failure
878  * NI_RETCODE_INVALID_PARAM
879  * NI_RETCODE_ERROR_MEM_ALOC
880  ******************************************************************************/
881 LIB_API int
883  ni_quadra_network_data_t *p_network);
884 
885 /*!*****************************************************************************
886  * \brief Get dims from ni_quadra_network_layer_params_t
887  *
888  * \param[out] p_param Pointer to ni_quadra_network_layer_params_t
889  *
890  * \return uint32_t
891  ******************************************************************************/
892 LIB_API uint32_t
894 
895 /*!*****************************************************************************
896  * \brief Convert data from nipacket to dst data
897  *
898  * \param[in/out] p_data Pointer to void *
899  * ni_session_data_io_t struct
900  * \param[in] dst Pointer to float
901  * \param[in] num output_number
902  * \param[in] p_network Pointer to ni_quadra_network_data_t
903  * \param[in] layer int value
904  *
905  * \return uint32_t
906  ******************************************************************************/
908  void *p_data, float *dst, uint32_t num,
909  ni_quadra_network_data_t *p_network, uint32_t layer);
910 
911 /*!*****************************************************************************
912  * \brief Allocate memory for the frame buffer based on provided parameters
913  * taking into account the pixel format, width, height, stride,
914  * alignment, and extra data
915  * \param[in] p_frame Pointer to caller allocated void
916  * \param[in] pixel_format a pixel format in ni_pix_fmt_t enum
917  * \param[in] video_width width, in pixels
918  * \param[in] video_height height, in pixels
919  * \param[in] linesize horizontal stride
920  * \param[in] alignment apply a 16 pixel height alignment (T408 only)
921  * \param[in] extra_len meta data size
922  *
923  * \return NI_RETCODE_SUCCESS
924  * NI_RETCODE_INVALID_PARAM
925  * NI_RETCODE_ERROR_MEM_ALOC
926  *
927  ******************************************************************************/
928 int ni_quadra_frame_buffer_alloc_pixfmt(void *p_frame, int pixel_format,
929  int video_width, int video_height,
930  int linesize[], int alignment,
931  int extra_len);
932 
933 /*!*****************************************************************************
934 * \brief Reads YUV data from hw descriptor stored location on device
935 *
936 * \param[in] p_ctx Pointer to a caller allocated
937 * \param[in] p_data Pointer to a caller allocated
938 * ni_session_data_io_t struct which contains either a
939 * ni_frame_t data frame or ni_packet_t data packet to
940 * send
941 * \param[in] hwdesc HW descriptor to find frame in XCODER
942 * \return On success
943 * Total number of bytes read
944 * On failure
945 * NI_RETCODE_INVALID_PARAM
946 * NI_RETCODE_ERROR_NVME_CMD_FAILED
947 * NI_RETCODE_ERROR_INVALID_SESSION
948 *******************************************************************************/
949 int ni_quadra_device_session_hwdl(void *p_ctx, void *p_data,
950  niquadraFrameSurface1_t *hwdesc);
951 
952 /*!*****************************************************************************
953 * \brief Init filter session context only malloc session
954 *
955 * \param[in/out] ni_ctx Pointer NIFramesContext
956 *
957 * \return On success
958 * NI_RETCODE_SUCCESS
959 * On failure
960 * NI_RETCODE_FAILURE
961 *
962 ******************************************************************************/
964 
965 /*!*****************************************************************************
966 * \brief Init filter split context malloc session and set it default
967 *
968 * \param[in/out] ni_ctx Pointer NIFramesContext
969 * \param[in] w avctx width
970 * \param[in] h avctx height
971 *
972 * \return On success
973 * NI_RETCODE_SUCCESS
974 * On failure
975 * NI_RETCODE_FAILURE
976 *
977 ******************************************************************************/
978 LIB_API int ni_quadra_init_split_rsrc(NIFramesContext *ni_ctx, int w, int h);
979 
980 /*!*****************************************************************************
981 * \brief Init filter frame context and set value to session context
982 *
983 * \param[in/out] ni_ctx Pointer NIFramesContext
984 * \param[in] width avctx width
985 * \param[in] height avctx height
986 * \param[in] ni_fmat avctx format
987 * \param[in] keep_alive_time keep_alive_time
988 *
989 * \return On success
990 * NI_RETCODE_SUCCESS
991 * On failure
992 * NI_RETCODE_FAILURE
993 *
994 ******************************************************************************/
996  int *height, int ni_fmat,
997  int keep_alive_time);
998 
999 /*!*****************************************************************************
1000 * \brief Close filter context and frame
1001 *
1002 * \param[in/out] ni_ctx Pointer NIFramesContext
1003 * \param[in] pool_size avctx width
1004 *
1005 * \return On success
1006 * NI_RETCODE_SUCCESS
1007 * On failure
1008 * NI_RETCODE_FAILURE
1009 *
1010 ******************************************************************************/
1012  int pool_size);
1013 
1014 /*!*****************************************************************************
1015 * \brief Close device
1016 *
1017 * \param[in/out] ni_hw_ctx Pointer AVNIDeviceContext
1018 *
1019 * \return On success
1020 * NI_RETCODE_SUCCESS
1021 * On failure
1022 * NI_RETCODE_FAILURE
1023 *
1024 ******************************************************************************/
1026 
1027 /*!*****************************************************************************
1028 * \brief Open hwupload filter
1029 *
1030 * \param[in/out] ni_ctx Pointer NIFramesContext
1031 *
1032 * \return On success
1033 * NI_RETCODE_SUCCESS
1034 * On failure
1035 * NI_RETCODE_FAILURE
1036 *
1037 ******************************************************************************/
1039 
1040 /*!*****************************************************************************
1041 * \brief Sends frame pool setup info to device
1042 *
1043 * \param[in] ni_ctx Pointer to NIFramesContext
1044 * \param[in] pool_size Upload session initial allocated frames count
1045 * must be > 0,
1046 * \param[in] pool 0 use the normal pool
1047 * 1 use a dedicated P2P pool
1048 *
1049 * \return On success Return code
1050 * On failure
1051 * NI_RETCODE_FAILURE
1052 * NI_RETCODE_ERROR_NVME_CMD_FAILED
1053 * NI_RETCODE_ERROR_INVALID_SESSION
1054 * NI_RETCODE_ERROR_MEM_ALOC
1055 *******************************************************************************/
1057  NIFramesContext *ni_ctx, uint32_t pool_size, uint32_t pool);
1058 
1059 /*!*****************************************************************************
1060 * \brief Sends frame pool setup info to device
1061 *
1062 * \param[in] ni_hw_ctx Pointer to AVNIDeviceContext
1063 * \param[in] device string device name
1064 *
1065 * \return On success
1066 * NI_RETCODE_SUCCESS
1067 * On failure
1068 * NI_RETCODE_FAILURE
1069 *
1070 *******************************************************************************/
1072  const char *device);
1073 
1074 /*!*****************************************************************************
1075 * \brief Sends frame pool setup info to device
1076 *
1077 * \param[in/out] ni_ctx Pointer to NIFramesContext
1078 * \param[in] dstbuf Pointer dst buf
1079 *
1080 * \param[in] dstdata Pointer dst data
1081 * \param[in] buf_size Pointer dst buf_size
1082 * \param[in] width frame width
1083 * \param[in] height frame height
1084 * \param[in] is_planar frame format is nv12
1085 *
1086 * \return On success
1087 * NI_RETCODE_SUCCESS
1088 * On failure
1089 * NI_RETCODE_ERROR_MEM_ALOC
1090 *******************************************************************************/
1092  uint8_t **dstbuf, uint8_t **dstdata,
1093  uint32_t *buf_size, int width,
1094  int height, int is_planar);
1095 /*!*****************************************************************************
1096 * \brief Free filter frame
1097 *
1098 * \param[in] opaque Pointer to void*
1099 * \param[in] data Pointer to void*
1100 *
1101 * \return none
1102 *
1103 *******************************************************************************/
1104 LIB_API void ni_quadra_filter_frame_free(void *opaque, uint8_t *data);
1105 
1106 /*!*****************************************************************************
1107 * \brief Upload frame
1108 *
1109 * \param[in/out] ni_ctx Pointer to NIFramesContext
1110 * \param[in] dst_surf Pointer to niquadraFrameSurface1_t
1111 *
1112 * \param[in] width frame width
1113 * \param[in] height frame height
1114 * \param[in] ni_fmat frame format
1115 * \param[in] nb_planes frame plane
1116 * \param[in] linesize frame linesize
1117 * \param[in] src_data pointer src data
1118 *
1119 * \return On success
1120 * NI_RETCODE_SUCCESS
1121 * On failure
1122 * NI_RETCODE_FAILURE
1123 *******************************************************************************/
1125  niquadraFrameSurface1_t *dst_surf,
1126  int width, int height, int ni_fmat,
1127  int nb_planes, const int *linesize,
1128  uint8_t **src_data);
1129 
1130 /*!*****************************************************************************
1131 * \brief Download frame
1132 *
1133 * \param[in/out] ni_ctx Pointer to NIFramesContext
1134 * \param[in] src_surf Pointer to niquadraFrameSurface1_t
1135 *
1136 * \param[in] width frame width
1137 * \param[in] height frame height
1138 * \param[in] ni_fmat frame format
1139 * \param[in] nb_planes frame plane
1140 * \param[in] linesize frame linesize
1141 * \param[in] dst_data pointer dst data
1142 *
1143 * \return On success
1144 * NI_RETCODE_SUCCESS
1145 * On failure
1146 * NI_RETCODE_FAILURE
1147 *******************************************************************************/
1149  niquadraFrameSurface1_t *src_surf,
1150  int width, int height, int ni_fmat,
1151  int nb_planes, const int *linesize,
1152  uint8_t **dst_data);
1153 
1154 /*!*****************************************************************************
1155 * \brief Split context set
1156 *
1157 * \param[in/out] ni_ctx Pointer to NIFramesContext
1158 * \param[in] ni_surf Pointer to niquadraFrameSurface1_t
1159 * \param[in] ni_surf1 Pointer to niquadraFrameSurface1_t
1160 * \param[in] ni_surf2 Pointer to niquadraFrameSurface1_t
1161 *
1162 * \param[in] num_extra_outputs split outputs number
1163 *
1164 * \return none
1165 *******************************************************************************/
1167  niquadraFrameSurface1_t *ni_surf,
1168  niquadraFrameSurface1_t *ni_surf_1,
1169  niquadraFrameSurface1_t *ni_surf_2,
1170  int num_extra_outputs);
1171 
1172 /*!*****************************************************************************
1173 * \brief Get session device id
1174 *
1175 * \param[in/out] session_ctx Pointer to void*
1176 *
1177 *
1178 * \return hw id
1179 *******************************************************************************/
1180 LIB_API int ni_quadra_get_device_id(void *session_ctx);
1181 
1182 /*!*****************************************************************************
1183 * \brief Get session device session id
1184 *
1185 * \param[in/out] session_ctx Pointer to void*
1186 *
1187 *
1188 * \return session id
1189 *******************************************************************************/
1190 LIB_API uint32_t ni_quadra_get_session_id(void *session_ctx);
1191 
1192 /*!*****************************************************************************
1193 * \brief Close device handle
1194 *
1195 * \param[in] handle Handle to close
1196 *
1197 *
1198 *******************************************************************************/
1199 LIB_API void ni_quadra_device_close(int32_t handle);
1200 
1201 /*!*****************************************************************************
1202 * \brief Get session device handle id
1203 *
1204 * \param[in/out] session_ctx Pointer to void*
1205 *
1206 *
1207 * \return session handle id
1208 *******************************************************************************/
1209 LIB_API int32_t ni_quadra_get_device_handle(void *session_ctx);
1210 
1211 /*!*****************************************************************************
1212 * \brief Set session device handle
1213 *
1214 * \param[in] session_ctx Pointer to void*
1215 * \param[in] handle Handle to set
1216 *
1217 *
1218 *******************************************************************************/
1219 LIB_API void ni_quadra_set_device_handle(void *session_ctx, int32_t handle);
1220 
1221 /*!*****************************************************************************
1222 * \brief Set download filter session context
1223 *
1224 * \param[in/out] session_ctx Pointer to void*
1225 * \param[in] value Bool need to set value
1226 *
1227 * \return none
1228 *******************************************************************************/
1229 LIB_API void ni_quadra_filter_session_dl_set(void *session_ctx, bool value);
1230 
1231 /*!*****************************************************************************
1232 * \brief Copy filter session context
1233 *
1234 * \param[in/out] src_ctx Pointer to void*
1235 * \param[in/out] dst_ctx Pointer to void*
1236 *
1237 * \return On success
1238 * NI_RETCODE_SUCCESS
1239 * On failure
1240 * NI_RETCODE_FAILURE
1241 *******************************************************************************/
1242 LIB_API int ni_quadra_device_session_copy(void *src_ctx, void *dst_ctx);
1243 
1244 /*!*****************************************************************************
1245 * \brief Copy filter session context
1246 *
1247 * \param[in/out] src_ctx Pointer to void*
1248 * \param[in/out] dst_ctx Pointer to void*
1249 *
1250 * \return On success
1251 * NI_RETCODE_SUCCESS
1252 * On failure
1253 * NI_RETCODE_FAILURE
1254 *******************************************************************************/
1255 LIB_API void ni_quadra_session_timestamp_copy(void *src_ctx, void *dst_ctx);
1256 
1257 /*!*****************************************************************************
1258 * \brief Get session context run status
1259 *
1260 * \param[in/out] session_ctx Pointer to void*
1261 *
1262 *
1263 * \return session context run status
1264 *******************************************************************************/
1265 LIB_API int ni_quadra_get_session_runstatus(void *session_ctx);
1266 
1267 /*!*****************************************************************************
1268 * \brief Set session context run status
1269 *
1270 * \param[in/out] session_ctx Pointer to void*
1271 *
1272 *
1273 * \return none
1274 *******************************************************************************/
1275 LIB_API void ni_quadra_set_session_runstatus(void *session_ctx, int status);
1276 
1277 /*!*****************************************************************************
1278 * \brief Get session context status
1279 *
1280 * \param[in/out] session_ctx Pointer to void*
1281 *
1282 *
1283 * \return session context status
1284 *******************************************************************************/
1285 LIB_API int ni_quadra_get_session_status(void *session_ctx);
1286 
1287 /*!*****************************************************************************
1288 * \brief Get session context blk_io_handle
1289 *
1290 * \param[in/out] session_ctx Pointer to void*
1291 *
1292 *
1293 * \return session context blk_io_handle
1294 *******************************************************************************/
1295 LIB_API int ni_quadra_get_session_blkiohandle(void *session_ctx);
1296 
1297 /*!*****************************************************************************
1298 * \brief Get niframui16FrameIdxe
1299 *
1300 * \param[in/out] niframe Pointer to void*
1301 *
1302 *
1303 * \return frame ui16FrameIdx
1304 *******************************************************************************/
1305 LIB_API uint16_t ni_quadra_get_frame_idx(void *niframe);
1306 
1307 /*!*****************************************************************************
1308 * \brief Get niframe address
1309 *
1310 * \param[in/out] niframe Pointer to void*
1311 *
1312 *
1313 * \return point niframe
1314 *******************************************************************************/
1315 LIB_API uint8_t *ni_quadra_get_niframe(void *niframe);
1316 
1317 /*!*****************************************************************************
1318 * \brief Get niframe buffer address
1319 *
1320 * \param[in/out] niframe Pointer to void*
1321 *
1322 *
1323 * \return point frame p_buffer
1324 *******************************************************************************/
1325 LIB_API uint8_t *ni_quadra_get_frame_buffer(void *niframe);
1326 
1327 /*!*****************************************************************************
1328 * \brief Get niframe buffer size
1329 *
1330 * \param[in/out] niframe Pointer to void*
1331 *
1332 *
1333 * \return niframe buffer size
1334 *******************************************************************************/
1335 LIB_API uint32_t ni_quadra_get_frame_buffer_size(void *niframe);
1336 
1337 /*!*****************************************************************************
1338 * \brief Get niframe data address
1339 *
1340 * \param[in/out] niframe Pointer to void*
1341 *
1342 *
1343 * \return niframe data address
1344 *******************************************************************************/
1345 LIB_API uint8_t **ni_quadra_get_frame_data(void *niframe);
1346 
1347 /*!*****************************************************************************
1348 * \brief Get nipacket data address
1349 *
1350 * \param[in/out] nipacket Pointer to void*
1351 *
1352 *
1353 * \return nipacket data address
1354 *******************************************************************************/
1355 LIB_API uint8_t *ni_quadra_get_packet_data(void *nipacket);
1356 
1357 /*!*****************************************************************************
1358 * \brief Get nipacket data len
1359 *
1360 * \param[in/out] nipacket Pointer to void*
1361 *
1362 *
1363 * \return nipacket data len
1364 *******************************************************************************/
1365 LIB_API uint32_t ni_quadra_get_packet_data_len(void *nipacket);
1366 
1367 /*!*****************************************************************************
1368 * \brief Get niframe data datalen
1369 *
1370 * \param[in/out] niframe Pointer to void*
1371 * \param[in] dst_datalen Pointer to int*
1372 *
1373 *
1374 * \return void
1375 *******************************************************************************/
1376 LIB_API void ni_quadra_get_frame_data_len(void *niframe, uint32_t *dst_datalen);
1377 
1378 /*!*****************************************************************************
1379 * \brief Recycle a frame buffer on card
1380 *
1381 * \param[in] session_ctx Pointer to void*
1382 * \param[in] niframe Pointer to void*
1383 *
1384 * \return On success NI_RETCODE_SUCCESS
1385 * On failure NI_RETCODE_INVALID_PARAM
1386 *******************************************************************************/
1387 LIB_API int ni_quadra_filter_hwframe_recycle(void *session_ctx, void *niframe);
1388 
1389 /*!*****************************************************************************
1390  * \brief Configure the 2D engine to work based on provided parameters
1391  *
1392  * \param[in] p_ctx pointer to session context
1393  * \param[in] p_cfg pointer to ni_quadra_frame_config_t
1394  *
1395  * \return NI_RETCODE_INVALID_PARAM
1396  * NI_RETCODE_ERROR_INVALID_SESSION
1397  * NI_RETCODE_ERROR_NVME_CMD_FAILED
1398  * NI_RETCODE_ERROR_MEM_ALOC
1399  ******************************************************************************/
1400 LIB_API int
1402  ni_quadra_frame_config_t *p_cfg);
1403 
1404 /*!*****************************************************************************
1405 * \brief Recycle a frame buffer on card
1406 *
1407 * \param[in] surface Struct containing device and frame location to clear out
1408 * \param[in] device_handle handle to access device memory buffer is stored in
1409 *
1410 * \return On success NI_RETCODE_SUCCESS
1411 * On failure NI_RETCODE_INVALID_PARAM
1412 *******************************************************************************/
1414  int32_t device_handle);
1415 
1416 /*!*****************************************************************************
1417  * \brief Get dimension information of Netint HW YUV420p frame to be sent
1418  * to encoder for encoding. Caller usually retrieves this info and
1419  * uses it in the call to ni_encoder_frame_buffer_alloc for buffer
1420  * allocation.
1421  *
1422  * \param[in] width source YUV frame width
1423  * \param[in] height source YUV frame height
1424  * \param[in] factor 1 for 8 bit, 2 for 10 bit
1425  * \param[in] is_semiplanar 1 for semiplanar frame, 0 otherwise
1426  * \param[out] plane_stride size (in bytes) of each plane width
1427  * \param[out] plane_height size of each plane height
1428  *
1429  * \return Y/Cb/Cr stride and height info
1430  *
1431  ******************************************************************************/
1432 LIB_API void ni_quadra_get_hw_yuv420p_dim(int width, int height, int factor,
1433  int is_semiplanar,
1434  int plane_stride[4],
1435  int plane_height[4]);
1436 
1437 /*!*****************************************************************************
1438 * \brief Recycle a frame buffer on card
1439 *
1440 * \param[in] surface Struct containing device and frame location to clear out
1441 * \param[in] device_handle handle to access device memory buffer is stored in
1442 *
1443 * \return On success NI_RETCODE_SUCCESS
1444 * On failure NI_RETCODE_INVALID_PARAM
1445 *******************************************************************************/
1447 
1448 /*!******************************************************************************
1449  * \brief Initialize a fifo buffer
1450  *
1451  * \param[in] number_of_buffers Total number of buffers in this fifo
1452  * \param[in] size The size of every buffer
1453  *
1454  * \return On success return fifo pointer, On failure return NULL
1455  *******************************************************************************/
1456 LIB_API ni_fifo_buffer_t *ni_fifo_initialize(uint32_t number_of_buffers,
1457  uint32_t size);
1458 
1459 /*!******************************************************************************
1460  * \brief Free a fifo
1461  *
1462  * \param[in] p_fifo The pointer of ni_fifo_buffer_t
1463  *
1464  * \return
1465  *******************************************************************************/
1466 LIB_API void ni_fifo_free(ni_fifo_buffer_t *p_fifo);
1467 
1468 /*!******************************************************************************
1469  * \brief Check if a fifo is full
1470  *
1471  * \param[in] p_fifo The pointer of ni_fifo_buffer_t
1472  *
1473  * \return 1 is full; 0 is not full
1474  *******************************************************************************/
1476 
1477 /*!******************************************************************************
1478  * \brief Check if a fifo is empty
1479  *
1480  * \param[in] p_fifo The pointer of ni_fifo_buffer_t
1481  *
1482  * \return 1 is empty; 0 is not empty
1483  *******************************************************************************/
1485 
1486 /*!******************************************************************************
1487  * \brief Get number of buffers used in fifo
1488  *
1489  * \param[in] p_fifo The pointer of ni_fifo_buffer_t
1490  *
1491  * \return fifo's number_of_buffers_used
1492  *******************************************************************************/
1494 
1495 /*!******************************************************************************
1496  * \brief Get free buffer to write in the fifo
1497  *
1498  * \param[in] p_fifo The pointer of ni_fifo_buffer_t
1499  *
1500  * \return On success return the pointer of free buffer,
1501  * On failure return NULL
1502  *******************************************************************************/
1504 /*!******************************************************************************
1505  * \brief Get first filled buffer to read in the fifo
1506  *
1507  * \param[in] p_fifo The pointer of ni_fifo_buffer_t
1508  *
1509  * \return On success return the pointer of filled buffer in fifo,
1510  * On failure return NULL
1511  *******************************************************************************/
1513 
1514 /*!******************************************************************************
1515  * \brief Push back the last read buffer to the fifo
1516  *
1517  * \param[in] p_fifo The pointer of ni_fifo_buffer_t
1518  *
1519  * \return On success return 0,
1520  * On failure return -1
1521  *******************************************************************************/
1523 
1524 /*!*****************************************************************************
1525  * \brief Find the next start code
1526  *
1527  * \param[in] p pointer to buffer start address.
1528  * \param[in] end pointer to buffer end address.
1529  * \param[state] state pointer to nalu type address
1530  *
1531  * \return search end address
1532  ******************************************************************************/
1533 LIB_API const uint8_t *ni_find_start_code(const uint8_t *p, const uint8_t *end,
1534  uint32_t *state);
1535 
1536 /*!*****************************************************************************
1537  * \brief Set ni_log_level
1538  *
1539  * \param level log level
1540  *
1541  * \return
1542  ******************************************************************************/
1543 LIB_API void ni_quadra_log_set_level(int level);
1544 
1545 /*!*****************************************************************************
1546  * \brief Set ni_log() callback
1547  *
1548  * \param[in] callback
1549  *
1550  * \return
1551  ******************************************************************************/
1552 LIB_API void ni_quadra_log_set_callback(void (*log_callback)(int, const char *,
1553  va_list));
1554 
1555 /*!*****************************************************************************
1556  * \brief Convert ffmpeg log level integer to appropriate ni_quadra_log_level_t
1557  *
1558  * \param fflog_level integer representation of FFmpeg log level
1559  *
1560  * \return ni_quadra_log_level
1561  ******************************************************************************/
1563 
1564 /*!******************************************************************************
1565  * \brief Create a pointer to hw_device_info_coder_param_t instance. This instance will be created and
1566  * set to default vaule by param mode.You may change the resolution, fps, bit_8_10 and other vaule you want to set.
1567  *
1568  * \param[in] mode:0:create instance with decoder_param ,encoder_param, scaler_param and ai_param will be set to NULL
1569  * 1:create instance with encoder_param ,decoder_param, scaler_param and ai_param will be set to NULL
1570  * 2:create instance with scaler_param ,decoder_param, encoder_param and ai_param will be set to NULL
1571  * 3:create instance with ai_param ,decoder_param, encoder_param and scaler_param will be set to NULL
1572  * >= 4:create instance with decoder_param encoder_param, scaler_param and ai_param for ni_check_hw_info() hw_mode
1573  *
1574  * \return NULL-error,pointer to an instance when success
1575  *******************************************************************************/
1577 
1578 /*!******************************************************************************
1579  * \brief Release a pointer to hw_device_info_coder_param_t instance created by create_hw_device_info_coder_param
1580  *
1581  *
1582  * \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
1583  *
1584  *******************************************************************************/
1586 
1587 /*!******************************************************************************
1588  * \brief Create a pointer to ni_hw_device_info_quadra_t instance .
1589  *
1590  * \param[in] device_type_num:number of device type to be allocated in this function
1591  *
1592  * \param[in] avaliable_card_num:number of avaliable card per device to be allocated in this function
1593  *
1594  * \return NULL-error,pointer to an instance when success
1595  *******************************************************************************/
1596 LIB_API ni_quadra_hw_device_info_t *ni_quadra_hw_device_info_alloc(int device_type_num,int avaliable_card_num);
1597 
1598 /*!******************************************************************************
1599  * \brief Release a pointer to ni_hw_device_info_quadra_t instance created by create_hw_device_info_coder_param
1600  *
1601  *
1602  * \param[in] p_hw_device_info:pointer to a ni_hw_device_info_quadra_t instance created by create_hw_device_info_coder_param
1603  *
1604  *******************************************************************************/
1606 
1607 /*!*****************************************************************************
1608  * \brief check hw info, return the appropriate card number to use depends on the load&task_num&used resource
1609  *
1610  * \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).
1611  * May be a ponter to NULL ,in which case a ni_hw_device_info_quadra_coder_param_t is allocated by this function
1612  * and written to pointer_to_p_hw_device_info.
1613  * record the device info, including available card num and which card to select,
1614  * and each card's informaton, such as, the load, task num, device type
1615  * \param[in] task_mode: affect the scheduling strategy,
1616  * 1 - both the load_num and task_num should consider, usually applied to live scenes
1617  * 0 - only consider the task_num, don not care the load_num
1618  * \param[in] hw_info_threshold_param : an array of threshold including device type task threshold and load threshold
1619  * in hw_mode fill the arry with both encoder and decoder threshold or
1620  * fill the arry with preferential device type threshold when don not in hw_mode
1621  * load threshold in range[0:100] task num threshold in range [0:32]
1622  * \param[in] preferential_device_type : which device type is preferential 0:decode 1:encode .
1623  * This need to set to encoder/decoder even if in sw_mode to check whether coder_param is wrong.
1624  * \param[in] coder_param : encoder and decoder information that helps to choose card .This coder_param can be created and
1625  * set to default value by function hw_device_info_coder_param_t * create_hw_device_info_coder_param().
1626  * You may change the resolution fps bit_8_10 or other vaule you want to use
1627  * \param[in] hw_mode:Set 1 then this function will choose encoder and decoder in just one card .
1628  * When no card meets the conditions ,NO card will be choosed.
1629  * 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
1630  * In hw_mode set both encoder_param and decoder_param in coder_param.
1631  * Set 0 then just consider sw_mode to choose which card to do encode/decode,
1632  * In sw_mode set one param in coder_param the other one will be set to NULL.
1633  * \param[in] consider_mem : set 1 this function will consider memory usage extra
1634  * set 0 this function will not consider memory usage
1635  *
1636  * \return 0-error 1-success
1637  *******************************************************************************/
1638 LIB_API int ni_quadra_check_hw_info(ni_quadra_hw_device_info_t **pointer_to_p_hw_device_info,
1639  int task_mode,
1640  ni_quadra_hw_device_info_threshold_param_t *hw_info_threshold_param,
1641  int preferential_device_type,
1643  int hw_mode,
1644  int consider_mem);
1645 
1646 /*!****************************************************************************
1647 * \brief Get GUID of the device by block device name and type
1648 *
1649 * \param[in] blk_name device's block name
1650 * \param[in] type device type
1651 *
1652 * \return device GUID (>= 0) if found, NI_RETCODE_FAILURE (-1) otherwise
1653 *******************************************************************************/
1654 LIB_API int ni_quadra_rsrc_get_device_by_block_name(const char *blk_name,
1655  ni_quadra_device_type_t device_type);
1656 
1657 /*!*****************************************************************************
1658  * \brief Open a new device session depending on the device_type parameter
1659  * If device_type is NI_DEVICE_TYPE_DECODER opens decoding session
1660  * If device_type is NI_DEVICE_TYPE_ENCODER opens encoding session
1661  * If device_type is NI_DEVICE_TYPE_SCALER opens scaling session
1662  *
1663  * \param[in] p_ctx Pointer to a caller allocated
1664  * ni_session_context_t struct
1665  * \param[in] device_type NI_DEVICE_TYPE_DECODER, NI_DEVICE_TYPE_ENCODER,
1666  * or NI_DEVICE_TYPE_SCALER
1667  * \return On success
1668  * NI_RETCODE_SUCCESS
1669  * On failure
1670  * NI_RETCODE_INVALID_PARAM
1671  * NI_RETCODE_ERROR_MEM_ALOC
1672  * NI_RETCODE_ERROR_NVME_CMD_FAILED
1673  * NI_RETCODE_ERROR_INVALID_SESSION
1674  ******************************************************************************/
1675 LIB_API int ni_quadra_device_session_open(void *p_ctx,
1676  ni_quadra_device_type_t device_type);
1677 
1678 /*!*****************************************************************************
1679  * \brief Sends data to the device
1680  * If device_type is NI_DEVICE_TYPE_DECODER sends data packet to
1681  * decoder
1682  * If device_type is NI_DEVICE_TYPE_ENCODER sends data frame to encoder
1683  * If device_type is NI_DEVICE_TYPE_AI sends data frame to ai engine
1684  *
1685  * \param[in] p_ctx Pointer to a caller allocated
1686  * ni_session_context_t struct
1687  * \param[in] p_data Pointer to a caller allocated
1688  * ni_session_data_io_t struct which contains either a
1689  * ni_frame_t data frame or ni_packet_t data packet to
1690  * send
1691  * \param[in] device_type NI_DEVICE_TYPE_DECODER or NI_DEVICE_TYPE_ENCODER or
1692  * NI_DEVICE_TYPE_AI
1693  * If NI_DEVICE_TYPE_DECODER is specified, it is
1694  * expected that the ni_packet_t struct inside the
1695  * p_data pointer contains data to send.
1696  * If NI_DEVICE_TYPE_ENCODER or NI_DEVICE_TYPE_AI is
1697  * specified, it is expected that the ni_frame_t
1698  * struct inside the p_data pointer contains data to
1699  * send.
1700  * \return On success
1701  * Total number of bytes written
1702  * On failure
1703  * NI_RETCODE_INVALID_PARAM
1704  * NI_RETCODE_ERROR_NVME_CMD_FAILED
1705  * NI_RETCODE_ERROR_INVALID_SESSION
1706  ******************************************************************************/
1707 LIB_API int ni_quadra_device_session_write(void *p_ctx, void *p_data,
1708  ni_quadra_device_type_t device_type);
1709 
1710 /*!*****************************************************************************
1711  * \brief Free packet buffer that was previously allocated with
1712  * ni_packet_buffer_alloc
1713  *
1714  * \param[in] p_data Pointer to void *
1715  * ni_session_data_io_t struct
1716  *
1717  * \return On success NI_RETCODE_SUCCESS
1718  * On failure NI_RETCODE_INVALID_PARAM
1719  ******************************************************************************/
1720 LIB_API int ni_quadra_packet_buffer_free(void* p_data);
1721 
1722 /*!*****************************************************************************
1723  * \brief Free frame buffer that was previously allocated with either
1724  * ni_frame_buffer_alloc or ni_encoder_frame_buffer_alloc or
1725  * ni_frame_buffer_alloc_nv
1726  *
1727  * \param[in] p_data Pointer to void *
1728  * ni_session_data_io_t struct
1729  *
1730  * \return On success NI_RETCODE_SUCCESS
1731  * On failure NI_RETCODE_INVALID_PARAM
1732  ******************************************************************************/
1733 LIB_API int ni_quadra_frame_buffer_free(void* p_data);
1734 
1735 /*!*****************************************************************************
1736  * \brief Create and return the allocated ni_device_pool_t struct
1737  *
1738  * \param None
1739  *
1740  * \return Pointer to ni_device_pool_t struct on success, or NULL on failure
1741  *******************************************************************************/
1743 
1744 /*!*****************************************************************************
1745  * \brief Close device session that was previously opened by calling
1746  * ni_device_session_open()
1747  * If device_type is NI_DEVICE_TYPE_DECODER closes decoding session
1748  * If device_type is NI_DEVICE_TYPE_ENCODER closes encoding session
1749  * If device_type is NI_DEVICE_TYPE_SCALER closes scaling session
1750  *
1751  * \param[in] p_ctx Pointer to a caller allocated
1752  * ni_session_context_t struct
1753  * \param[in] eos_received Flag indicating if End Of Stream indicator was
1754  * received
1755  * \param[in] device_type NI_DEVICE_TYPE_DECODER, NI_DEVICE_TYPE_ENCODER,
1756  * or NI_DEVICE_TYPE_SCALER
1757  * \return On success
1758  * NI_RETCODE_SUCCESS
1759  * On failure
1760  * NI_RETCODE_INVALID_PARAM
1761  * NI_RETCODE_ERROR_NVME_CMD_FAILED
1762  * NI_RETCODE_ERROR_INVALID_SESSION
1763  ******************************************************************************/
1764 LIB_API int ni_quadra_device_session_close(void *p_ctx,
1765  int eos_recieved,
1766  ni_quadra_device_type_t device_type);
1767 
1768 /*!*****************************************************************************
1769  * \brief Clear already allocated session context
1770  *
1771  * \param[in] p_ctx Pointer to an already allocated ni_session_context_t
1772  *
1773  *
1774  ******************************************************************************/
1776 
1778  int video_width, int video_height,
1779  int extra_len);
1780 
1781 LIB_API void ni_quadra_set_framerate(void *p_ctx, int num, int den);
1782 
1783 /*!*****************************************************************************
1784  * \brief Get session_ctx send/recive packet number
1785  *
1786  * \param[in] p_ctx Pointer to an already allocated ni_session_context_t
1787  *
1788  *
1789  ******************************************************************************/
1790 LIB_API int ni_quadra_get_session_packet_num(void *session_ctx);
1791 
1792 /*!*****************************************************************************
1793  * \brief Get session_ctx send/recieve frame number
1794  *
1795  * \param[in] p_ctx Pointer to an already allocated ni_session_context_t
1796  *
1797  *
1798  ******************************************************************************/
1799 LIB_API int ni_quadra_get_session_frame_num(void *session_ctx);
1800 
1801 #ifdef __cplusplus
1802 }
1803 #endif
_ni_quadra_split_context_t::f8b
int f8b[3]
Definition: ni_quadra_filter_api.h:381
_ni_quadra_frame_config::rectangle_y
int16_t rectangle_y
Definition: ni_quadra_filter_api.h:267
_ni_quadra_network_data::output_num
uint32_t output_num
Definition: ni_quadra_filter_api.h:315
ni_quadra_filter_device_clone_hwframe
LIB_API int ni_quadra_filter_device_clone_hwframe(ni_quadra_filter_t *nifilter, ni_quadra_frameclone_desc_t *p_frameclone_desc)
Copy the data of src hwframe to dst hwframe.
Definition: ni_quadra_filter_api.c:438
NI_QUADRA_DEVICE_TYPE_MIN
@ NI_QUADRA_DEVICE_TYPE_MIN
Definition: ni_quadra_filter_api.h:219
NIFramesContext::nb_surfaces_used
int nb_surfaces_used
Definition: ni_quadra_filter_api.h:403
_ni_quadra_filter_t::autoselect
int autoselect
Definition: ni_quadra_filter_api.h:370
_ni_quadra_network_layer_params_t::scale
float scale
Definition: ni_quadra_filter_api.h:293
ni_quadra_pix_fmt_t
ni_quadra_pix_fmt_t
Definition: ni_quadra_filter_api.h:235
_ni_quadra_filter_t::api_ctx
void * api_ctx
Definition: ni_quadra_filter_api.h:357
ni_quadra_get_frame_data
LIB_API uint8_t ** ni_quadra_get_frame_data(void *niframe)
Get niframe data address.
Definition: ni_quadra_filter_api.c:1738
ni_quadra_codec_format_t
enum _ni_quadra_codec_format ni_quadra_codec_format_t
_ni_quadra_hw_device_info_coder_param::hw_mode
int hw_mode
Definition: ni_quadra_filter_api.h:525
_ni_quadra_hw_device_info_coder_param
Definition: ni_quadra_filter_api.h:523
NI_QUADRA_SCALER_OPCODE_STACK
@ NI_QUADRA_SCALER_OPCODE_STACK
Definition: ni_quadra_filter_api.h:186
ni_quadra_get_session_packet_num
LIB_API int ni_quadra_get_session_packet_num(void *session_ctx)
Get session_ctx send/recive packet number.
Definition: ni_quadra_filter_api.c:2058
_niquadraFrameSurface1::ui16height
uint16_t ui16height
Definition: ni_quadra_filter_api.h:390
_ni_quadra_split_context_t::w
int w[3]
Definition: ni_quadra_filter_api.h:378
_ni_quadra_network_layer_params_t
Definition: ni_quadra_filter_api.h:275
_ni_quadra_filter_t::hw_action
int hw_action
Definition: ni_quadra_filter_api.h:354
ni_quadra_init_internal_session
LIB_API int ni_quadra_init_internal_session(NIFramesContext *ni_ctx)
Init filter session context only malloc session.
Definition: ni_quadra_filter_api.c:654
NI_QUADRA_PIX_FMT_NONE
@ NI_QUADRA_PIX_FMT_NONE
Definition: ni_quadra_filter_api.h:252
NI_QUADRA_ERROR_VPU_RECOVERY
@ NI_QUADRA_ERROR_VPU_RECOVERY
Definition: ni_quadra_filter_api.h:209
ni_quadra_scaler_multi_drawbox_params_t
struct _ni_quadra_scaler_multi_drawbox_params_t ni_quadra_scaler_multi_drawbox_params_t
_ni_quadra_hw_device_info_decoder_param
Definition: ni_quadra_filter_api.h:490
_ni_quadra_network_layer_offset::offset
int32_t offset
Definition: ni_quadra_filter_api.h:309
NI_QUADRA_SCALER_OPCODE_MERGE
@ NI_QUADRA_SCALER_OPCODE_MERGE
Definition: ni_quadra_filter_api.h:192
ni_quadra_card_info_t
struct _ni_quadra_card_info ni_quadra_card_info_t
_ni_quadra_frame_config::picture_format
uint16_t picture_format
Definition: ni_quadra_filter_api.h:262
_niquadraFrameSurface1::output_idx
int8_t output_idx
Definition: ni_quadra_filter_api.h:395
_ni_quadra_hw_device_info_decoder_param::fps
uint32_t fps
Definition: ni_quadra_filter_api.h:492
ni_quadra_get_seiset_size
LIB_API int ni_quadra_get_seiset_size()
Recycle a frame buffer on card.
Definition: ni_quadra_filter_api.c:1829
NI_QUADRA_PIX_FMT_8_TILED4X4
@ NI_QUADRA_PIX_FMT_8_TILED4X4
Definition: ni_quadra_filter_api.h:250
ni_quadra_ff_to_ni_log_level
LIB_API ni_quadra_log_level_t ni_quadra_ff_to_ni_log_level(int fflog_level)
Convert ffmpeg log level integer to appropriate ni_quadra_log_level_t.
Definition: ni_quadra_filter_api.c:1845
NI_QUADRA_CODEC_HW_PAYLOAD_OFFSET
@ NI_QUADRA_CODEC_HW_PAYLOAD_OFFSET
Definition: ni_quadra_filter_api.h:343
NI_QUADRA_CODEC_HW_DOWNLOAD
@ NI_QUADRA_CODEC_HW_DOWNLOAD
Definition: ni_quadra_filter_api.h:340
_ni_quadra_hw_device_info_ai_param::h
uint32_t h
Definition: ni_quadra_filter_api.h:510
ni_quadra_hw_device_info_coder_param_t
struct _ni_quadra_hw_device_info_coder_param ni_quadra_hw_device_info_coder_param_t
_niquadraFrameSurface1::dma_buf_fd
int32_t dma_buf_fd
Definition: ni_quadra_filter_api.h:397
_ni_quadra_device_queue::xcoders
int32_t xcoders[NI_QUADRA_DEVICE_TYPE_XCODER_MAX][NI_QUADRA_MAX_DEVICE_CNT]
Definition: ni_quadra_filter_api.h:535
_ni_quadra_hw_device_info::device_type
int * device_type
Definition: ni_quadra_filter_api.h:470
ni_quadra_frame_buffer_alloc_pixfmt
int ni_quadra_frame_buffer_alloc_pixfmt(void *p_frame, int pixel_format, int video_width, int video_height, int linesize[], int alignment, int extra_len)
Allocate memory for the frame buffer based on provided parameters taking into account the pixel forma...
Definition: ni_quadra_filter_api.c:635
ni_quadra_get_niframe
LIB_API uint8_t * ni_quadra_get_niframe(void *niframe)
Get niframe address.
Definition: ni_quadra_filter_api.c:1720
_ni_quadra_hw_device_info_coder_param::decoder_param
ni_quadra_hw_device_info_decoder_param_t * decoder_param
Definition: ni_quadra_filter_api.h:527
_ni_quadra_device_pool::lock
int32_t lock
Definition: ni_quadra_filter_api.h:540
NI_QUADRA_PIXEL_PLANAR_MAX
@ NI_QUADRA_PIXEL_PLANAR_MAX
Definition: ni_quadra_filter_api.h:176
_ni_quadra_split_context_t::h
int h[3]
Definition: ni_quadra_filter_api.h:379
_ni_quadra_hw_device_info_encoder_param::uploader
int uploader
Definition: ni_quadra_filter_api.h:486
NIFramesContext::uploader_device_id
int uploader_device_id
Definition: ni_quadra_filter_api.h:410
ni_quadra_hw_device_info_decoder_param_t
struct _ni_quadra_hw_device_info_decoder_param ni_quadra_hw_device_info_decoder_param_t
_niquadraFrameSurface1::device_handle
int32_t device_handle
Definition: ni_quadra_filter_api.h:392
ni_quadra_get_device_handle
LIB_API int32_t ni_quadra_get_device_handle(void *session_ctx)
Get session device handle id.
Definition: ni_quadra_filter_api.c:1667
ni_quadra_set_device_handle
LIB_API void ni_quadra_set_device_handle(void *session_ctx, int32_t handle)
Set session device handle.
Definition: ni_quadra_filter_api.c:1673
_ni_quadra_filter_t::hw_id
int hw_id
Definition: ni_quadra_filter_api.h:353
_ni_quadra_network_layer_params_t::quant_data
union _ni_quadra_network_layer_params_t::@31 quant_data
ni_fifo_initialize
LIB_API ni_fifo_buffer_t * ni_fifo_initialize(uint32_t number_of_buffers, uint32_t size)
Initialize a fifo buffer.
Definition: ni_quadra_filter_api.c:44
ni_quadra_network_layer_info_t
struct _ni_quadra_network_layer_info ni_quadra_network_layer_info_t
_ni_quadra_scaler_multi_watermark_params_t
Definition: ni_quadra_filter_api.h:448
ni_quadra_destory_hw_device_info_coder_param
LIB_API void ni_quadra_destory_hw_device_info_coder_param(ni_quadra_hw_device_info_coder_param_t *p_quadra_hw_device_info_coder_param)
Release a pointer to hw_device_info_coder_param_t instance created by create_hw_device_info_coder_par...
Definition: ni_quadra_filter_api.c:1855
_ni_quadra_filter_t::scaler_operation
uint32_t scaler_operation
Definition: ni_quadra_filter_api.h:355
ni_quadra_get_session_status
LIB_API int ni_quadra_get_session_status(void *session_ctx)
Get session context status.
Definition: ni_quadra_filter_api.c:1697
AVNIDeviceContext
Definition: ni_quadra_filter_api.h:415
_niquadraFrameSurface1::ui32nodeAddress
uint32_t ui32nodeAddress
Definition: ni_quadra_filter_api.h:391
_ni_quadra_filter_t::params
void * params
Definition: ni_quadra_filter_api.h:358
ni_quadra_frame_buffer_alloc_hwenc
LIB_API int ni_quadra_frame_buffer_alloc_hwenc(void *niframe, int video_width, int video_height, int extra_len)
Definition: ni_quadra_filter_api.c:2041
ni_quadra_get_packet_data_len
LIB_API uint32_t ni_quadra_get_packet_data_len(void *nipacket)
Get nipacket data len.
Definition: ni_quadra_filter_api.c:1750
_ni_quadra_network_layer_offset
Definition: ni_quadra_filter_api.h:307
_ni_quadra_filter_t::device_type
uint32_t device_type
Definition: ni_quadra_filter_api.h:351
NI_QUADRA_PIX_FMT_YUYV422
@ NI_QUADRA_PIX_FMT_YUYV422
Definition: ni_quadra_filter_api.h:248
NI_QUADRA_SCALER_OPCODE_PAD
@ NI_QUADRA_SCALER_OPCODE_PAD
Definition: ni_quadra_filter_api.h:184
_ni_quadra_hw_device_info::card_info
ni_quadra_card_info_t ** card_info
Definition: ni_quadra_filter_api.h:471
NI_QUADRA_EAGAIN
@ NI_QUADRA_EAGAIN
Definition: ni_quadra_filter_api.h:211
ni_quadra_device_session_write
LIB_API int ni_quadra_device_session_write(void *p_ctx, void *p_data, ni_quadra_device_type_t device_type)
Sends data to the device If device_type is NI_DEVICE_TYPE_DECODER sends data packet to decoder If dev...
Definition: ni_quadra_filter_api.c:1948
ni_quadra_set_session_runstatus
LIB_API void ni_quadra_set_session_runstatus(void *session_ctx, int status)
Set session context run status.
Definition: ni_quadra_filter_api.c:1776
_ni_quadra_scaler_watermark_params_t
Definition: ni_quadra_filter_api.h:433
_ni_quadra_split_context_t::f
int f[3]
Definition: ni_quadra_filter_api.h:380
_ni_quadra_scaler_multi_drawbox_params_t::multi_drawbox_params
ni_quadra_scaler_drawbox_params_t multi_drawbox_params[NI_QUADRA_MAX_SUPPORT_DRAWBOX_NUM]
Definition: ni_quadra_filter_api.h:445
ni_quadra_get_device_id
LIB_API int ni_quadra_get_device_id(void *session_ctx)
Get session device id.
Definition: ni_quadra_filter_api.c:1650
ni_quadra_filter_close
LIB_API void ni_quadra_filter_close(ni_quadra_filter_t *nifilter)
Close filter.
Definition: ni_quadra_filter_api.c:529
NIFramesContext::api_ctx
void * api_ctx
Definition: ni_quadra_filter_api.h:405
ni_quadra_device_session_read
LIB_API int ni_quadra_device_session_read(void *p_ctx, void *p_data, int device_type)
Read data from the device If device_type is NI_DEVICE_TYPE_DECODER reads data packet from decoder If ...
Definition: ni_quadra_filter_api.c:455
ni_quadra_filter_get_output_data
LIB_API int ni_quadra_filter_get_output_data(ni_quadra_filter_t *nifilter, uint8_t *data, int width, int height)
Get data from device.
Definition: ni_quadra_filter_api.c:477
ni_quadra_device_session_open
LIB_API int ni_quadra_device_session_open(void *p_ctx, ni_quadra_device_type_t device_type)
Open a new device session depending on the device_type parameter If device_type is NI_DEVICE_TYPE_DEC...
Definition: ni_quadra_filter_api.c:1912
NI_QUADRA_PIXEL_PLANAR_FORMAT_TILED4X4
@ NI_QUADRA_PIXEL_PLANAR_FORMAT_TILED4X4
Definition: ni_quadra_filter_api.h:175
ni_quadra_filter_hwframe_recycle
LIB_API int ni_quadra_filter_hwframe_recycle(void *session_ctx, void *niframe)
Recycle a frame buffer on card.
Definition: ni_quadra_filter_api.c:1766
_ni_quadra_scaler_watermark_params_t::ui32Valid
uint32_t ui32Valid
Definition: ni_quadra_filter_api.h:438
ni_quadra_hwframe_buffer_recycle
LIB_API int ni_quadra_hwframe_buffer_recycle(niquadraFrameSurface1_t *surface, int32_t device_handle)
Recycle a frame buffer on card.
Definition: ni_quadra_filter_api.c:1789
_ni_quadra_network_layer_info::in_param
ni_quadra_network_layer_params_t * in_param
Definition: ni_quadra_filter_api.h:303
_ni_quadra_hw_device_info_encoder_param::rdoLevel
uint32_t rdoLevel
Definition: ni_quadra_filter_api.h:483
ni_quadra_pixel_planar_format
enum _ni_quadra_pixel_planar_format ni_quadra_pixel_planar_format
ni_quadra_get_packet_data
LIB_API uint8_t * ni_quadra_get_packet_data(void *nipacket)
Get nipacket data address.
Definition: ni_quadra_filter_api.c:1744
NI_QUADRA_DEVICE_TYPE_MAX
@ NI_QUADRA_DEVICE_TYPE_MAX
Definition: ni_quadra_filter_api.h:232
_ni_quadra_frame_config::rgba_color
uint32_t rgba_color
Definition: ni_quadra_filter_api.h:268
_ni_quadra_hw_device_info_encoder_param::ui8enableRdoQuant
uint32_t ui8enableRdoQuant
Definition: ni_quadra_filter_api.h:482
ni_quadra_get_frame_buffer_size
LIB_API uint32_t ni_quadra_get_frame_buffer_size(void *niframe)
Get niframe buffer size.
Definition: ni_quadra_filter_api.c:1732
NI_QUADRA_MAX_DEVICE_CNT
#define NI_QUADRA_MAX_DEVICE_CNT
Definition: ni_quadra_filter_api.h:146
NI_QUADRA_SCALER_OPCODE_CROP
@ NI_QUADRA_SCALER_OPCODE_CROP
Definition: ni_quadra_filter_api.h:182
NI_QUADRA_PIX_FMT_P010LE
@ NI_QUADRA_PIX_FMT_P010LE
Definition: ni_quadra_filter_api.h:240
ni_quadra_frame_config_t
struct _ni_quadra_frame_config ni_quadra_frame_config_t
_ni_quadra_scaler_drawbox_params_t::start_x
uint32_t start_x
Definition: ni_quadra_filter_api.h:426
ni_quadra_hw_device_info_free
LIB_API void ni_quadra_hw_device_info_free(ni_quadra_hw_device_info_t *p_hw_device_info)
Release a pointer to ni_hw_device_info_quadra_t instance created by create_hw_device_info_coder_param...
Definition: ni_quadra_filter_api.c:1865
_niquadraFrameSurface1::src_cpu
int8_t src_cpu
Definition: ni_quadra_filter_api.h:396
_ni_quadra_hw_device_info_encoder_param::w
uint32_t w
Definition: ni_quadra_filter_api.h:480
_ni_quadra_frameclone_desc::ui32Size
uint32_t ui32Size
Definition: ni_quadra_filter_api.h:329
ni_quadra_scaler_multi_watermark_params_t
struct _ni_quadra_scaler_multi_watermark_params_t ni_quadra_scaler_multi_watermark_params_t
NI_QUADRA_PIX_FMT_10_TILED4X4
@ NI_QUADRA_PIX_FMT_10_TILED4X4
Definition: ni_quadra_filter_api.h:251
NI_QUADRA_PIX_FMT_YUV420P
@ NI_QUADRA_PIX_FMT_YUV420P
Definition: ni_quadra_filter_api.h:237
NI_QUADRA_DEVICE_TYPE_UPLOAD
@ NI_QUADRA_DEVICE_TYPE_UPLOAD
Definition: ni_quadra_filter_api.h:229
AVNIDeviceContext::uploader_ID
int uploader_ID
Definition: ni_quadra_filter_api.h:417
NI_QUADRA_CODEC_HW_ENABLE
@ NI_QUADRA_CODEC_HW_ENABLE
Definition: ni_quadra_filter_api.h:339
ni_quadra_ai_config_network_binary
LIB_API int ni_quadra_ai_config_network_binary(ni_quadra_filter_t *nifilter, ni_quadra_network_data_t *p_network, const char *file)
configure a network context based with the network binary
Definition: ni_quadra_filter_api.c:575
ni_quadra_codec_hw_actions
ni_quadra_codec_hw_actions
This is an enumeration for hw actions.
Definition: ni_quadra_filter_api.h:336
NI_QUADRA_LOG_INFO
@ NI_QUADRA_LOG_INFO
Definition: ni_quadra_filter_api.h:165
_ni_fifo_buffer_t::number_of_buffers_used
uint32_t number_of_buffers_used
Definition: ni_quadra_filter_api.h:154
_ni_quadra_hw_device_info_encoder_param::rgba
int rgba
Definition: ni_quadra_filter_api.h:487
NI_QUADRA_CODEC_FORMAT_VP9
@ NI_QUADRA_CODEC_FORMAT_VP9
Definition: ni_quadra_filter_api.h:200
ni_quadra_scaler_set_watermark_params
LIB_API int ni_quadra_scaler_set_watermark_params(ni_quadra_filter_t *nifilter, ni_quadra_scaler_watermark_params_t *p_params)
Send a p_config command to configure watermark parameters.
Definition: ni_quadra_filter_api.c:470
ni_quadra_hw_device_info_alloc
LIB_API ni_quadra_hw_device_info_t * ni_quadra_hw_device_info_alloc(int device_type_num, int avaliable_card_num)
Create a pointer to ni_hw_device_info_quadra_t instance .
Definition: ni_quadra_filter_api.c:1860
_ni_quadra_scaler_opcode
_ni_quadra_scaler_opcode
Definition: ni_quadra_filter_api.h:179
ni_quadra_scaler_set_drawbox_params
LIB_API int ni_quadra_scaler_set_drawbox_params(ni_quadra_filter_t *nifilter, ni_quadra_scaler_drawbox_params_t *p_params)
Send a p_config command to configure scaling drawbox parameters.
Definition: ni_quadra_filter_api.c:463
NI_QUADRA_LOG_INVALID
@ NI_QUADRA_LOG_INVALID
Definition: ni_quadra_filter_api.h:161
NI_QUADRA_SCALER_OPCODE_OVERLAY
@ NI_QUADRA_SCALER_OPCODE_OVERLAY
Definition: ni_quadra_filter_api.h:185
NI_QUADRA_SCALER_OPCODE_IPOVLY
@ NI_QUADRA_SCALER_OPCODE_IPOVLY
Definition: ni_quadra_filter_api.h:189
_ni_quadra_frame_config::picture_width
uint16_t picture_width
Definition: ni_quadra_filter_api.h:260
ni_quadra_filter_t
struct _ni_quadra_filter_t ni_quadra_filter_t
_ni_quadra_hw_device_info_threshold_param::task_num_threshold
int task_num_threshold
Definition: ni_quadra_filter_api.h:520
_ni_quadra_device_pool
Definition: ni_quadra_filter_api.h:538
_ni_quadra_hw_device_info::consider_mem
int consider_mem
Definition: ni_quadra_filter_api.h:469
_ni_quadra_frame_config
Definition: ni_quadra_filter_api.h:258
NI_QUADRA_DEVICE_TYPE_AI
@ NI_QUADRA_DEVICE_TYPE_AI
Definition: ni_quadra_filter_api.h:225
ni_fifo_is_empty
LIB_API int ni_fifo_is_empty(ni_fifo_buffer_t *p_fifo)
Check if a fifo is empty.
Definition: ni_quadra_filter_api.c:123
_ni_quadra_frame_config::output_index
uint8_t output_index
Definition: ni_quadra_filter_api.h:271
NI_QUADRA_PIX_FMT_BGRP
@ NI_QUADRA_PIX_FMT_BGRP
Definition: ni_quadra_filter_api.h:246
NI_QUADRA_DEVICE_TYPE_ENCODER
@ NI_QUADRA_DEVICE_TYPE_ENCODER
Definition: ni_quadra_filter_api.h:223
_ni_quadra_network_layer_params_t::memory_type
uint32_t memory_type
Definition: ni_quadra_filter_api.h:298
_ni_quadra_hw_device_info::card_current_card
int card_current_card
Definition: ni_quadra_filter_api.h:472
_ni_quadra_network_layer_params_t::zeroPoint
int32_t zeroPoint
Definition: ni_quadra_filter_api.h:294
_ni_quadra_scaler_watermark_params_t::ui32StartY
uint32_t ui32StartY
Definition: ni_quadra_filter_api.h:435
NI_QUADRA_PIX_FMT_YUV420P10LE
@ NI_QUADRA_PIX_FMT_YUV420P10LE
Definition: ni_quadra_filter_api.h:238
NI_QUADRA_PIXEL_PLANAR_FORMAT_SEMIPLANAR
@ NI_QUADRA_PIXEL_PLANAR_FORMAT_SEMIPLANAR
Definition: ni_quadra_filter_api.h:173
_ni_fifo_buffer_t::rndx
uint32_t rndx
Definition: ni_quadra_filter_api.h:156
AVNIDeviceContext::uploader_handle
int32_t uploader_handle
Definition: ni_quadra_filter_api.h:418
_ni_quadra_codec_format
_ni_quadra_codec_format
Definition: ni_quadra_filter_api.h:196
ni_quadra_hw_device_info_threshold_param_t
struct _ni_quadra_hw_device_info_threshold_param ni_quadra_hw_device_info_threshold_param_t
_ni_quadra_hw_device_info_encoder_param::code_format
uint32_t code_format
Definition: ni_quadra_filter_api.h:481
niquadraFrameSurface1_t
struct _niquadraFrameSurface1 niquadraFrameSurface1_t
_ni_quadra_scaler_drawbox_params_t::end_y
uint32_t end_y
Definition: ni_quadra_filter_api.h:429
ni_quadra_create_hw_device_info_coder_param
LIB_API ni_quadra_hw_device_info_coder_param_t * ni_quadra_create_hw_device_info_coder_param(int mode)
Create a pointer to hw_device_info_coder_param_t instance. This instance will be created and set to d...
Definition: ni_quadra_filter_api.c:1850
_ni_quadra_scaler_watermark_params_t::ui32StartX
uint32_t ui32StartX
Definition: ni_quadra_filter_api.h:434
NIFramesContext::surface_ptrs
niquadraFrameSurface1_t ** surface_ptrs
Definition: ni_quadra_filter_api.h:404
ni_fifo_number_of_buffers
LIB_API uint32_t ni_fifo_number_of_buffers(ni_fifo_buffer_t *p_fifo)
Get number of buffers used in fifo.
Definition: ni_quadra_filter_api.c:135
ni_quadra_frameclone_desc_t
struct _ni_quadra_frameclone_desc ni_quadra_frameclone_desc_t
_ni_quadra_hw_device_info_encoder_param
Definition: ni_quadra_filter_api.h:476
ni_quadra_network_data_t
struct _ni_quadra_network_data ni_quadra_network_data_t
LIB_API
#define LIB_API
Definition: ni_quadra_filter_api.h:39
ni_quadra_device_session_close
LIB_API int ni_quadra_device_session_close(void *p_ctx, int eos_recieved, ni_quadra_device_type_t device_type)
Close device session that was previously opened by calling ni_device_session_open() If device_type is...
Definition: ni_quadra_filter_api.c:2020
ni_quadra_filter_get_buffer
LIB_API int ni_quadra_filter_get_buffer(NIFramesContext *ni_ctx, uint8_t **dstbuf, uint8_t **dstdata, uint32_t *buf_size, int width, int height, int is_planar)
Sends frame pool setup info to device.
Definition: ni_quadra_filter_api.c:1025
_ni_quadra_network_data::linfo
ni_quadra_network_layer_info_t linfo
Definition: ni_quadra_filter_api.h:316
ni_quadra_get_frame_idx
LIB_API uint16_t ni_quadra_get_frame_idx(void *niframe)
Get niframui16FrameIdxe.
Definition: ni_quadra_filter_api.c:1713
ni_quadra_log_set_callback
LIB_API void ni_quadra_log_set_callback(void(*log_callback)(int, const char *, va_list))
Set ni_log() callback.
Definition: ni_quadra_filter_api.c:1839
NI_QUADRA_LOG_NONE
@ NI_QUADRA_LOG_NONE
Definition: ni_quadra_filter_api.h:162
ni_quadra_filter_device_close
LIB_API void ni_quadra_filter_device_close(AVNIDeviceContext *ni_hw_ctx)
Close device.
Definition: ni_quadra_filter_api.c:720
_ni_quadra_frame_config::options
uint16_t options
Definition: ni_quadra_filter_api.h:263
va_list
__gnuc_va_list va_list
Definition: ni_quadra_filter_api.h:69
_ni_quadra_device_pool::p_device_queue
ni_quadra_device_queue_t * p_device_queue
Definition: ni_quadra_filter_api.h:541
_ni_quadra_network_data
Definition: ni_quadra_filter_api.h:312
_ni_quadra_network_layer_params_t::affine
struct _ni_quadra_network_layer_params_t::@31::@33 affine
_ni_quadra_hw_device_info_ai_param::bit_8_10
uint32_t bit_8_10
Definition: ni_quadra_filter_api.h:512
ni_quadra_log_set_level
LIB_API void ni_quadra_log_set_level(int level)
Set ni_log_level.
Definition: ni_quadra_filter_api.c:1834
ni_quadra_device_session_context_clear
LIB_API void ni_quadra_device_session_context_clear(void *p_ctx)
Clear already allocated session context.
Definition: ni_quadra_filter_api.c:2035
NIFramesContext::src_session_io_data
void * src_session_io_data
Definition: ni_quadra_filter_api.h:406
ni_quadra_get_hw_yuv420p_dim
LIB_API void ni_quadra_get_hw_yuv420p_dim(int width, int height, int factor, int is_semiplanar, int plane_stride[4], int plane_height[4])
Get dimension information of Netint HW YUV420p frame to be sent to encoder for encoding....
Definition: ni_quadra_filter_api.c:1795
NI_QUADRA_SCALER_OPCODE_DELOGO
@ NI_QUADRA_SCALER_OPCODE_DELOGO
Definition: ni_quadra_filter_api.h:191
NI_QUADRA_CODEC_FORMAT_AV1
@ NI_QUADRA_CODEC_FORMAT_AV1
Definition: ni_quadra_filter_api.h:202
ni_quadra_filter_session_dl_set
LIB_API void ni_quadra_filter_session_dl_set(void *session_ctx, bool value)
Set download filter session context.
Definition: ni_quadra_filter_api.c:1679
_ni_quadra_card_info::firmware_load
int firmware_load
Definition: ni_quadra_filter_api.h:462
NI_QUADRA_SCALER_OPCODE_WATERMARK
@ NI_QUADRA_SCALER_OPCODE_WATERMARK
Definition: ni_quadra_filter_api.h:190
_ni_quadra_frameclone_desc::reserved
uint32_t reserved
Definition: ni_quadra_filter_api.h:330
_ni_quadra_hw_device_info::available_card_num
int available_card_num
Definition: ni_quadra_filter_api.h:467
ni_quadra_init_split_rsrc
LIB_API int ni_quadra_init_split_rsrc(NIFramesContext *ni_ctx, int w, int h)
Init filter split context malloc session and set it default.
Definition: ni_quadra_filter_api.c:705
NI_QUADRA_PIX_FMT_NV16
@ NI_QUADRA_PIX_FMT_NV16
Definition: ni_quadra_filter_api.h:247
ni_quadra_retcode_t
ni_quadra_retcode_t
Definition: ni_quadra_filter_api.h:205
_ni_quadra_split_context_t::enabled
int enabled
Definition: ni_quadra_filter_api.h:377
NI_QUADRA_PIX_FMT_BGR0
@ NI_QUADRA_PIX_FMT_BGR0
Definition: ni_quadra_filter_api.h:245
NI_QUADRA_MAX_SUPPORT_WATERMARK_NUM
#define NI_QUADRA_MAX_SUPPORT_WATERMARK_NUM
Definition: ni_quadra_filter_api.h:144
_niquadraFrameSurface1::ui16width
uint16_t ui16width
Definition: ni_quadra_filter_api.h:389
_ni_quadra_filter_t::dst_frame
void * dst_frame
Definition: ni_quadra_filter_api.h:359
_ni_quadra_network_layer_params_t::quant_format
int32_t quant_format
Definition: ni_quadra_filter_api.h:282
ni_quadra_get_frame_buffer
LIB_API uint8_t * ni_quadra_get_frame_buffer(void *niframe)
Get niframe buffer address.
Definition: ni_quadra_filter_api.c:1726
NI_QUADRA_SCALER_OPCODE_FLIP
@ NI_QUADRA_SCALER_OPCODE_FLIP
Definition: ni_quadra_filter_api.h:183
ni_quadra_device_session_read_hwdesc
LIB_API int ni_quadra_device_session_read_hwdesc(void *p_ctx, void *p_data, int device_type)
Read data from the device If device_type is NI_DEVICE_TYPE_DECODER reads data hwdesc from decoder If ...
Definition: ni_quadra_filter_api.c:447
NI_QUADRA_PIX_FMT_ARGB
@ NI_QUADRA_PIX_FMT_ARGB
Definition: ni_quadra_filter_api.h:243
ni_quadra_get_session_frame_num
LIB_API int ni_quadra_get_session_frame_num(void *session_ctx)
Get session_ctx send/recieve frame number.
Definition: ni_quadra_filter_api.c:2064
ni_quadra_init_filters
LIB_API int ni_quadra_init_filters(ni_quadra_filter_t *nifilter)
Init filter.
Definition: ni_quadra_filter_api.c:228
_ni_quadra_frameclone_desc::ui16DstIdx
uint16_t ui16DstIdx
Definition: ni_quadra_filter_api.h:327
_ni_quadra_hw_device_info_scaler_param::rgba
int rgba
Definition: ni_quadra_filter_api.h:505
ni_quadra_build_frame_pool
LIB_API int ni_quadra_build_frame_pool(ni_quadra_filter_t *nifilter, int width, int height, int out_format, int pool_size)
Alloc frame pool for filter.
Definition: ni_quadra_filter_api.c:381
_ni_quadra_filter_t::scaler_param_b
double scaler_param_b
Definition: ni_quadra_filter_api.h:371
ni_quadra_check_hw_info
LIB_API int ni_quadra_check_hw_info(ni_quadra_hw_device_info_t **pointer_to_p_hw_device_info, int task_mode, ni_quadra_hw_device_info_threshold_param_t *hw_info_threshold_param, int preferential_device_type, ni_quadra_hw_device_info_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
Definition: ni_quadra_filter_api.c:1870
ni_quadra_upload_device_session_open
LIB_API int ni_quadra_upload_device_session_open(NIFramesContext *ni_ctx)
Open hwupload filter.
Definition: ni_quadra_filter_api.c:742
_ni_fifo_buffer_t
Definition: ni_quadra_filter_api.h:149
_ni_quadra_filter_t::initialized
int initialized
Definition: ni_quadra_filter_api.h:365
_niquadraFrameSurface1
Definition: ni_quadra_filter_api.h:385
NI_QUADRA_RET_SUCCESS
@ NI_QUADRA_RET_SUCCESS
Definition: ni_quadra_filter_api.h:207
NI_QUADRA_PIX_FMT_BGRA
@ NI_QUADRA_PIX_FMT_BGRA
Definition: ni_quadra_filter_api.h:242
_ni_quadra_scaler_drawbox_params_t
Definition: ni_quadra_filter_api.h:424
NIFramesContext::suspended_device_handle
int32_t suspended_device_handle
Definition: ni_quadra_filter_api.h:409
ni_quadra_ai_frame_buffer_alloc
LIB_API int ni_quadra_ai_frame_buffer_alloc(void *p_frame, ni_quadra_network_data_t *p_network)
Allocate input layers memory for AI frame buffer based on provided parameters taking into account wid...
Definition: ni_quadra_filter_api.c:600
ni_quadra_filter_frames_init
LIB_API int ni_quadra_filter_frames_init(NIFramesContext *ni_ctx, int *width, int *height, int ni_fmat, int keep_alive_time)
Init filter frame context and set value to session context.
Definition: ni_quadra_filter_api.c:809
NI_QUADRA_SEQ_CHANGE_DRAINING
@ NI_QUADRA_SEQ_CHANGE_DRAINING
Definition: ni_quadra_filter_api.h:208
ni_quadra_filter_hwup_frame
LIB_API int ni_quadra_filter_hwup_frame(NIFramesContext *ni_ctx, niquadraFrameSurface1_t *dst_surf, int width, int height, int ni_fmat, int nb_planes, const int *linesize, uint8_t **src_data)
Upload frame.
Definition: ni_quadra_filter_api.c:1416
_ni_quadra_frame_config::rectangle_width
uint16_t rectangle_width
Definition: ni_quadra_filter_api.h:264
_ni_quadra_network_data::outset
ni_quadra_network_layer_offset_t * outset
Definition: ni_quadra_filter_api.h:320
_ni_quadra_scaler_drawbox_params_t::rgba_c
uint32_t rgba_c
Definition: ni_quadra_filter_api.h:430
_ni_quadra_hw_device_info_encoder_param::fps
uint32_t fps
Definition: ni_quadra_filter_api.h:478
_ni_fifo_buffer_t::buffer_size
uint32_t buffer_size
Definition: ni_quadra_filter_api.h:153
_ni_quadra_split_context_t
Definition: ni_quadra_filter_api.h:375
_ni_quadra_network_layer_params_t::data_format
int32_t data_format
Definition: ni_quadra_filter_api.h:280
NI_QUADRA_CODEC_HW_RSVD
@ NI_QUADRA_CODEC_HW_RSVD
Definition: ni_quadra_filter_api.h:342
_ni_quadra_frame_config::frame_index
uint16_t frame_index
Definition: ni_quadra_filter_api.h:269
ni_quadra_filter_device_config_frame
LIB_API int ni_quadra_filter_device_config_frame(void *p_ctx, ni_quadra_frame_config_t *p_cfg)
Configure the 2D engine to work based on provided parameters.
Definition: ni_quadra_filter_api.c:1782
_ni_quadra_frame_config::picture_height
uint16_t picture_height
Definition: ni_quadra_filter_api.h:261
ni_quadra_scaler_watermark_params_t
struct _ni_quadra_scaler_watermark_params_t ni_quadra_scaler_watermark_params_t
_ni_quadra_hw_device_info_scaler_param::h
uint32_t h
Definition: ni_quadra_filter_api.h:502
AVNIDeviceContext
struct AVNIDeviceContext AVNIDeviceContext
_ni_quadra_card_info::task_num
int task_num
Definition: ni_quadra_filter_api.h:459
ni_quadra_session_timestamp_copy
LIB_API void ni_quadra_session_timestamp_copy(void *src_ctx, void *dst_ctx)
Copy filter session context.
Definition: ni_quadra_filter_api.c:1690
_ni_quadra_card_info::max_task_num
int max_task_num
Definition: ni_quadra_filter_api.h:460
ni_quadra_filter_drawtext_prep_frames
LIB_API int ni_quadra_filter_drawtext_prep_frames(void **niframe)
prepare frames for ni_drawtext filter
Definition: ni_quadra_filter_api.c:501
ni_quadra_hw_device_info_ai_param_t
struct _ni_quadra_hw_device_info_ai_param ni_quadra_hw_device_info_ai_param_t
ni_quadra_filter_device_create
LIB_API int ni_quadra_filter_device_create(AVNIDeviceContext *ni_hw_ctx, const char *device)
Sends frame pool setup info to device.
Definition: ni_quadra_filter_api.c:958
NIFramesContext
Definition: ni_quadra_filter_api.h:400
_ni_quadra_hw_device_info_ai_param
Definition: ni_quadra_filter_api.h:508
_ni_quadra_filter_t::is_p2p
bool is_p2p
Definition: ni_quadra_filter_api.h:368
_ni_quadra_card_info::model_load
int model_load
Definition: ni_quadra_filter_api.h:458
ni_quadra_ai_network_layer_dims
LIB_API uint32_t ni_quadra_ai_network_layer_dims(ni_quadra_network_layer_params_t *p_param)
Get dims from ni_quadra_network_layer_params_t.
Definition: ni_quadra_filter_api.c:615
_niquadraFrameSurface1::encoding_type
int8_t encoding_type
Definition: ni_quadra_filter_api.h:394
ni_fifo_free
LIB_API void ni_fifo_free(ni_fifo_buffer_t *p_fifo)
Free a fifo.
Definition: ni_quadra_filter_api.c:85
ni_quadra_get_session_runstatus
LIB_API int ni_quadra_get_session_runstatus(void *session_ctx)
Get session context run status.
Definition: ni_quadra_filter_api.c:1702
_ni_quadra_hw_device_info_decoder_param::w
uint32_t w
Definition: ni_quadra_filter_api.h:494
ni_quadra_filter_frame_free
LIB_API void ni_quadra_filter_frame_free(void *opaque, uint8_t *data)
Free filter frame.
Definition: ni_quadra_filter_api.c:1052
ni_quadra_scaler_drawbox_params_t
struct _ni_quadra_scaler_drawbox_params_t ni_quadra_scaler_drawbox_params_t
NI_QUADRA_SCALER_OPCODE_SCALE
@ NI_QUADRA_SCALER_OPCODE_SCALE
Definition: ni_quadra_filter_api.h:181
ni_quadra_filter_frame_buffer_alloc_dl
LIB_API int ni_quadra_filter_frame_buffer_alloc_dl(void *niframe, int video_width, int video_height, int pixel_format)
Allocate preliminary memory for the frame buffer based on provided parameters.
Definition: ni_quadra_filter_api.c:520
_ni_quadra_network_data::input_num
uint32_t input_num
Definition: ni_quadra_filter_api.h:314
_ni_quadra_hw_device_info_decoder_param::hw_frame
int hw_frame
Definition: ni_quadra_filter_api.h:497
_ni_quadra_filter_t::filterblit
int filterblit
Definition: ni_quadra_filter_api.h:369
_ni_quadra_filter_t::dl_frame
void * dl_frame
Definition: ni_quadra_filter_api.h:361
_ni_quadra_hw_device_info_coder_param::scaler_param
ni_quadra_hw_device_info_scaler_param_t * scaler_param
Definition: ni_quadra_filter_api.h:528
NI_QUADRA_PIX_FMT_YUVJ420P
@ NI_QUADRA_PIX_FMT_YUVJ420P
Definition: ni_quadra_filter_api.h:254
NI_QUADRA_PIX_FMT_NV12
@ NI_QUADRA_PIX_FMT_NV12
Definition: ni_quadra_filter_api.h:239
_ni_quadra_hw_device_info_coder_param::ai_param
ni_quadra_hw_device_info_ai_param_t * ai_param
Definition: ni_quadra_filter_api.h:529
_ni_quadra_filter_t::scaler_param_c
double scaler_param_c
Definition: ni_quadra_filter_api.h:372
_niquadraFrameSurface1::bit_depth
int8_t bit_depth
Definition: ni_quadra_filter_api.h:393
ni_quadra_filter_get_data3
uint8_t * ni_quadra_filter_get_data3(void *p_frame)
Get niframe data3 from device.
Definition: ni_quadra_filter_api.c:495
_ni_quadra_hw_device_info_threshold_param
Definition: ni_quadra_filter_api.h:516
ni_quadra_device_queue_t
struct _ni_quadra_device_queue ni_quadra_device_queue_t
_ni_quadra_hw_device_info_decoder_param::rgba
int rgba
Definition: ni_quadra_filter_api.h:496
NI_QUADRA_ERROR_INVALID_SESSION
@ NI_QUADRA_ERROR_INVALID_SESSION
Definition: ni_quadra_filter_api.h:210
NI_QUADRA_PIX_FMT_ABGR
@ NI_QUADRA_PIX_FMT_ABGR
Definition: ni_quadra_filter_api.h:244
NI_QUADRA_LOG_ERROR
@ NI_QUADRA_LOG_ERROR
Definition: ni_quadra_filter_api.h:164
_ni_quadra_network_layer_params_t::num_of_dims
uint32_t num_of_dims
Definition: ni_quadra_filter_api.h:277
ni_fifo_return_read
LIB_API int ni_fifo_return_read(ni_fifo_buffer_t *p_fifo)
Push back the last read buffer to the fifo.
Definition: ni_quadra_filter_api.c:207
NI_QUADRA_LOG_FATAL
@ NI_QUADRA_LOG_FATAL
Definition: ni_quadra_filter_api.h:163
_ni_quadra_hw_device_info_encoder_param::h
uint32_t h
Definition: ni_quadra_filter_api.h:479
ni_quadra_network_layer_offset_t
struct _ni_quadra_network_layer_offset ni_quadra_network_layer_offset_t
ni_quadra_device_session_copy
LIB_API int ni_quadra_device_session_copy(void *src_ctx, void *dst_ctx)
Copy filter session context.
Definition: ni_quadra_filter_api.c:1685
ni_quadra_scaler_opcode_t
enum _ni_quadra_scaler_opcode ni_quadra_scaler_opcode_t
ni_quadra_filter_device_session_init_framepool
LIB_API int ni_quadra_filter_device_session_init_framepool(NIFramesContext *ni_ctx, uint32_t pool_size, uint32_t pool)
Sends frame pool setup info to device.
Definition: ni_quadra_filter_api.c:747
_ni_quadra_filter_t::device_handle
int32_t device_handle
Definition: ni_quadra_filter_api.h:348
_ni_quadra_frame_config::orientation
uint8_t orientation
Definition: ni_quadra_filter_api.h:272
ni_quadra_set_framerate
LIB_API void ni_quadra_set_framerate(void *p_ctx, int num, int den)
Definition: ni_quadra_filter_api.c:2050
NI_QUADRA_LOG_DEBUG
@ NI_QUADRA_LOG_DEBUG
Definition: ni_quadra_filter_api.h:166
ni_quadra_hw_device_info_t
struct _ni_quadra_hw_device_info ni_quadra_hw_device_info_t
_ni_quadra_frame_config::rectangle_x
int16_t rectangle_x
Definition: ni_quadra_filter_api.h:266
ni_quadra_rsrc_get_device_pool
LIB_API ni_quadra_device_pool_t * ni_quadra_rsrc_get_device_pool(void)
Create and return the allocated ni_device_pool_t struct.
Definition: ni_quadra_filter_api.c:1995
NI_QUADRA_MAX_SUPPORT_DRAWBOX_NUM
#define NI_QUADRA_MAX_SUPPORT_DRAWBOX_NUM
Definition: ni_quadra_filter_api.h:143
ni_quadra_filter_frame_buffer_alloc_hwenc
LIB_API int ni_quadra_filter_frame_buffer_alloc_hwenc(ni_quadra_filter_t *nifilter, int video_width, int video_height, int extra_len)
Allocate memory for the hwDescriptor buffer based on provided parameters taking into account pic size...
Definition: ni_quadra_filter_api.c:406
_ni_quadra_card_info
Definition: ni_quadra_filter_api.h:454
_ni_quadra_hw_device_info_threshold_param::load_threshold
int load_threshold
Definition: ni_quadra_filter_api.h:519
ni_quadra_get_frame_data_len
LIB_API void ni_quadra_get_frame_data_len(void *niframe, uint32_t *dst_datalen)
Get niframe data datalen.
Definition: ni_quadra_filter_api.c:1756
_ni_quadra_network_layer_info::out_param
ni_quadra_network_layer_params_t * out_param
Definition: ni_quadra_filter_api.h:304
ni_quadra_rsrc_get_device_by_block_name
LIB_API int ni_quadra_rsrc_get_device_by_block_name(const char *blk_name, ni_quadra_device_type_t device_type)
Get GUID of the device by block device name and type.
Definition: ni_quadra_filter_api.c:1888
_ni_quadra_scaler_watermark_params_t::ui32Width
uint32_t ui32Width
Definition: ni_quadra_filter_api.h:436
ni_quadra_filter_hwdl_frame
LIB_API int ni_quadra_filter_hwdl_frame(NIFramesContext *ni_ctx, niquadraFrameSurface1_t *src_surf, int width, int height, int ni_fmat, int nb_planes, const int *linesize, uint8_t **dst_data)
Download frame.
Definition: ni_quadra_filter_api.c:1588
ni_macro_defs_quadra.h
NI_QUADRA_PIX_FMT_YUV420P10BE
@ NI_QUADRA_PIX_FMT_YUV420P10BE
Definition: ni_quadra_filter_api.h:253
_ni_quadra_hw_device_info_ai_param::rgba
int rgba
Definition: ni_quadra_filter_api.h:513
_ni_quadra_hw_device_info_decoder_param::bit_8_10
uint32_t bit_8_10
Definition: ni_quadra_filter_api.h:495
_ni_quadra_scaler_multi_drawbox_params_t
Definition: ni_quadra_filter_api.h:442
_ni_quadra_card_info::card_idx
int card_idx
Definition: ni_quadra_filter_api.h:456
_ni_quadra_frame_config::session_id
uint16_t session_id
Definition: ni_quadra_filter_api.h:270
NI_QUADRA_SCALER_OPCODE_DRAWBOX
@ NI_QUADRA_SCALER_OPCODE_DRAWBOX
Definition: ni_quadra_filter_api.h:188
NI_QUADRA_PARAM_WARNING_DEPRECATED
@ NI_QUADRA_PARAM_WARNING_DEPRECATED
Definition: ni_quadra_filter_api.h:213
NI_QUADRA_PIXEL_PLANAR_FORMAT_PLANAR
@ NI_QUADRA_PIXEL_PLANAR_FORMAT_PLANAR
Definition: ni_quadra_filter_api.h:174
_ni_quadra_filter_t::blk_io_handle
int32_t blk_io_handle
Definition: ni_quadra_filter_api.h:349
ni_quadra_frame_buffer_free
LIB_API int ni_quadra_frame_buffer_free(void *p_data)
Free frame buffer that was previously allocated with either ni_frame_buffer_alloc or ni_encoder_frame...
Definition: ni_quadra_filter_api.c:1982
ni_quadra_device_close
LIB_API void ni_quadra_device_close(int32_t handle)
Close device handle.
Definition: ni_quadra_filter_api.c:1662
ni_quadra_device_type_t
ni_quadra_device_type_t
Definition: ni_quadra_filter_api.h:217
NI_QUADRA_CODEC_FORMAT_H265
@ NI_QUADRA_CODEC_FORMAT_H265
Definition: ni_quadra_filter_api.h:199
_ni_quadra_hw_device_info_coder_param::encoder_param
ni_quadra_hw_device_info_encoder_param_t * encoder_param
Definition: ni_quadra_filter_api.h:526
NI_QUADRA_DEVICE_TYPE_DECODER
@ NI_QUADRA_DEVICE_TYPE_DECODER
Definition: ni_quadra_filter_api.h:222
_ni_quadra_filter_t::session_opened
int session_opened
Definition: ni_quadra_filter_api.h:366
NI_QUADRA_ERROR
@ NI_QUADRA_ERROR
Definition: ni_quadra_filter_api.h:212
NI_QUADRA_PIX_FMT_UYVY422
@ NI_QUADRA_PIX_FMT_UYVY422
Definition: ni_quadra_filter_api.h:249
_ni_quadra_hw_device_info_scaler_param
Definition: ni_quadra_filter_api.h:500
AVNIDeviceContext::cards
int32_t cards[128]
Definition: ni_quadra_filter_api.h:420
_ni_quadra_frameclone_desc::ui16SrcIdx
uint16_t ui16SrcIdx
Definition: ni_quadra_filter_api.h:326
NI_QUADRA_PIX_FMT_RGBA
@ NI_QUADRA_PIX_FMT_RGBA
Definition: ni_quadra_filter_api.h:241
ni_quadra_network_layer_params_t
struct _ni_quadra_network_layer_params_t ni_quadra_network_layer_params_t
ni_quadra_get_session_blkiohandle
LIB_API int ni_quadra_get_session_blkiohandle(void *session_ctx)
Get session context blk_io_handle.
Definition: ni_quadra_filter_api.c:1707
_ni_quadra_hw_device_info_encoder_param::lookaheadDepth
uint32_t lookaheadDepth
Definition: ni_quadra_filter_api.h:484
ni_quadra_split_context_t
struct _ni_quadra_split_context_t ni_quadra_split_context_t
ni_quadra_hw_device_info_encoder_param_t
struct _ni_quadra_hw_device_info_encoder_param ni_quadra_hw_device_info_encoder_param_t
ni_quadra_get_session_id
LIB_API uint32_t ni_quadra_get_session_id(void *session_ctx)
Get session device session id.
Definition: ni_quadra_filter_api.c:1656
ni_quadra_log_level_t
ni_quadra_log_level_t
Definition: ni_quadra_filter_api.h:159
ni_quadra_device_session_hwdl
int ni_quadra_device_session_hwdl(void *p_ctx, void *p_data, niquadraFrameSurface1_t *hwdesc)
Reads YUV data from hw descriptor stored location on device.
Definition: ni_quadra_filter_api.c:646
ni_quadra_hw_device_info_scaler_param_t
struct _ni_quadra_hw_device_info_scaler_param ni_quadra_hw_device_info_scaler_param_t
ni_quadra_packet_buffer_free
LIB_API int ni_quadra_packet_buffer_free(void *p_data)
Free packet buffer that was previously allocated with ni_packet_buffer_alloc.
Definition: ni_quadra_filter_api.c:1965
_ni_fifo_buffer_t::buffer
uint8_t * buffer
Definition: ni_quadra_filter_api.h:155
_ni_quadra_card_info::load
int load
Definition: ni_quadra_filter_api.h:457
_ni_quadra_filter_t::txt_frame
void * txt_frame
Definition: ni_quadra_filter_api.h:362
NI_QUADRA_LOG_TRACE
@ NI_QUADRA_LOG_TRACE
Definition: ni_quadra_filter_api.h:167
_ni_fifo_buffer_t::number_of_buffers
uint32_t number_of_buffers
Definition: ni_quadra_filter_api.h:152
ni_fifo_generic_write
LIB_API uint8_t * ni_fifo_generic_write(ni_fifo_buffer_t *p_fifo)
Get free buffer to write in the fifo.
Definition: ni_quadra_filter_api.c:148
ni_quadra_ai_packet_buffer_alloc
LIB_API int ni_quadra_ai_packet_buffer_alloc(void *p_pkt, ni_quadra_network_data_t *p_network)
Allocate output layers memory for the packet buffer based on provided network.
Definition: ni_quadra_filter_api.c:607
_ni_quadra_frame_config::rectangle_height
uint16_t rectangle_height
Definition: ni_quadra_filter_api.h:265
NI_QUADRA_CODEC_FORMAT_H264
@ NI_QUADRA_CODEC_FORMAT_H264
Definition: ni_quadra_filter_api.h:198
NI_QUADRA_CODEC_HW_NONE
@ NI_QUADRA_CODEC_HW_NONE
Definition: ni_quadra_filter_api.h:338
_ni_quadra_network_layer_params_t::fixed_point_pos
int32_t fixed_point_pos
Definition: ni_quadra_filter_api.h:288
ni_quadra_codec_hw_actions_t
enum ni_quadra_codec_hw_actions ni_quadra_codec_hw_actions_t
This is an enumeration for hw actions.
_ni_fifo_buffer_t::wndx
uint32_t wndx
Definition: ni_quadra_filter_api.h:156
NI_QUADRA_SCALER_OPCODE_ROTATE
@ NI_QUADRA_SCALER_OPCODE_ROTATE
Definition: ni_quadra_filter_api.h:187
ni_fifo_generic_read
LIB_API uint8_t * ni_fifo_generic_read(ni_fifo_buffer_t *p_fifo)
Get first filled buffer to read in the fifo.
Definition: ni_quadra_filter_api.c:178
_ni_quadra_card_info::shared_mem_usage
int shared_mem_usage
Definition: ni_quadra_filter_api.h:461
_ni_fifo_buffer_t::mutex
pthread_mutex_t mutex
Definition: ni_quadra_filter_api.h:151
_ni_quadra_hw_device_info_threshold_param::device_type
int device_type
Definition: ni_quadra_filter_api.h:518
NI_QUADRA_DEVICE_TYPE_SCALER
@ NI_QUADRA_DEVICE_TYPE_SCALER
Definition: ni_quadra_filter_api.h:224
_ni_quadra_pixel_planar_format
_ni_quadra_pixel_planar_format
Definition: ni_quadra_filter_api.h:171
_ni_quadra_hw_device_info_ai_param::w
uint32_t w
Definition: ni_quadra_filter_api.h:511
_ni_quadra_filter_t::dst_pkt
void * dst_pkt
Definition: ni_quadra_filter_api.h:363
ni_quadra_filter_device_alloc_frame
LIB_API int ni_quadra_filter_device_alloc_frame(ni_quadra_filter_t *nifilter, int width, int height, int format, int options, int rectangle_width, int rectangle_height, int rectangle_x, int rectangle_y, int rgba_color, int frame_index, int type)
Allocate a frame on the device for 2D engine or AI engine to work on based on provided parameters.
Definition: ni_quadra_filter_api.c:415
_ni_quadra_scaler_multi_watermark_params_t::multi_watermark_params
ni_quadra_scaler_watermark_params_t multi_watermark_params[NI_QUADRA_MAX_SUPPORT_WATERMARK_NUM]
Definition: ni_quadra_filter_api.h:451
_ni_quadra_device_queue::xcoder_cnt
uint32_t xcoder_cnt[NI_QUADRA_DEVICE_TYPE_XCODER_MAX]
Definition: ni_quadra_filter_api.h:534
_ni_quadra_network_layer_info
Definition: ni_quadra_filter_api.h:301
_niquadraFrameSurface1::ui16session_ID
uint16_t ui16session_ID
Definition: ni_quadra_filter_api.h:388
ni_find_start_code
const LIB_API uint8_t * ni_find_start_code(const uint8_t *p, const uint8_t *end, uint32_t *state)
Find the next start code.
Definition: ni_av_codec.c:2897
NIFramesContext::surfaces_internal
niquadraFrameSurface1_t * surfaces_internal
Definition: ni_quadra_filter_api.h:402
_ni_quadra_network_layer_params_t::dfp
struct _ni_quadra_network_layer_params_t::@31::@32 dfp
NIFramesContext
struct NIFramesContext NIFramesContext
ni_fifo_is_full
LIB_API int ni_fifo_is_full(ni_fifo_buffer_t *p_fifo)
Check if a fifo is full.
Definition: ni_quadra_filter_api.c:111
_ni_quadra_hw_device_info_decoder_param::h
uint32_t h
Definition: ni_quadra_filter_api.h:493
_ni_quadra_device_queue
Definition: ni_quadra_filter_api.h:532
ni_quadra_split_ctx_set
LIB_API void ni_quadra_split_ctx_set(NIFramesContext *ni_ctx, niquadraFrameSurface1_t *ni_surf, niquadraFrameSurface1_t *ni_surf_1, niquadraFrameSurface1_t *ni_surf_2, int num_extra_outputs)
Split context set.
Definition: ni_quadra_filter_api.c:1628
NI_QUADRA_CODEC_HW_UPLOAD
@ NI_QUADRA_CODEC_HW_UPLOAD
Definition: ni_quadra_filter_api.h:341
ni_quadra_filter_device_alloc_dst_frame
LIB_API int ni_quadra_filter_device_alloc_dst_frame(ni_quadra_filter_t *nifilter, niquadraFrameSurface1_t *p_hwdesc, int type)
Allocate a frame on the device and return the frame index.
Definition: ni_quadra_filter_api.c:428
_ni_quadra_network_layer_params_t::sizes
uint32_t sizes[6]
Definition: ni_quadra_filter_api.h:278
_ni_quadra_scaler_drawbox_params_t::start_y
uint32_t start_y
Definition: ni_quadra_filter_api.h:427
NIFramesContext::split_ctx
ni_quadra_split_context_t split_ctx
Definition: ni_quadra_filter_api.h:407
_ni_quadra_frameclone_desc::ui32Offset
uint32_t ui32Offset
Definition: ni_quadra_filter_api.h:328
_ni_quadra_hw_device_info_scaler_param::bit_8_10
uint32_t bit_8_10
Definition: ni_quadra_filter_api.h:504
_ni_quadra_scaler_watermark_params_t::ui32Height
uint32_t ui32Height
Definition: ni_quadra_filter_api.h:437
NI_QUADRA_CODEC_FORMAT_JPEG
@ NI_QUADRA_CODEC_FORMAT_JPEG
Definition: ni_quadra_filter_api.h:201
_ni_quadra_hw_device_info
Definition: ni_quadra_filter_api.h:465
_ni_quadra_filter_t::keep_alive_timeout
int keep_alive_timeout
Definition: ni_quadra_filter_api.h:367
_ni_quadra_hw_device_info::device_type_num
int device_type_num
Definition: ni_quadra_filter_api.h:468
_ni_quadra_filter_t
Definition: ni_quadra_filter_api.h:346
_ni_quadra_hw_device_info::err_code
int err_code
Definition: ni_quadra_filter_api.h:473
ni_quadra_ai_config_hvsplus
LIB_API int ni_quadra_ai_config_hvsplus(ni_quadra_filter_t *nifilter, ni_quadra_network_data_t *p_network, int nb_width, int nb_height, int level, int format)
configure a hvsplus context based with the network binary
Definition: ni_quadra_filter_api.c:583
ni_quadra_device_pool_t
struct _ni_quadra_device_pool ni_quadra_device_pool_t
NIFramesContext::dst_frame
void * dst_frame
Definition: ni_quadra_filter_api.h:408
_niquadraFrameSurface1::ui16FrameIdx
uint16_t ui16FrameIdx
Definition: ni_quadra_filter_api.h:387
_ni_quadra_hw_device_info_scaler_param::w
uint32_t w
Definition: ni_quadra_filter_api.h:503
NI_QUADRA_DEVICE_TYPE_XCODER_MAX
@ NI_QUADRA_DEVICE_TYPE_XCODER_MAX
Definition: ni_quadra_filter_api.h:226
_ni_quadra_network_data::inset
ni_quadra_network_layer_offset_t * inset
Definition: ni_quadra_filter_api.h:318
_ni_quadra_frameclone_desc
Definition: ni_quadra_filter_api.h:324
ni_fifo_buffer_t
struct _ni_fifo_buffer_t ni_fifo_buffer_t
ni_quadra_filter_frames_close
LIB_API int ni_quadra_filter_frames_close(NIFramesContext *ni_ctx, int pool_size)
Close filter context and frame.
Definition: ni_quadra_filter_api.c:755
_ni_quadra_scaler_drawbox_params_t::end_x
uint32_t end_x
Definition: ni_quadra_filter_api.h:428
_ni_quadra_hw_device_info_encoder_param::bit_8_10
uint32_t bit_8_10
Definition: ni_quadra_filter_api.h:485
ni_quadra_network_layer_convert_output
LIB_API int ni_quadra_network_layer_convert_output(void *p_data, float *dst, uint32_t num, ni_quadra_network_data_t *p_network, uint32_t layer)
Convert data from nipacket to dst data.
Definition: ni_quadra_filter_api.c:625