libxcoder  5.2.0
ni_quadra_enc_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_enc_api.h
24 *
25 * \brief NETINT encoder API header file
26 *
27 *******************************************************************************/
28 
29 #pragma once
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 // #include "ni_defs.h"
36 // #include "ni_rsrc_api.h"
37 // #include "ni_util.h"
38 // #include "ni_device_api.h"
39 // #include "ni_av_codec.h"
40 #include "ni_quadra_filter_api.h"
41 #include <limits.h>
42 
43 // copy maximum number of bytes of a string from src to dst, ensuring null byte
44 // terminated
45 static inline void ni_xcoder_strncpy(char *dst, const char *src, int max)
46 {
47  if (dst && src && max)
48  {
49  *dst = '\0';
50  strncpy(dst, src, max);
51  *(dst + max - 1) = '\0';
52  }
53 }
54 #define NIALIGN(x, a) (((x) + (a)-1) & ~((a)-1))
55 #define NIODD2EVEN(X) ((X & 1) && (X > 31)) ? (X + 1) : (X)
56 
59 #define NI_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
60 
61 #define QUADRA_XCODER_TEST_RECONF_LONG_TERM_REF 4
62 
63 /*!*
64 * \brief Session running state type.
65 */
67 {
73 
74 typedef struct _ni_quadra_enc_context
75 {
76  char *dev_xcoder;
77  char *dev_xcoder_name; /* dev name of the xcoder card to use */
78  char *blk_xcoder_name; /* blk name of the xcoder card to use */
79  int dev_enc_idx; /* user-specified encoder index */
80  char *dev_blk_name; /* user-specified encoder block device name */
82  uint64_t xcode_load_pixel; /* xcode load in pixels by this encode task */
83  char tmp_blk_dev_name[32];
86  int tmp_hw_id;
88 
89  void *api_pkt; /* used for receiving bitstream from xcoder */
90  void *api_fme; /* used for sending YUV data to xcoder */
91  void *api_ctx;
92  void *api_param;
93  void *input_frame;
94 
95  uint8_t *extradata;
97 
103  int64_t bit_rate;
104  int width;
105  int height;
108  int codec_id;
109  int pix_fmt; // used when don reinit
110  int sw_pix_fmt; // the pix_fmt from ffmpeg
112  int64_t frame_pts;
113  int64_t pkt_dts;
116  int64_t local_pts;
117  uint32_t data_len;
118 
119  // color metrics
128  int user_color_range; // Need to keep for backward compatibility
129 
130  // sample_aspect_ratio
131  int sar_num;
132  int sar_den;
135 
136  /* below are all command line options */
137  char *xcoder_opts;
138 
139  char *xcoder_gop;
140  /* Variables that need to be initialized */
141  int started;
142  uint8_t *p_spsPpsHdr;
144  int spsPpsAttach; /* Attach SPS&PPS to Packet */
146  int firstPktArrived; /* specially treat first pkt of the encoded bitstream */
147  int64_t dts_offset;
148  int gop_offset_count; /*this is a counter to guess the pts only dtsOffset
149  times */
153  int64_t latest_dts;
154  /* backup copy of original values of -enc command line option */
156  // low delay mode flags
157  int gotPacket; /* used to stop receiving packets when a packet is already
158  received */
159  int sentFrame; /* used to continue receiving packets when a frame is sent and
160  a packet is not yet received */
161  int nvme_io_size; /* custom nvme io size */
168  void *aux_data;
169  int reconfigCount; /* count of reconfig */
176  int reinit;
184  uint32_t copy_len;
190  bool bget_psnr;
193 
194 /*!*****************************************************************************
195  * \brief Set value referenced by name in encode parameters structure
196  *
197  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
198  * \param[in] name String represented parameter name to search
199  * \param[in] value Parameter value to set
200  *
201  * \return On success
202  * NI_RETCODE_SUCCESS
203  * On failure
204  * NI_RETCODE_FAILURE
205  * NI_QUADRA_PARAM_WARNING_DEPRECATED
206  *******************************************************************************/
208  ni_quadra_enc_context_t *p_enc_ctx, const char *name, const char *value);
209 
210 /*!*****************************************************************************
211  * \brief Set value referenced by name in encode parameters structure
212  *
213  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
214  * \param[in] name String represented parameter name to search
215  * \param[in] value Parameter value to set
216  *
217  * \return On success
218  * NI_RETCODE_SUCCESS
219  * On failure
220  * NI_RETCODE_FAILURE
221  * NI_QUADRA_PARAM_WARNING_DEPRECATED
222  *******************************************************************************/
224  ni_quadra_enc_context_t *p_enc_ctx, const char *name, const char *value);
225 
226 /*!*****************************************************************************
227  * \brief Initialize init device session_context and init default params
228  * including ni_quadra_enc_context_t,
229  * ni_session_context_t,
230  * ni_xcoder_params_t
231  *
232  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
233  *
234  * \return On success
235  * NI_LOGAN_RETCODE_SUCCESS
236  * On failure
237  * NI_LOGAN_RETCODE_FAILURE
238  * NI_LOGAN_RETCODE_INVALID_PARAM,
239  * NI_LOGAN_RETCODE_ERROR_MEM_ALOC, etc
240  *******************************************************************************/
242 
243 /*!*****************************************************************************
244  * \brief Initialize malloc device session_context and malloc params
245  * including ni_quadra_enc_context_t,
246  * ni_session_context_t,
247  * ni_xcoder_params_t
248  *
249  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
250  *
251  * \return On success
252  * NI_LOGAN_RETCODE_SUCCESS
253  * On failure
254  * NI_LOGAN_RETCODE_FAILURE
255  * NI_LOGAN_RETCODE_INVALID_PARAM,
256  * NI_LOGAN_RETCODE_ERROR_MEM_ALOC, etc
257  *******************************************************************************/
259 
260 /*!*****************************************************************************
261  * \brief Close device session_context
262  * including ni_quadra_enc_context_t,
263  *
264  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
265  *
266  * \return 0
267  *
268  *******************************************************************************/
270 
271 /*!*****************************************************************************
272  * \brief Set encode sequence change
273  *
274  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
275  * \param[in] width frame width
276  * \param[in] height frame height
277  * \param[in] bit_depth_factor frame bit_depth
278  *
279  * \return On success
280  * NI_RETCODE_SUCCESS
281  * On failure
282  * NI_RETCODE_FAILURE
283  *
284  *******************************************************************************/
286  int width, int height,
287  int bit_depth_factor);
288 
289 /*!*****************************************************************************
290  * \brief Set encode session open and set niframe default info
291  *
292  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
293  * \param[in] frame_width frame width
294  * \param[in] frame_height frame height
295  * \param[in] frame_linesize frame linesize
296  * \param[in] p_surface pointer to niquadraFrameSurface1_t
297  * \param[in] hw_frames_ctx frame hw_frames_ctx is exist
298  * \param[in] frame_queqe frame opaque
299  * \param[in] avctx_flags avctx flags
300  *
301  * \return On success
302  * NI_RETCODE_SUCCESS
303  * On failure
304  * NI_RETCODE_FAILURE
305  *
306  *******************************************************************************/
308  int frame_width, int frame_height,
309  const int *frame_linesize,
310  niquadraFrameSurface1_t *p_surface,
311  bool hw_frames_ctx, int frame_queqe,
312  int avctx_flags);
313 
314 /*!*****************************************************************************
315  * \brief Add a new auxiliary data to a frame
316  *
317  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
318  * \param[in/out] side_data a frame to which the auxiliary data should be added
319  * \param[in] data_size size of the added auxiliary data
320  * \param[in] type type of the added auxiliary data
321  *
322  * \return void
323  ******************************************************************************/
325  void *side_data, int data_size,
326  int type);
327 /*!*****************************************************************************
328  * \brief Prepare a niframe which to send to encoder
329  *
330  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
331  * \param[in] p_surface pointer to niquadraFrameSurface1_t
332  * \param[in] frame_width frame width
333  * \param[in] frame_height frame height
334  *
335  * \return On success
336  * NI_RETCODE_SUCCESS
337  * On failure
338  * NI_RETCODE_FAILURE
339  ******************************************************************************/
341  niquadraFrameSurface1_t *p_surface,
342  int frame_width, int frame_height);
343 
344 /*!*****************************************************************************
345  * \brief Prepare auxiliary data that should be sent together with this frame
346  * to encoder based on the auxiliary data of the decoded frame.
347  *
348  * \param[in/out] Pointer to ni_quadra_enc_context_t
349  * \param[out] side_data frame side data
350  * \param[in] data_size frame side data size
351  *
352  * \return On success
353  * NI_RETCODE_SUCCESS
354  * On failure
355  * NI_RETCODE_FAILURE
356  ******************************************************************************/
358  void *side_data, int data_size);
359 
360 /*!*****************************************************************************
361  * \brief Copy avframe to niframe
362  *
363  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
364  * \param[in] data frame data
365  * \param[in] nidata frame data[3]
366  * \param[in] linesize frame linesize
367  * \param[in] frame_width frame width
368  * \param[in] frame_height frame height
369  * \param[in] nif_src_ctx pointer to niquadraFrameSurface1_t
370  *
371  * \return On success
372  * NI_RETCODE_SUCCESS
373  * On failure
374  * NI_RETCODE_FAILURE
375  *
376  *******************************************************************************/
378  uint8_t **data, uint8_t *nidata,
379  int *linesize, int frame_width,
380  int frame_height,
381  NIFramesContext *nif_src_ctx);
382 
383 /*!*****************************************************************************
384  * \brief Send niframe to do encoder
385  *
386  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
387  *
388  * \return On success
389  * NI_RETCODE_SUCCESS
390  * On failure
391  * NI_RETCODE_FAILURE
392  *
393  *******************************************************************************/
395 
396 /*!*****************************************************************************
397  * \brief Flush encode session context
398  *
399  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
400  *
401  * \return On success
402  * NI_RETCODE_SUCCESS
403  * On failure
404  * NI_RETCODE_FAILURE
405  *
406  *******************************************************************************/
407 LIB_API int
409 
410 /*!*****************************************************************************
411  * \brief Reinit encode context
412  *
413  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
414  * \param[in] linesize frame linesize
415  * \param[in] frame_width frame width
416  * \param[in] frame_height frame height
417  *
418  * \return On success
419  * NI_RETCODE_SUCCESS
420  * On failure
421  * NI_RETCODE_FAILURE
422  *
423  *******************************************************************************/
425  int frame_width, int frame_height,
426  const int *linesize);
427 
428 /*!*****************************************************************************
429  * \brief Reinit after need to sync context
430  *
431  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
432  *
433  * \return On success
434  * NI_RETCODE_SUCCESS
435  * On failure
436  * NI_RETCODE_FAILURE
437  *
438  *******************************************************************************/
440 
441 /*!*****************************************************************************
442  * \brief Recive packet frome encode
443  *
444  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
445  *
446  * \return On success
447  * NI_RETCODE_SUCCESS
448  * On failure
449  * NI_RETCODE_FAILURE
450  *
451  *******************************************************************************/
452 LIB_API int
454 
455 /*!*****************************************************************************
456  * \brief Copy niframe to make avframe
457  *
458  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
459  * \param[in] p_dst Pointer to frame data
460  *
461  * \return On success
462  * NI_RETCODE_SUCCESS
463  * On failure
464  * NI_RETCODE_FAILURE
465  *
466  *******************************************************************************/
468  uint8_t *p_dst);
469 
470 /*!*****************************************************************************
471  * \brief Make avpkt from encode
472  *
473  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
474  * \param[in] is_pkt Pointer to frame data
475  * \param[in] pkt_pts Pointer to frame data
476  * \param[in] pkt_dts Pointer to frame data
477  * \param[in] pkt_flag Pointer to frame data
478  *
479  * \return On success
480  * NI_RETCODE_SUCCESS
481  * On failure
482  * NI_RETCODE_FAILURE
483  *
484  *******************************************************************************/
486  int is_pkt, int64_t *pkt_pts,
487  int64_t *pkt_dts, int *pkt_flag);
488 
489 /*!*****************************************************************************
490  * \brief Set width and height to session context
491  *
492  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
493  * \param[in] width frame width
494  * \param[in] height frame height
495  *
496  * \return On success
497  * NI_RETCODE_SUCCESS
498  * On failure
499  * NI_RETCODE_FAILURE
500  *
501  *******************************************************************************/
502 LIB_API void ni_quadra_set_session_wh(void *session_ctx, int width, int height);
503 
504 /*!*****************************************************************************
505  * \brief Allocate memory for the packet buffer based on provided packet size
506  *
507  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
508  *
509  * \return On success
510  * NI_RETCODE_SUCCESS
511  * On failure
512  * NI_RETCODE_ERROR_MEM_ALOC
513  *
514  *******************************************************************************/
516 
517 /*!*****************************************************************************
518  * \brief Check gop_params
519  *
520  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
521  *
522  * \return On success
523  * ture
524  * On failure
525  * false
526  *
527  *******************************************************************************/
529 
530 /*!*****************************************************************************
531  * \brief Set gop_params
532  *
533  * \param[in/out] p_enc_ctx Pointer to ni_quadra_enc_context_t
534  * \param[in/out] key Pointer params string
535  *
536  * \return none
537  *
538  *******************************************************************************/
540  char *key);
541 
542 /*!*****************************************************************************
543  * \brief Get struct ni_pkt_info size
544  *
545  * \param[in/out] void
546  *
547  * \return int
548  *
549  *******************************************************************************/
551 
552 /*!*****************************************************************************
553  * \brief Get ni_pkt_info psnr info
554  *
555  * \param[in/out] session_ctx Pointer to ni_session_context_t
556  * \param[in/out] data Pointer void* which has been malloced
557  *
558  * \return none
559  *
560  *******************************************************************************/
561 LIB_API void ni_quadra_get_pkt_info(void *session_ctx, void *data);
562 #ifdef __cplusplus
563 }
564 #endif
ni_quadra_enc_context_t
struct _ni_quadra_enc_context ni_quadra_enc_context_t
_ni_quadra_enc_context::forced_header_enable
int forced_header_enable
Definition: ni_quadra_enc_api.h:187
_ni_quadra_enc_context::seqChangeCount
int seqChangeCount
Definition: ni_quadra_enc_api.h:150
ni_quadra_frame_new_aux_data
LIB_API void ni_quadra_frame_new_aux_data(ni_quadra_enc_context_t *p_enc_ctx, void *side_data, int data_size, int type)
Add a new auxiliary data to a frame.
Definition: ni_quadra_enc_api.c:1497
_ni_quadra_session_run_state
_ni_quadra_session_run_state
Session running state type.
Definition: ni_quadra_dec_api.h:53
QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_OPENING
@ QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_OPENING
Definition: ni_quadra_enc_api.h:70
_ni_quadra_enc_context::ishwframe
int ishwframe
Definition: ni_quadra_enc_api.h:115
_ni_quadra_enc_context::timebase_den
int timebase_den
Definition: ni_quadra_enc_api.h:99
_ni_quadra_enc_context::reinit
int reinit
Definition: ni_quadra_enc_api.h:176
_ni_quadra_enc_context::nb_planes
int nb_planes
Definition: ni_quadra_enc_api.h:186
ni_quadra_enc_device_session_flush
LIB_API int ni_quadra_enc_device_session_flush(ni_quadra_enc_context_t *p_enc_ctx)
Flush encode session context.
Definition: ni_quadra_enc_api.c:2045
_ni_quadra_enc_context
Definition: ni_quadra_enc_api.h:74
_ni_quadra_enc_context::recycle_index
int recycle_index
Definition: ni_quadra_enc_api.h:179
ni_quadra_enc_gop_params_set
LIB_API void ni_quadra_enc_gop_params_set(ni_quadra_enc_context_t *p_enc_ctx, char *key)
Set gop_params.
Definition: ni_quadra_enc_api.c:36
_ni_quadra_enc_context::sentFrame
int sentFrame
Definition: ni_quadra_enc_api.h:159
_ni_quadra_enc_context::gotPacket
int gotPacket
Definition: ni_quadra_enc_api.h:157
_ni_quadra_enc_context::spsPpsAttach
int spsPpsAttach
Definition: ni_quadra_enc_api.h:144
_ni_quadra_enc_context::dev_enc_idx
int dev_enc_idx
Definition: ni_quadra_enc_api.h:79
_ni_quadra_enc_context::ff_log_level
int ff_log_level
Definition: ni_quadra_enc_api.h:106
_ni_quadra_enc_context::gop_offset_count
int gop_offset_count
Definition: ni_quadra_enc_api.h:148
_ni_quadra_enc_context::user_color_primaries
int user_color_primaries
Definition: ni_quadra_enc_api.h:125
ni_quadra_enc_get_extra_data
LIB_API int ni_quadra_enc_get_extra_data(ni_quadra_enc_context_t *p_enc_ctx, uint8_t *p_dst)
Copy niframe to make avframe.
Definition: ni_quadra_enc_api.c:2427
_ni_quadra_enc_context::pix_fmt
int pix_fmt
Definition: ni_quadra_enc_api.h:109
_ni_quadra_enc_context::HDR10CLLEnable
int HDR10CLLEnable
Definition: ni_quadra_enc_api.h:173
ni_quadra_enc_prep_aux_data
LIB_API int ni_quadra_enc_prep_aux_data(ni_quadra_enc_context_t *p_enc_ctx, void *side_data, int data_size)
Prepare auxiliary data that should be sent together with this frame to encoder based on the auxiliary...
Definition: ni_quadra_enc_api.c:1551
_ni_quadra_enc_context::auto_dl_handle
int auto_dl_handle
Definition: ni_quadra_enc_api.h:114
_ni_quadra_enc_context::timebase_num
int timebase_num
Definition: ni_quadra_enc_api.h:98
_ni_quadra_enc_context::use_long_term_ref
int use_long_term_ref
Definition: ni_quadra_enc_api.h:172
_ni_quadra_enc_context::xcoder_opts
char * xcoder_opts
Definition: ni_quadra_enc_api.h:137
_ni_quadra_enc_context::color_range
int color_range
Definition: ni_quadra_enc_api.h:123
ni_quadra_encode_session_open
LIB_API int ni_quadra_encode_session_open(ni_quadra_enc_context_t *p_enc_ctx, int frame_width, int frame_height, const int *frame_linesize, niquadraFrameSurface1_t *p_surface, bool hw_frames_ctx, int frame_queqe, int avctx_flags)
Set encode session open and set niframe default info.
Definition: ni_quadra_enc_api.c:993
_ni_quadra_enc_context::need_to_recycle
bool need_to_recycle
Definition: ni_quadra_enc_api.h:180
_ni_quadra_enc_context::latest_dts
int64_t latest_dts
Definition: ni_quadra_enc_api.h:153
ni_quadra_enc_init
LIB_API int ni_quadra_enc_init(ni_quadra_enc_context_t *p_enc_ctx)
Initialize malloc device session_context and malloc params including ni_quadra_enc_context_t,...
Definition: ni_quadra_enc_api.c:672
_ni_quadra_enc_context::user_color_space
int user_color_space
Definition: ni_quadra_enc_api.h:127
_ni_quadra_enc_context::end_of_stream
int end_of_stream
Definition: ni_quadra_enc_api.h:178
_ni_quadra_enc_context::xcoder_gop
char * xcoder_gop
Definition: ni_quadra_enc_api.h:139
_ni_quadra_enc_context::extradata_size
int extradata_size
Definition: ni_quadra_enc_api.h:96
_ni_quadra_enc_context::xcode_load_pixel
uint64_t xcode_load_pixel
Definition: ni_quadra_enc_api.h:82
_ni_quadra_enc_context::use_cur_src_as_long_term_pic
int use_cur_src_as_long_term_pic
Definition: ni_quadra_enc_api.h:171
_ni_quadra_enc_context::blk_xcoder_name
char * blk_xcoder_name
Definition: ni_quadra_enc_api.h:78
ni_quadra_enc_send_frame
LIB_API int ni_quadra_enc_send_frame(ni_quadra_enc_context_t *p_enc_ctx)
Send niframe to do encoder.
Definition: ni_quadra_enc_api.c:2013
_ni_quadra_enc_context::p_spsPpsHdr
uint8_t * p_spsPpsHdr
Definition: ni_quadra_enc_api.h:142
_ni_quadra_enc_context::vpu_reset
int vpu_reset
Definition: ni_quadra_enc_api.h:162
_ni_quadra_enc_context::user_sar_num
int user_sar_num
Definition: ni_quadra_enc_api.h:133
_ni_quadra_enc_context::codec_format
int codec_format
Definition: ni_quadra_enc_api.h:107
ni_quadra_encoder_xcoder_gop_params_set_value
LIB_API int ni_quadra_encoder_xcoder_gop_params_set_value(ni_quadra_enc_context_t *p_enc_ctx, const char *name, const char *value)
Set value referenced by name in encode parameters structure.
Definition: ni_quadra_enc_api.c:94
_ni_quadra_enc_context::color_space
int color_space
Definition: ni_quadra_enc_api.h:122
_ni_quadra_enc_context::framerate_num
int framerate_num
Definition: ni_quadra_enc_api.h:100
_ni_quadra_enc_context::total_frames_received
uint64_t total_frames_received
Definition: ni_quadra_enc_api.h:151
ni_quadra_encode_after_reinit
LIB_API int ni_quadra_encode_after_reinit(ni_quadra_enc_context_t *p_enc_ctx)
Reinit after need to sync context.
Definition: ni_quadra_enc_api.c:2147
_ni_quadra_enc_context::width
int width
Definition: ni_quadra_enc_api.h:104
_ni_quadra_enc_context::framerate_den
int framerate_den
Definition: ni_quadra_enc_api.h:101
_ni_quadra_enc_context::spsPpsHdrLen
int spsPpsHdrLen
Definition: ni_quadra_enc_api.h:143
_ni_quadra_enc_context::codec_id
int codec_id
Definition: ni_quadra_enc_api.h:108
_ni_quadra_enc_context::nvme_io_size
int nvme_io_size
Definition: ni_quadra_enc_api.h:161
_ni_quadra_enc_context::orig_dev_enc_idx
int orig_dev_enc_idx
Definition: ni_quadra_enc_api.h:155
ni_quadra_setup_encoder
LIB_API int ni_quadra_setup_encoder(ni_quadra_enc_context_t *p_enc_ctx)
Initialize init device session_context and init default params including ni_quadra_enc_context_t,...
Definition: ni_quadra_enc_api.c:395
_ni_quadra_enc_context::height
int height
Definition: ni_quadra_enc_api.h:105
_ni_quadra_enc_context::started
int started
Definition: ni_quadra_enc_api.h:141
_ni_quadra_enc_context::copy_len
uint32_t copy_len
Definition: ni_quadra_enc_api.h:184
_ni_quadra_enc_context::user_color_range
int user_color_range
Definition: ni_quadra_enc_api.h:128
_ni_quadra_enc_context::eos_fme_received
int eos_fme_received
Definition: ni_quadra_enc_api.h:87
_ni_quadra_enc_context::ticks_per_frame
int ticks_per_frame
Definition: ni_quadra_enc_api.h:102
_ni_quadra_enc_context::input_frame
void * input_frame
Definition: ni_quadra_enc_api.h:93
QUADRA_SESSION_RUN_STATE_NORMAL
@ QUADRA_SESSION_RUN_STATE_NORMAL
Definition: ni_quadra_enc_api.h:68
_ni_quadra_enc_context::tmp_device_handle
int32_t tmp_device_handle
Definition: ni_quadra_enc_api.h:84
_ni_quadra_enc_context::sar_num
int sar_num
Definition: ni_quadra_enc_api.h:131
_ni_quadra_enc_context::total_custom_sei_size
int total_custom_sei_size
Definition: ni_quadra_enc_api.h:182
ni_quadra_packet_buffer_alloc
LIB_API int ni_quadra_packet_buffer_alloc(ni_quadra_enc_context_t *p_enc_ctx)
Allocate memory for the packet buffer based on provided packet size.
Definition: ni_quadra_enc_api.c:2576
ni_quadra_encoder_xcoder_opts_params_set_value
LIB_API int ni_quadra_encoder_xcoder_opts_params_set_value(ni_quadra_enc_context_t *p_enc_ctx, const char *name, const char *value)
Set value referenced by name in encode parameters structure.
Definition: ni_quadra_enc_api.c:48
_ni_quadra_enc_context::custom_sei_count
int custom_sei_count
Definition: ni_quadra_enc_api.h:183
_ni_quadra_enc_context::need_free_frame
int need_free_frame
Definition: ni_quadra_enc_api.h:185
_ni_quadra_enc_context::dev_xcoder_name
char * dev_xcoder_name
Definition: ni_quadra_enc_api.h:77
ni_quadra_enc_make_niframe
LIB_API int ni_quadra_enc_make_niframe(ni_quadra_enc_context_t *p_enc_ctx, uint8_t **data, uint8_t *nidata, int *linesize, int frame_width, int frame_height, NIFramesContext *nif_src_ctx)
Copy avframe to niframe.
Definition: ni_quadra_enc_api.c:1752
ni_quadra_retcode_t
ni_quadra_retcode_t
Definition: ni_quadra_filter_api.h:205
ni_quadra_filter_api.h
NETINT filters API header file.
ni_quadra_get_pkt_info
LIB_API void ni_quadra_get_pkt_info(void *session_ctx, void *data)
Get ni_pkt_info psnr info.
Definition: ni_quadra_enc_api.c:2597
_ni_quadra_enc_context::encoder_eof
int encoder_eof
Definition: ni_quadra_enc_api.h:164
_ni_quadra_enc_context::extradata
uint8_t * extradata
Definition: ni_quadra_enc_api.h:95
_ni_quadra_enc_context::color_trc
int color_trc
Definition: ni_quadra_enc_api.h:121
ni_quadra_enc_gop_params_check
LIB_API bool ni_quadra_enc_gop_params_check(ni_quadra_enc_context_t *p_enc_ctx)
Check gop_params.
Definition: ni_quadra_enc_api.c:42
ni_quadra_encoder_receive_packet
LIB_API int ni_quadra_encoder_receive_packet(ni_quadra_enc_context_t *p_enc_ctx)
Recive packet frome encode.
Definition: ni_quadra_enc_api.c:2162
_ni_quadra_enc_context::dev_blk_name
char * dev_blk_name
Definition: ni_quadra_enc_api.h:80
_niquadraFrameSurface1
Definition: ni_quadra_filter_api.h:385
_ni_quadra_enc_context::data_len
uint32_t data_len
Definition: ni_quadra_enc_api.h:117
_ni_quadra_enc_context::bget_psnr
bool bget_psnr
Definition: ni_quadra_enc_api.h:190
ni_quadra_encode_sequence_change
LIB_API int ni_quadra_encode_sequence_change(ni_quadra_enc_context_t *p_enc_ctx, int width, int height, int bit_depth_factor)
Set encode sequence change.
Definition: ni_quadra_enc_api.c:926
_ni_quadra_enc_context::reconfigCount
int reconfigCount
Definition: ni_quadra_enc_api.h:169
_ni_quadra_enc_context::HDR10Enable
int HDR10Enable
Definition: ni_quadra_enc_api.h:174
_ni_quadra_enc_context::enable_test_latency
bool enable_test_latency
Definition: ni_quadra_enc_api.h:189
_ni_quadra_enc_context::tmp_blk_dev_name
char tmp_blk_dev_name[32]
Definition: ni_quadra_enc_api.h:83
ni_quadra_encode_close
LIB_API int ni_quadra_encode_close(ni_quadra_enc_context_t *p_enc_ctx)
Close device session_context including ni_quadra_enc_context_t,.
Definition: ni_quadra_enc_api.c:856
QUADRA_SESSION_RUN_STATE_RESETTING
@ QUADRA_SESSION_RUN_STATE_RESETTING
Definition: ni_quadra_enc_api.h:71
_ni_quadra_enc_context::bit_depth
int bit_depth
Definition: ni_quadra_enc_api.h:177
_ni_quadra_enc_context::api_ctx
void * api_ctx
Definition: ni_quadra_enc_api.h:91
_ni_quadra_enc_context::api_pkt
void * api_pkt
Definition: ni_quadra_enc_api.h:89
_ni_quadra_enc_context::dts_offset
int64_t dts_offset
Definition: ni_quadra_enc_api.h:147
_ni_quadra_enc_context::start_of_stream
int start_of_stream
Definition: ni_quadra_enc_api.h:175
_ni_quadra_enc_context::generate_enc_hdrs
bool generate_enc_hdrs
Definition: ni_quadra_enc_api.h:191
NIFramesContext
Definition: ni_quadra_filter_api.h:400
_ni_quadra_enc_context::is_swframes
bool is_swframes
Definition: ni_quadra_enc_api.h:165
_ni_quadra_enc_context::tmp_hw_id
int tmp_hw_id
Definition: ni_quadra_enc_api.h:86
ni_quadra_encode_reinit
LIB_API int ni_quadra_encode_reinit(ni_quadra_enc_context_t *p_enc_ctx, int frame_width, int frame_height, const int *linesize)
Reinit encode context.
Definition: ni_quadra_enc_api.c:2050
_ni_quadra_enc_context::reconf_demo_mode
int reconf_demo_mode
Definition: ni_quadra_enc_api.h:170
_ni_quadra_enc_context::sw_pix_fmt
int sw_pix_fmt
Definition: ni_quadra_enc_api.h:110
_ni_quadra_enc_context::frame_pts
int64_t frame_pts
Definition: ni_quadra_enc_api.h:112
_ni_quadra_enc_context::keep_alive_timeout
int keep_alive_timeout
Definition: ni_quadra_enc_api.h:81
_ni_quadra_enc_context::color_primaries
int color_primaries
Definition: ni_quadra_enc_api.h:120
ni_quadra_session_run_state_t
enum _ni_quadra_session_run_state ni_quadra_session_run_state_t
Session running state type.
_ni_quadra_enc_context::color_change
int color_change
Definition: ni_quadra_enc_api.h:124
_ni_quadra_enc_context::api_fme
void * api_fme
Definition: ni_quadra_enc_api.h:90
_ni_quadra_enc_context::bit_rate
int64_t bit_rate
Definition: ni_quadra_enc_api.h:103
_ni_quadra_enc_context::enable_all_sei_passthru
int enable_all_sei_passthru
Definition: ni_quadra_enc_api.h:188
_ni_quadra_enc_context::aux_data
void * aux_data
Definition: ni_quadra_enc_api.h:168
_ni_quadra_enc_context::encoder_flushing
int encoder_flushing
Definition: ni_quadra_enc_api.h:163
ni_quadra_set_session_wh
LIB_API void ni_quadra_set_session_wh(void *session_ctx, int width, int height)
Set width and height to session context.
Definition: ni_quadra_enc_api.c:2569
_ni_quadra_enc_context::api_param
void * api_param
Definition: ni_quadra_enc_api.h:92
_ni_quadra_enc_context::dev_xcoder
char * dev_xcoder
Definition: ni_quadra_enc_api.h:76
_ni_quadra_enc_context::firstPktArrived
int firstPktArrived
Definition: ni_quadra_enc_api.h:146
_ni_quadra_enc_context::pict_type
int pict_type
Definition: ni_quadra_enc_api.h:111
_ni_quadra_enc_context::user_color_trc
int user_color_trc
Definition: ni_quadra_enc_api.h:126
_ni_quadra_enc_context::sar_den
int sar_den
Definition: ni_quadra_enc_api.h:132
ni_quadra_encode_send_prepare
LIB_API int ni_quadra_encode_send_prepare(ni_quadra_enc_context_t *p_enc_ctx, niquadraFrameSurface1_t *p_surface, int frame_width, int frame_height)
Prepare a niframe which to send to encoder.
Definition: ni_quadra_enc_api.c:1210
LIB_API
#define LIB_API
Definition: ni_libxcoder_dynamic_loading.h:52
QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_DRAINING
@ QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_DRAINING
Definition: ni_quadra_enc_api.h:69
_ni_quadra_enc_context::local_pts
int64_t local_pts
Definition: ni_quadra_enc_api.h:116
ni_quadra_encoder_prepare_avpkt
LIB_API int ni_quadra_encoder_prepare_avpkt(ni_quadra_enc_context_t *p_enc_ctx, int is_pkt, int64_t *pkt_pts, int64_t *pkt_dts, int *pkt_flag)
Make avpkt from encode.
Definition: ni_quadra_enc_api.c:2477
_ni_quadra_enc_context::retstatus
ni_quadra_retcode_t retstatus
Definition: ni_quadra_enc_api.h:181
_ni_quadra_enc_context::first_frame_pts
int64_t first_frame_pts
Definition: ni_quadra_enc_api.h:152
_ni_quadra_enc_context::user_sar_den
int user_sar_den
Definition: ni_quadra_enc_api.h:134
_ni_quadra_enc_context::is_fifo_empty
int is_fifo_empty
Definition: ni_quadra_enc_api.h:167
_ni_quadra_enc_context::g_enc_change_params
void * g_enc_change_params
Definition: ni_quadra_enc_api.h:166
_ni_quadra_enc_context::spsPpsArrived
int spsPpsArrived
Definition: ni_quadra_enc_api.h:145
ni_quadra_get_pkt_info_size
LIB_API int ni_quadra_get_pkt_info_size(void)
Get struct ni_pkt_info size.
Definition: ni_quadra_enc_api.c:2592
_ni_quadra_enc_context::pkt_dts
int64_t pkt_dts
Definition: ni_quadra_enc_api.h:113
_ni_quadra_enc_context::tmp_blk_io_handle
int32_t tmp_blk_io_handle
Definition: ni_quadra_enc_api.h:85