libxcoder  5.3.1
ni_encode_utils.c File Reference
#include "ni_generic_utils.h"
#include "ni_encode_utils.h"
#include "ni_log.h"
#include "ni_av_codec.h"
#include "ni_util.h"

Go to the source code of this file.

Functions

void set_demo_roi_map (ni_session_context_t *p_enc_ctx)
 Set up hard coded demo ROI map. More...
 
void prep_reconf_demo_data (ni_demo_context_t *p_ctx, ni_session_context_t *p_enc_ctx, ni_frame_t *frame)
 
int encoder_send_data (ni_demo_context_t *p_ctx, ni_session_context_t *p_enc_ctx, ni_session_data_io_t *p_in_data, void *yuv_buf, int input_video_width, int input_video_height, int is_last_input)
 Send encoder input data, read from input file. More...
 
int encoder_send_data2 (ni_demo_context_t *p_ctx, ni_session_context_t *p_enc_ctx, ni_session_data_io_t *p_dec_out_data, ni_session_data_io_t *p_enc_in_data, int input_video_width, int input_video_height)
 
int encoder_send_data3 (ni_demo_context_t *p_ctx, ni_session_context_t *p_enc_ctx, ni_session_data_io_t *p_in_data, int input_video_width, int input_video_height, int eos)
 Send encoder input data, read from uploader instance hwframe. More...
 
int encoder_open_session (ni_session_context_t *p_enc_ctx, int dst_codec_format, int iXcoderGUID, ni_xcoder_params_t *p_enc_params, int width, int height, ni_pix_fmt_t pix_fmt, bool check_zerocopy)
 Encoder session open. More...
 
int encoder_reinit_session (ni_session_context_t *p_enc_ctx, ni_session_data_io_t *p_in_data, ni_session_data_io_t *p_out_data)
 Reopen or reconfig encoder upon sequence change. More...
 
void write_av1_ivf_header (ni_demo_context_t *p_ctx, uint32_t width, uint32_t height, uint32_t frame_num, uint32_t frame_denom, FILE *p_file)
 
void write_av1_ivf_packet (ni_demo_context_t *p_ctx, ni_packet_t *p_out_pkt, uint32_t meta_size, FILE *p_file)
 
int write_av1_ivf_trailer (ni_demo_context_t *p_ctx, ni_packet_t *p_out_pkt, uint32_t meta_size, FILE *p_file)
 
int encoder_receive_data (ni_demo_context_t *p_ctx, ni_session_context_t *p_enc_ctx, ni_session_data_io_t *p_out_data, int output_video_width, int output_video_height, FILE *p_file, ni_session_data_io_t *p_in_data)
 Receive output data from encoder. More...
 
int encoder_close_session (ni_session_context_t *p_enc_ctx, ni_session_data_io_t *p_in_data, ni_session_data_io_t *p_out_data)
 encoder session close More...
 
int encoder_sequence_change (ni_session_context_t *p_enc_ctx, ni_session_data_io_t *p_in_data, ni_session_data_io_t *p_out_data, int width, int height, ni_pix_fmt_t pix_fmt)
 
int encoder_open (ni_demo_context_t *p_ctx, ni_session_context_t *enc_ctx_list, ni_xcoder_params_t *p_api_param_list, int output_total, char p_enc_conf_params[][2048], char p_enc_conf_gop[][2048], ni_frame_t *p_ni_frame, int width, int height, int fps_num, int fps_den, int bitrate, int codec_format, ni_pix_fmt_t pix_fmt, int aspect_ratio_idc, int xcoder_guid, niFrameSurface1_t *p_surface, int multi_thread, bool check_zerocopy)
 
int encoder_receive (ni_demo_context_t *p_ctx, ni_session_context_t *enc_ctx_list, ni_session_data_io_t *in_frame, ni_session_data_io_t *pkt, int width, int height, int output_total, FILE **pfs_list)
 
