libxcoder  5.2.0
ni_quadra_dec_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_dec_api.h
24 *
25 * \brief NETINT decoder API header file
26 *
27 *******************************************************************************/
28 #pragma once
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 #include <errno.h>
33 #include <stddef.h>
34 #include <unistd.h>
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_bitstream.h"
41 #include "ni_quadra_filter_api.h"
42 
43 #define NI_NAL_VPS_BIT (0x01)
44 #define NI_NAL_SPS_BIT (0x01 << 1)
45 #define NI_NAL_PPS_BIT (0x01 << 2)
46 #define NI_GENERATE_ALL_NAL_HEADER_BIT (0x01 << 3)
47 #define NI_PKT_FLAG_KEY 0x0001
48 #define NI_PKT_FLAG_CORRUPT 0x0002
49 
50 /*!*
51 * \brief Session running state type.
52 */
54 {
60 
61 typedef struct _ni_quadra_frame
62 {
63  // codec of the source from which this frame is decoded
64  int src_codec;
65 
66  long long dts;
67  long long pts;
68  uint32_t end_of_stream;
69  uint32_t start_of_stream;
70  uint32_t video_width;
71  uint32_t video_height;
72 
73  uint32_t crop_top;
74  uint32_t crop_bottom;
75  uint32_t crop_left;
76  uint32_t crop_right;
77 
78  // for decoding: frame picture type returned from decode
80 
81  // SEI info of closed caption: returned by decoder or set by encoder
82  unsigned int sei_cc_offset;
83  unsigned int sei_cc_len;
84 
85  // SEI info of User Data Unregistered SEI: returned by decoder
92 
95 
96  uint8_t *p_buffer;
97 
98  void *dec_buf; // buffer pool entry (has memory pointed to by p_buffer)
99 
101 
103 
104  // frame auxiliary data
107  uint32_t vui_time_scale;
108  uint64_t pkt_pos;
110  uint8_t color_trc;
111  uint8_t color_space;
113  unsigned int vui_len;
114  long long orignal_pts;
115  uint32_t error_ratio;
117 
119 {
126  1]; /*cut-out of expression to be parsed*/
130  1]; /*cut-out of expression to be parsed*/
132 
133 typedef struct _ni_quadra_ppu_config
134 {
139 
141 {
142  /* from the command line, which resource allocation method we use */
143  char *dev_xcoder;
144  char *dev_xcoder_name; /* dev name of the xcoder card to use */
145  char *blk_xcoder_name; /* blk name of the xcoder card to use */
146  int dev_dec_idx; /* user-specified decoder index */
147  char *dev_blk_name; /* user-specified decoder block device name */
150  int keep_alive_timeout; /* keep alive timeout setting */
151 
153  int dec_wait; // in us
154 
155  // stream header copied/saved from AVCodecContext.extradata
157  uint8_t *extradata;
159 
160  int64_t current_pts;
161  /* offset of the cur. pkt relative to the start of the bit stream. used to */
162  /* track the returned decoded frame and retrieve its saved pts */
163  unsigned long long offset;
165 
166  int started;
167  int draining;
168  int flushing;
169  int eos;
173  int64_t pkt_duration;
175  /* below are all command line options */
176  char *xcoder_opts;
178  int enable_check_packet; // check source packet. Skip SEI payloads after VCL
185 
186  /* below are sync up from ffmpeg */
187  int set_high_priority; /* set_high_priority */
188  int ff_log_level; /* ffmpeg log level */
189 
190  int fps_num;
192  long bit_rate;
193  int width;
194  int height;
198  int hwframes;
201 
202  //Current video width. this is used to do sequence change
204  //Current video height ,this is used to do sequence change
206  uint32_t ready_to_close;
207 
208  void *api_ctx;
209  void *api_param;
223 
224 /*!*****************************************************************************
225  * \brief Initialize decode parameters and open decoder device
226  * including ni_quadra_dec_context_t,
227  * ni_session_context_t,
228  * ni_xcoder_params_t
229  *
230  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
231  *
232  * \return On success
233  * NI_LOGAN_RETCODE_SUCCESS
234  * On failure
235  * NI_LOGAN_RETCODE_FAILURE
236  * NI_LOGAN_RETCODE_INVALID_PARAM,
237  * NI_LOGAN_RETCODE_ERROR_MEM_ALOC, etc
238  ******************************************************************************/
240 
241 /*!*****************************************************************************
242  * \brief Initialize init device session_context and init default params
243  * including ni_quadra_dec_context_t,
244  * ni_session_context_t,
245  * ni_decoder_params_t
246  *
247  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
248  *
249  * \return On success
250  * NI_LOGAN_RETCODE_SUCCESS
251  * On failure
252  * NI_LOGAN_RETCODE_FAILURE
253  * NI_LOGAN_RETCODE_INVALID_PARAM,
254  * NI_LOGAN_RETCODE_ERROR_MEM_ALOC, etc
255  ******************************************************************************/
257 
258 /*!*****************************************************************************
259  * \brief Parse the packet and send the packet to decode device
260  *
261  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
262  *
263  * \param[in/out] flag flag=0 or 1 to do something.
264  * \param[in] pkt_data Pointer to input packet data
265  * \param[in] pkt_size packet size
266  * \param[in] pkt_flags packet flags
267  * \param[in] pkt_pts packet pts
268  * \param[in] pkt_dts packet dts
269  * \param[in] avctx_width avctx width
270  * \param[in] avctx_height avctx height
271  * \param[in] extradata Pointer to uint8_t
272  * \param[in] extradata_size extradata size
273  * \return On success
274  * NI_LOGAN_RETCODE_SUCCESS
275  * On failure
276  * NI_LOGAN_RETCODE_FAILURE
277  * NI_LOGAN_RETCODE_INVALID_PARAM,
278  * NI_LOGAN_RETCODE_ERROR_MEM_ALOC, etc
279  ******************************************************************************/
281  int pkt_flags, uint8_t *data, int pkt_size,
282  uint8_t *lonedata, int lone_size,
283  int64_t pkt_pts, int64_t pkt_dts, int pkt_pos,
284  int width, int height, uint8_t *extradata,
285  int extradata_size);
286 
287 /*!*****************************************************************************
288  * \brief Decode is flushing or not, including ni_quadra_dec_context_t,
289  *
290  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
291  *
292  * \return On 1
293  * HW dosn't do decode flushing
294  * On 0
295  * HW is doing decode flushing
296  ******************************************************************************/
298 
299 /*!*****************************************************************************
300  * \brief Receive decoded data from decoder, including ni_quadra_dec_context_t,
301  *
302  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
303  * \param[in/out] p_session_data Pointer to ni_session_data_io_t
304  * \param[in] avctx_width avctx width
305  * \param[in] avctx_height avctx height
306  * \return On success
307  * NI_LOGAN_RETCODE_SUCCESS
308  * On failure
309  * NI_LOGAN_RETCODE_FAILURE
310  ******************************************************************************/
312  int avctx_width, int avctx_height,
313  int frame_planar);
314 
315 /*!*****************************************************************************
316  * \brief Decode close, including ni_quadra_dec_context_t,
317  *
318  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
319  *
320  ******************************************************************************/
322 
323 /*!*****************************************************************************
324  * \brief buffer free, including void*
325  *
326  * \param[in] opaque parameter to be got for processing or passed to free
327  * \param[in] data data array
328  *
329  ******************************************************************************/
330 LIB_API void ni_quadra_align_free(void *opaque, uint8_t *data);
331 
332 /*!*****************************************************************************
333  * \brief frame free, including void*
334  *
335  * \param[in] opaque parameter to be got for processing or passed to free
336  * \param[in] data data array
337  *
338  ******************************************************************************/
339 LIB_API void ni_quadra_frame_free(void *opaque, uint8_t *data);
340 
341 /*!*****************************************************************************
342  * \brief Free and remove all auxiliary data from the ni_dec_ctx frame.
343  *
344  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
345  *
346  * \return None
347  ******************************************************************************/
349 
350 /*!*****************************************************************************
351  * \brief get size from the frame auxiliary data of a given type if exists
352  *
353  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
354  * \param[in] type type of the auxiliary data to be retrieved
355  *
356  * \return aux data size
357  ******************************************************************************/
359  int type);
360 
361 /*!*****************************************************************************
362  * \brief Retrieve from the frame auxiliary data of a given type if exists
363  *
364  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
365  * \param[in/out] dst_data copy the auxiliary data
366  * \param[in] type type of the auxiliary data
367  * \param[in] size size of the auxiliary data
368  *
369  * \return a pointer to the aux data of a given type on success, NULL otherwise
370  ******************************************************************************/
372  uint8_t *dst_data, int type,
373  int size);
374 
375 /*!*****************************************************************************
376  * \brief Set value referenced by name in decoder parameters structure
377  *
378  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
379  * \param[in] name String represented parameter name to search
380  * \param[in] value Parameter value to set
381  *
382  * \return On success
383  * NI_RETCODE_SUCCESS
384  * On failure
385  * NI_RETCODE_FAILURE
386  * NI_QUADRA_PARAM_WARNING_DEPRECATED
387  *******************************************************************************/
389  const char *name, char *value);
390 
391 /*!*****************************************************************************
392  * \brief sync ni_decoder_input_params_t and ni_xcoder_params_t
393  *
394  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
395  * \param[in] type 0:sync ni_dec_input_params_t to ni_decoder_input_params_t
396  * 1:sync ni_decoder_input_params_t to ni_xcoder_params_t
397  * 2:copy semi_planar force_8_bit to ni_dec_input_params_t
398  *
399  * \return On success
400  * NI_RETCODE_SUCCESS
401  * On failure
402  * NI_RETCODE_FAILURE
403  * NI_QUADRA_PARAM_WARNING_DEPRECATED
404  *******************************************************************************/
405 LIB_API int
407 
408 /*!*****************************************************************************
409  * \brief alloc session p_data
410  *
411  * \param[in/out] ni_dec_ctx Pointer to ni_quadra_dec_context_t
412  * \param[in] p_session_data Pointer to void*
413  *
414  * \return uint8_t *p_data
415  *
416  ******************************************************************************/
417 LIB_API uint8_t *
419  void *p_session_data);
420 #ifdef __cplusplus
421 }
422 #endif
ni_quadra_dec_close
LIB_API void ni_quadra_dec_close(ni_quadra_dec_context_t *ni_dec_ctx)
Decode close, including ni_quadra_dec_context_t,.
Definition: ni_quadra_dec_api.c:87
ni_quadra_dec_wipe_aux_data
LIB_API void ni_quadra_dec_wipe_aux_data(ni_quadra_dec_context_t *ni_dec_ctx)
Free and remove all auxiliary data from the ni_dec_ctx frame.
Definition: ni_quadra_dec_api.c:1033
_ni_quadra_dec_context_t::offset
unsigned long long offset
Definition: ni_quadra_dec_api.h:163
_ni_quadra_frame::crop_top
uint32_t crop_top
Definition: ni_quadra_dec_api.h:73
ni_quadra_dec_is_flushing
LIB_API int ni_quadra_dec_is_flushing(ni_quadra_dec_context_t *ni_dec_ctx)
Decode is flushing or not, including ni_quadra_dec_context_t,.
Definition: ni_quadra_dec_api.c:1405
_ni_quadra_dec_context_t::extradata
uint8_t * extradata
Definition: ni_quadra_dec_api.h:157
_ni_quadra_session_run_state
_ni_quadra_session_run_state
Session running state type.
Definition: ni_quadra_dec_api.h:53
_ni_quadra_dec_context_t::is_lone_sei_pkt
int is_lone_sei_pkt
Definition: ni_quadra_dec_api.h:171
_ni_quadra_dec_context_t::input_data_fifo
ni_fifo_buffer_t * input_data_fifo
Definition: ni_quadra_dec_api.h:215
_ni_quadra_frame::sei_hdr_mastering_display_color_vol_len
unsigned int sei_hdr_mastering_display_color_vol_len
Definition: ni_quadra_dec_api.h:89
_ni_quadra_dec_context_t::niframe
ni_quadra_frame_t niframe
Definition: ni_quadra_dec_api.h:213
_ni_quadra_dec_context_t::enable_check_packet
int enable_check_packet
Definition: ni_quadra_dec_api.h:178
_ni_quadra_dec_context_t::num_reorder_pics
int num_reorder_pics
Definition: ni_quadra_dec_api.h:200
_ni_quadra_frame::end_of_stream
uint32_t end_of_stream
Definition: ni_quadra_dec_api.h:68
_ni_quadra_dec_context_t::extradata_size
int extradata_size
Definition: ni_quadra_dec_api.h:158
ni_quadra_align_free
LIB_API void ni_quadra_align_free(void *opaque, uint8_t *data)
buffer free, including void*
Definition: ni_quadra_dec_api.c:51
_ni_quadra_dec_context_t::width
int width
Definition: ni_quadra_dec_api.h:193
_ni_quadra_dec_context_t::ui32FramesCorrupted
u_int32_t ui32FramesCorrupted
Definition: ni_quadra_dec_api.h:219
_ni_quadra_dec_context_t::current_pts
int64_t current_pts
Definition: ni_quadra_dec_api.h:160
_ni_quadra_dec_context_t::set_high_priority
int set_high_priority
Definition: ni_quadra_dec_api.h:187
_ni_quadra_dec_context_t::force_low_delay
int force_low_delay
Definition: ni_quadra_dec_api.h:181
_ni_quadra_dec_context_t::pkt_pts_unchange
int pkt_pts_unchange
Definition: ni_quadra_dec_api.h:217
_ni_dec_input_params_t::crop_mode
int crop_mode[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS]
Definition: ni_quadra_dec_api.h:122
_ni_quadra_frame::aux_data
void * aux_data[NI_QUADRA_MAX_NUM_AUX_DATA_PER_FRAME]
Definition: ni_quadra_dec_api.h:105
QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_DRAINING
@ QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_DRAINING
Definition: ni_quadra_dec_api.h:56
_ni_quadra_dec_context_t::bit_rate
long bit_rate
Definition: ni_quadra_dec_api.h:192
_ni_dec_input_params_t::force_8_bit
int force_8_bit[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS]
Definition: ni_quadra_dec_api.h:120
_ni_quadra_dec_context_t::ppu_reconfig
bool ppu_reconfig
Definition: ni_quadra_dec_api.h:220
_ni_quadra_frame::pts
long long pts
Definition: ni_quadra_dec_api.h:67
_ni_quadra_frame::dts
long long dts
Definition: ni_quadra_dec_api.h:66
_ni_quadra_dec_context_t::eos
int eos
Definition: ni_quadra_dec_api.h:169
_ni_quadra_dec_context_t::ff_log_level
int ff_log_level
Definition: ni_quadra_dec_api.h:188
QUADRA_SESSION_RUN_STATE_NORMAL
@ QUADRA_SESSION_RUN_STATE_NORMAL
Definition: ni_quadra_dec_api.h:55
NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS
#define NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS
Definition: ni_quadra_filter_api.h:92
_ni_quadra_frame::vui_time_scale
uint32_t vui_time_scale
Definition: ni_quadra_dec_api.h:107
ni_quadra_dec_params_set_value
LIB_API int ni_quadra_dec_params_set_value(ni_quadra_dec_context_t *ni_dec_ctx, const char *name, char *value)
Set value referenced by name in decoder parameters structure.
Definition: ni_quadra_dec_api.c:1419
_ni_dec_input_params_t::crop_whxy
int crop_whxy[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS][4]
Definition: ni_quadra_dec_api.h:123
_ni_quadra_frame::sei_user_data_unreg_len
unsigned int sei_user_data_unreg_len
Definition: ni_quadra_dec_api.h:87
ni_quadra_frame_get_aux_size
LIB_API int ni_quadra_frame_get_aux_size(ni_quadra_dec_context_t *ni_dec_ctx, int type)
get size from the frame auxiliary data of a given type if exists
Definition: ni_quadra_dec_api.c:1040
ni_quadra_frame_free
LIB_API void ni_quadra_frame_free(void *opaque, uint8_t *data)
frame free, including void*
Definition: ni_quadra_dec_api.c:61
_ni_quadra_dec_context_t::started
int started
Definition: ni_quadra_dec_api.h:166
NI_QUADRA_MAX_PPU_PARAM_EXPR_CHAR
#define NI_QUADRA_MAX_PPU_PARAM_EXPR_CHAR
Definition: ni_quadra_filter_api.h:95
_ni_quadra_dec_context_t::suspended
int suspended
Definition: ni_quadra_dec_api.h:216
_ni_quadra_dec_context_t::low_delay
int low_delay
Definition: ni_quadra_dec_api.h:180
ni_quadra_setup_decoder
LIB_API int ni_quadra_setup_decoder(ni_quadra_dec_context_t *ni_dec_ctx)
Initialize init device session_context and init default params including ni_quadra_dec_context_t,...
Definition: ni_quadra_dec_api.c:185
_ni_quadra_dec_context_t::active_video_width
uint32_t active_video_width
Definition: ni_quadra_dec_api.h:203
_ni_quadra_frame::p_custom_sei_set
void * p_custom_sei_set
Definition: ni_quadra_dec_api.h:102
_ni_quadra_frame::video_height
uint32_t video_height
Definition: ni_quadra_dec_api.h:71
_ni_quadra_ppu_config
Definition: ni_quadra_dec_api.h:133
_ni_quadra_dec_context_t::custom_sei_type
int custom_sei_type
Definition: ni_quadra_dec_api.h:179
_ni_quadra_dec_context_t::fps_denom
int fps_denom
Definition: ni_quadra_dec_api.h:191
ni_quadra_ppu_config_t
struct _ni_quadra_ppu_config ni_quadra_ppu_config_t
_ni_quadra_dec_context_t::enable_follow_iframe
int enable_follow_iframe
Definition: ni_quadra_dec_api.h:218
_ni_quadra_frame::sei_cc_offset
unsigned int sei_cc_offset
Definition: ni_quadra_dec_api.h:82
_ni_quadra_frame::crop_left
uint32_t crop_left
Definition: ni_quadra_dec_api.h:75
_ni_quadra_dec_context_t::p_session_data
void * p_session_data
Definition: ni_quadra_dec_api.h:210
_ni_quadra_dec_context_t::blk_io_handle
int blk_io_handle
Definition: ni_quadra_dec_api.h:148
_ni_quadra_frame::vui_num_units_in_tick
uint32_t vui_num_units_in_tick
Definition: ni_quadra_dec_api.h:106
ni_quadra_dec_send
LIB_API int ni_quadra_dec_send(ni_quadra_dec_context_t *ni_dec_ctx, int pkt_flags, uint8_t *data, int pkt_size, uint8_t *lonedata, int lone_size, int64_t pkt_pts, int64_t pkt_dts, int pkt_pos, int width, int height, uint8_t *extradata, int extradata_size)
Parse the packet and send the packet to decode device.
Definition: ni_quadra_dec_api.c:662
_ni_quadra_dec_context_t::dev_blk_name
char * dev_blk_name
Definition: ni_quadra_dec_api.h:147
_ni_quadra_frame::sei_hdr_mastering_display_color_vol_offset
unsigned int sei_hdr_mastering_display_color_vol_offset
Definition: ni_quadra_dec_api.h:88
_ni_quadra_frame::error_ratio
uint32_t error_ratio
Definition: ni_quadra_dec_api.h:115
_ni_quadra_frame::color_trc
uint8_t color_trc
Definition: ni_quadra_dec_api.h:110
_ni_quadra_frame::pixel_format
int pixel_format
Definition: ni_quadra_dec_api.h:100
_ni_quadra_dec_context_t::dev_xcoder
char * dev_xcoder
Definition: ni_quadra_dec_api.h:143
_ni_quadra_frame::p_data
uint8_t * p_data[NI_QUADRA_MAX_NUM_DATA_POINTERS]
Definition: ni_quadra_dec_api.h:93
_ni_quadra_dec_context_t::pkt_duration
int64_t pkt_duration
Definition: ni_quadra_dec_api.h:173
ni_quadra_dec_init
LIB_API int ni_quadra_dec_init(ni_quadra_dec_context_t *ni_dec_ctx)
Initialize decode parameters and open decoder device including ni_quadra_dec_context_t,...
Definition: ni_quadra_dec_api.c:350
QUADRA_SESSION_RUN_STATE_RESETTING
@ QUADRA_SESSION_RUN_STATE_RESETTING
Definition: ni_quadra_dec_api.h:58
_ni_quadra_dec_context_t::active_video_height
uint32_t active_video_height
Definition: ni_quadra_dec_api.h:205
ni_dec_input_params_t
struct _ni_dec_input_params_t ni_dec_input_params_t
_ni_quadra_dec_context_t::enable_low_delay_check
int enable_low_delay_check
Definition: ni_quadra_dec_api.h:182
ni_quadra_filter_api.h
NETINT filters API header file.
_ni_quadra_dec_context_t::has_b_frames
int has_b_frames
Definition: ni_quadra_dec_api.h:197
_ni_quadra_frame::orignal_pts
long long orignal_pts
Definition: ni_quadra_dec_api.h:114
ni_quadra_symbolic_decoder_param
LIB_API int ni_quadra_symbolic_decoder_param(ni_quadra_dec_context_t *ni_dec_ctx, int type)
sync ni_decoder_input_params_t and ni_xcoder_params_t
Definition: ni_quadra_dec_api.c:1461
_ni_quadra_dec_context_t::xcoder_opts
char * xcoder_opts
Definition: ni_quadra_dec_api.h:176
_ni_quadra_dec_context_t::svct_skip_next_packet
int svct_skip_next_packet
Definition: ni_quadra_dec_api.h:164
_ni_quadra_dec_context_t::bSequenceChange
int bSequenceChange
Definition: ni_quadra_dec_api.h:172
_ni_quadra_frame::sei_cc_len
unsigned int sei_cc_len
Definition: ni_quadra_dec_api.h:83
_ni_fifo_buffer_t
Definition: ni_quadra_filter_api.h:149
_ni_quadra_dec_context_t::dev_dec_idx
int dev_dec_idx
Definition: ni_quadra_dec_api.h:146
_ni_quadra_dec_context_t::draining
int draining
Definition: ni_quadra_dec_api.h:167
_ni_dec_input_params_t::scale_wh
int scale_wh[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS][2]
Definition: ni_quadra_dec_api.h:127
_ni_quadra_frame::start_of_stream
uint32_t start_of_stream
Definition: ni_quadra_dec_api.h:69
_ni_quadra_dec_context_t::p_session_data2
void * p_session_data2
Definition: ni_quadra_dec_api.h:212
_ni_quadra_dec_context_t::flushing
int flushing
Definition: ni_quadra_dec_api.h:168
ni_quadra_dec_receive
LIB_API int ni_quadra_dec_receive(ni_quadra_dec_context_t *ni_dec_ctx, int avctx_width, int avctx_height, int frame_planar)
Receive decoded data from decoder, including ni_quadra_dec_context_t,.
Definition: ni_quadra_dec_api.c:1117
_ni_quadra_dec_context_t::api_ctx
void * api_ctx
Definition: ni_quadra_dec_api.h:208
_ni_quadra_frame::pkt_pos
uint64_t pkt_pos
Definition: ni_quadra_dec_api.h:108
NI_QUADRA_MAX_NUM_DATA_POINTERS
#define NI_QUADRA_MAX_NUM_DATA_POINTERS
Definition: ni_quadra_filter_api.h:86
_ni_quadra_dec_context_t::eos_pkt_received
int eos_pkt_received
Definition: ni_quadra_dec_api.h:152
_ni_quadra_frame::crop_right
uint32_t crop_right
Definition: ni_quadra_dec_api.h:76
_ni_quadra_frame::sei_hdr_content_light_level_info_len
unsigned int sei_hdr_content_light_level_info_len
Definition: ni_quadra_dec_api.h:91
_ni_quadra_frame
Definition: ni_quadra_dec_api.h:61
_ni_quadra_dec_context_t::fps_num
int fps_num
Definition: ni_quadra_dec_api.h:190
_ni_quadra_frame::video_width
uint32_t video_width
Definition: ni_quadra_dec_api.h:70
ni_quadra_frame_t
struct _ni_quadra_frame ni_quadra_frame_t
_ni_quadra_dec_context_t::got_first_key_frame
int got_first_key_frame
Definition: ni_quadra_dec_api.h:156
_ni_quadra_dec_context_t::p_session_data1
void * p_session_data1
Definition: ni_quadra_dec_api.h:211
_ni_quadra_dec_context_t::height
int height
Definition: ni_quadra_dec_api.h:194
_ni_quadra_dec_context_t::num_extra_outputs
int num_extra_outputs
Definition: ni_quadra_dec_api.h:174
_ni_quadra_frame::dec_buf
void * dec_buf
Definition: ni_quadra_dec_api.h:98
_ni_quadra_dec_context_t::blk_xcoder_name
char * blk_xcoder_name
Definition: ni_quadra_dec_api.h:145
_ni_quadra_ppu_config::ppu_w
uint16_t ppu_w[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS]
Definition: ni_quadra_dec_api.h:136
_ni_quadra_frame::p_buffer
uint8_t * p_buffer
Definition: ni_quadra_dec_api.h:96
_ni_quadra_dec_context_t::ni_quadra_ppu_config
ni_quadra_ppu_config_t ni_quadra_ppu_config
Definition: ni_quadra_dec_api.h:221
_ni_quadra_ppu_config::ppu_h
uint16_t ppu_h[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS]
Definition: ni_quadra_dec_api.h:137
_ni_dec_input_params_t::semi_planar
int semi_planar[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS]
Definition: ni_quadra_dec_api.h:121
_ni_quadra_frame::video_full_range_flag
uint8_t video_full_range_flag
Definition: ni_quadra_dec_api.h:112
_ni_quadra_frame::src_codec
int src_codec
Definition: ni_quadra_dec_api.h:64
_ni_quadra_frame::color_primaries
uint8_t color_primaries
Definition: ni_quadra_dec_api.h:109
_ni_quadra_dec_context_t::keep_alive_timeout
int keep_alive_timeout
Definition: ni_quadra_dec_api.h:150
_ni_quadra_dec_context_t::bit_depth_factor
int bit_depth_factor
Definition: ni_quadra_dec_api.h:196
_ni_quadra_frame::ni_pict_type
int ni_pict_type
Definition: ni_quadra_dec_api.h:79
_ni_dec_input_params_t
Definition: ni_quadra_dec_api.h:118
_ni_quadra_frame::crop_bottom
uint32_t crop_bottom
Definition: ni_quadra_dec_api.h:74
_ni_quadra_dec_context_t::niparam
ni_dec_input_params_t niparam
Definition: ni_quadra_dec_api.h:214
_ni_quadra_dec_context_t::enable_user_data_sei_passthru
int enable_user_data_sei_passthru
Definition: ni_quadra_dec_api.h:177
_ni_quadra_dec_context_t::dev_xcoder_name
char * dev_xcoder_name
Definition: ni_quadra_dec_api.h:144
_ni_quadra_frame::color_space
uint8_t color_space
Definition: ni_quadra_dec_api.h:111
_ni_quadra_dec_context_t::pixel_format
int pixel_format
Definition: ni_quadra_dec_api.h:199
_ni_quadra_dec_context_t
Definition: ni_quadra_dec_api.h:140
_ni_quadra_frame::vui_len
unsigned int vui_len
Definition: ni_quadra_dec_api.h:113
_ni_dec_input_params_t::sc_expr
char sc_expr[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS][2][NI_QUADRA_MAX_PPU_PARAM_EXPR_CHAR+1]
Definition: ni_quadra_dec_api.h:130
_ni_quadra_dec_context_t::vpu_reset
int vpu_reset
Definition: ni_quadra_dec_api.h:170
_ni_quadra_ppu_config::out_enabled
uint16_t out_enabled[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS]
Definition: ni_quadra_dec_api.h:135
ni_quadra_session_run_state_t
enum _ni_quadra_session_run_state ni_quadra_session_run_state_t
Session running state type.
LIB_API
#define LIB_API
Definition: ni_libxcoder_dynamic_loading.h:52
_ni_quadra_dec_context_t::device_handle
int device_handle
Definition: ni_quadra_dec_api.h:149
NI_QUADRA_MAX_NUM_AUX_DATA_PER_FRAME
#define NI_QUADRA_MAX_NUM_AUX_DATA_PER_FRAME
Definition: ni_quadra_filter_api.h:89
_ni_dec_input_params_t::cr_expr
char cr_expr[NI_QUADRA_MAX_NUM_OF_DECODER_OUTPUTS][4][NI_QUADRA_MAX_PPU_PARAM_EXPR_CHAR+1]
Definition: ni_quadra_dec_api.h:126
_ni_quadra_dec_context_t::api_param
void * api_param
Definition: ni_quadra_dec_api.h:209
_ni_quadra_dec_context_t::codec_format
int codec_format
Definition: ni_quadra_dec_api.h:195
ni_quadra_dec_context_t
struct _ni_quadra_dec_context_t ni_quadra_dec_context_t
ni_quadra_dec_frame_buffer_alloc
LIB_API uint8_t * ni_quadra_dec_frame_buffer_alloc(ni_quadra_dec_context_t *ni_dec_ctx, void *p_session_data)
alloc session p_data
Definition: ni_quadra_dec_api.c:1532
_ni_quadra_dec_context_t::hwframes
int hwframes
Definition: ni_quadra_dec_api.h:198
_ni_quadra_dec_context_t::skip_extra_headers
int skip_extra_headers
Definition: ni_quadra_dec_api.h:184
QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_OPENING
@ QUADRA_SESSION_RUN_STATE_SEQ_CHANGE_OPENING
Definition: ni_quadra_dec_api.h:57
_ni_quadra_frame::sei_hdr_content_light_level_info_offset
unsigned int sei_hdr_content_light_level_info_offset
Definition: ni_quadra_dec_api.h:90
_ni_quadra_frame::sei_user_data_unreg_offset
unsigned int sei_user_data_unreg_offset
Definition: ni_quadra_dec_api.h:86
_ni_quadra_dec_context_t::ready_to_close
uint32_t ready_to_close
Definition: ni_quadra_dec_api.h:206
_ni_quadra_frame::data_len
uint32_t data_len[NI_QUADRA_MAX_NUM_DATA_POINTERS]
Definition: ni_quadra_dec_api.h:94
_ni_quadra_dec_context_t::dec_wait
int dec_wait
Definition: ni_quadra_dec_api.h:153
ni_quadra_frame_copy_aux_data
LIB_API void ni_quadra_frame_copy_aux_data(ni_quadra_dec_context_t *ni_dec_ctx, uint8_t *dst_data, int type, int size)
Retrieve from the frame auxiliary data of a given type if exists.
Definition: ni_quadra_dec_api.c:1051
_ni_quadra_dec_context_t::pkt_nal_bitmap
int pkt_nal_bitmap
Definition: ni_quadra_dec_api.h:183