void encoder_stat_report_and_close (ni_demo_context_t *p_ctx, ni_session_context_t *p_enc_ctx_list, int output_total)
 
void * encoder_send_thread (void *args)
 
void * encoder_receive_thread (void *args)
 
void ni_init_pts_queue (ni_pts_queue *q)
 
int ni_pts_queue_empty (ni_pts_queue *q)
 
int ni_pts_queue_full (ni_pts_queue *q)
 
int ni_pts_enqueue (ni_pts_queue *q, int value)
 
int ni_pts_dequeue (ni_pts_queue *q, int *value)
 
void ni_prepare_pts_queue (ni_pts_queue *q, ni_xcoder_params_t *enc_param, int pts_start)
 

Function Documentation

◆ encoder_close_session()

int encoder_close_session ( ni_session_context_t p_enc_ctx,
ni_session_data_io_t p_in_data,
ni_session_data_io_t p_out_data 
)

encoder session close


Parameters

Definition at line 1942 of file ni_encode_utils.c.

◆ encoder_open()

int encoder_open ( ni_demo_context_t p_ctx,
ni_session_context_t enc_ctx_list,
ni_xcoder_params_t p_api_param_list,
int  output_total,
char  p_enc_conf_params[][2048],
char  p_enc_conf_gop[][2048],
ni_frame_t p_ni_frame,
int  width,
int  height,
int  fps_num,
int  fps_den,
int  bitrate,
int  codec_format,
ni_pix_fmt_t  pix_fmt,
int  aspect_ratio_idc,
int  xcoder_guid,
niFrameSurface1_t p_surface,
int  multi_thread,
bool  check_zerocopy 
)

Definition at line 2017 of file ni_encode_utils.c.

◆ encoder_open_session()

int encoder_open_session ( ni_session_context_t p_enc_ctx,
int  dst_codec_format,
int  iXcoderGUID,
ni_xcoder_params_t p_enc_params,
int  width,
int  height,
ni_pix_fmt_t  pix_fmt,
bool  check_zerocopy 
)

Encoder session open.


Parameters

Definition at line 1271 of file ni_encode_utils.c.

◆ encoder_receive()

int encoder_receive ( ni_demo_context_t p_ctx,
ni_session_context_t enc_ctx_list,
ni_session_data_io_t in_frame,
ni_session_data_io_t pkt,
int  width,
int  height,
int  output_total,
FILE **  pfs_list 
)

Definition at line 2215 of file ni_encode_utils.c.

◆ encoder_receive_data()

int encoder_receive_data ( ni_demo_context_t p_ctx,
ni_session_context_t p_enc_ctx,
ni_session_data_io_t p_out_data,
int  output_video_width,
int  output_video_height,
FILE *  p_file,
ni_session_data_io_t p_in_data 
)

Receive output data from encoder.


Parameters
p_in_datais passed in to specify new frame resolution upon sequence change
Returns
0 - success got packet 1 - received eos 2 - got nothing, need retry -1 - failure

Definition at line 1734 of file ni_encode_utils.c.

◆ encoder_receive_thread()

void* encoder_receive_thread ( void *  args)

Definition at line 2403 of file ni_encode_utils.c.

◆ encoder_reinit_session()

int encoder_reinit_session ( ni_session_context_t p_enc_ctx,
ni_session_data_io_t p_in_data,
ni_session_data_io_t p_out_data 
)

Reopen or reconfig encoder upon sequence change.


Parameters

Definition at line 1418 of file ni_encode_utils.c.

◆ encoder_send_data()

int encoder_send_data ( ni_demo_context_t p_ctx,
ni_session_context_t p_enc_ctx,
ni_session_data_io_t p_in_data,
void *  yuv_buf,
int  input_video_width,
int  input_video_height,
int  is_last_input 
)

Send encoder input data, read from input file.


Note: For optimal performance, yuv_buf should be 4k aligned

Parameters

Definition at line 735 of file ni_encode_utils.c.

◆ encoder_send_data2()

int encoder_send_data2 ( ni_demo_context_t p_ctx,
ni_session_context_t p_enc_ctx,
ni_session_data_io_t p_dec_out_data,
ni_session_data_io_t p_enc_in_data,
int  input_video_width,
int  input_video_height 
)

Definition at line 880 of file ni_encode_utils.c.

◆ encoder_send_data3()

int encoder_send_data3 ( ni_demo_context_t p_ctx,
ni_session_context_t p_enc_ctx,
ni_session_data_io_t p_in_data,
int  input_video_width,
int  input_video_height,
int  eos 
)

Send encoder input data, read from uploader instance hwframe.


Parameters

Definition at line 1188 of file ni_encode_utils.c.

◆ encoder_send_thread()

void* encoder_send_thread ( void *  args)

Definition at line 2311 of file ni_encode_utils.c.

◆ encoder_sequence_change()

int encoder_sequence_change ( ni_session_context_t p_enc_ctx,
ni_session_data_io_t p_in_data,
ni_session_data_io_t p_out_data,
int  width,
int  height,
ni_pix_fmt_t  pix_fmt 
)

Definition at line 1967 of file ni_encode_utils.c.

◆ encoder_stat_report_and_close()

void encoder_stat_report_and_close ( ni_demo_context_t p_ctx,
ni_session_context_t p_enc_ctx_list,
int  output_total 
)

Definition at line 2287 of file ni_encode_utils.c.

◆ ni_init_pts_queue()

void ni_init_pts_queue ( ni_pts_queue q)

Definition at line 2464 of file ni_encode_utils.c.

◆ ni_prepare_pts_queue()

void ni_prepare_pts_queue ( ni_pts_queue q,
ni_xcoder_params_t enc_param,
int  pts_start 
)

Definition at line 2503 of file ni_encode_utils.c.

◆ ni_pts_dequeue()

int ni_pts_dequeue ( ni_pts_queue q,
int *  value 
)

Definition at line 2491 of file ni_encode_utils.c.

◆ ni_pts_enqueue()

int ni_pts_enqueue ( ni_pts_queue q,
int  value 
)

Definition at line 2478 of file ni_encode_utils.c.

◆ ni_pts_queue_empty()

int ni_pts_queue_empty ( ni_pts_queue q)

Definition at line 2470 of file ni_encode_utils.c.

◆ ni_pts_queue_full()

int ni_pts_queue_full ( ni_pts_queue q)

Definition at line 2474 of file ni_encode_utils.c.

◆ prep_reconf_demo_data()

void prep_reconf_demo_data ( ni_demo_context_t p_ctx,
ni_session_context_t p_enc_ctx,
ni_frame_t frame 
)

Definition at line 124 of file ni_encode_utils.c.

◆ set_demo_roi_map()

void set_demo_roi_map ( ni_session_context_t p_enc_ctx)

Set up hard coded demo ROI map.


Parameters

Definition at line 41 of file ni_encode_utils.c.

◆ write_av1_ivf_header()

void write_av1_ivf_header ( ni_demo_context_t p_ctx,
uint32_t  width,
uint32_t  height,
uint32_t  frame_num,
uint32_t  frame_denom,
FILE *  p_file 
)

Definition at line 1562 of file ni_encode_utils.c.

◆ write_av1_ivf_packet()

void write_av1_ivf_packet ( ni_demo_context_t p_ctx,
ni_packet_t p_out_pkt,
uint32_t  meta_size,
FILE *  p_file 
)

Definition at line 1611 of file ni_encode_utils.c.

◆ write_av1_ivf_trailer()

int write_av1_ivf_trailer ( ni_demo_context_t p_ctx,
ni_packet_t p_out_pkt,
uint32_t  meta_size,
FILE *  p_file 
)

Definition at line 1690 of file ni_encode_utils.c.