libxcoder  5.2.0
ni_encode_utils.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 encode_utils.h
24  *
25  * \brief Video encoding utility functions shared by Libxcoder API examples
26  ******************************************************************************/
27 
28 #pragma once
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 #include "ni_generic_utils.h"
35 #include "ni_device_api.h"
36 
37 typedef struct enc_send_param
38 {
46 
47 typedef struct enc_recv_param
48 {
53  FILE **p_file;
57 
58 void set_demo_roi_map(ni_session_context_t *p_enc_ctx);
60 
62  ni_session_data_io_t *p_in_data, void *yuv_buf,
63  int input_video_width, int input_video_height,
64  int is_last_input);
66  ni_session_data_io_t *p_dec_out_data,
67  ni_session_data_io_t *p_enc_in_data,
68  int input_video_width, int input_video_height);
70  ni_session_data_io_t *p_in_data,
71  int input_video_width, int input_video_height, int eos);
72 
73 int encoder_open_session(ni_session_context_t *p_enc_ctx, int dst_codec_format,
74  int iXcoderGUID, ni_xcoder_params_t *p_enc_params,
75  int width, int height, ni_pix_fmt_t pix_fmt,
76  bool check_zerocopy);
78  ni_session_data_io_t *p_in_data,
79  ni_session_data_io_t *p_out_data);
80 
81 void write_av1_ivf_header(ni_demo_context_t *p_ctx, uint32_t width, uint32_t height, uint32_t frame_num,
82  uint32_t frame_denom, FILE *p_file);
83 void write_av1_ivf_packet(ni_demo_context_t *p_ctx, ni_packet_t *p_out_pkt, uint32_t meta_size, FILE *p_file);
84 int write_av1_ivf_trailer(ni_demo_context_t *p_ctx, ni_packet_t *p_out_pkt, uint32_t meta_size, FILE *p_file);
86  ni_session_data_io_t *p_out_data, int output_video_width,
87  int output_video_height, FILE *p_file, ni_session_data_io_t * p_in_data);
89  ni_session_data_io_t *p_in_data,
90  ni_session_data_io_t *p_out_data);
92  ni_session_data_io_t *p_in_data,
93  ni_session_data_io_t *p_out_data,
94  int width, int height, ni_pix_fmt_t pix_fmt);
95 
96 int encoder_open(ni_session_context_t *enc_ctx_list,
97  ni_xcoder_params_t *p_api_param_list,
98  int output_total, char p_enc_conf_params[][2048],
99  char p_enc_conf_gop[][2048],
100  ni_frame_t *p_ni_frame, int width, int height,
101  int fps_num, int fps_den, int bitrate,
102  int codec_format, ni_pix_fmt_t pix_fmt,
103  int aspect_ratio_idc, int xcoder_guid,
104  niFrameSurface1_t *p_surface, int multi_thread,
105  bool check_zerocopy);
107  ni_session_context_t *enc_ctx_list,
108  ni_session_data_io_t *in_frame,
109  ni_session_data_io_t *pkt, int width, int height,
110  int output_total, FILE **pfs_list);
111 
112 void encoder_stat_report_and_close(ni_demo_context_t *p_ctx, ni_session_context_t *p_enc_ctx_list, int output_total);
113 
114 void *encoder_send_thread(void *args);
115 void *encoder_receive_thread(void *args);
116 
117 #ifdef __cplusplus
118 }
119 #endif
ni_pix_fmt_t
ni_pix_fmt_t
Definition: ni_device_api.h:260
enc_recv_param::p_file
FILE ** p_file
Definition: ni_encode_utils.h:53
ni_generic_utils.h
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: ni_encode_utils.c:2252
enc_recv_param::p_ctx
ni_demo_context_t * p_ctx
Definition: ni_encode_utils.h:49
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.
Definition: ni_encode_utils.c:1721
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: ni_encode_utils.c:2181
encoder_open
int encoder_open(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: ni_encode_utils.c:1999
enc_send_param::p_ctx
ni_demo_context_t * p_ctx
Definition: ni_encode_utils.h:39
_ni_test_frame_list
Definition: ni_generic_utils.h:102
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: ni_encode_utils.c:1677
enc_send_param
Definition: ni_encode_utils.h:37
enc_send_param::p_enc_ctx
ni_session_context_t * p_enc_ctx
Definition: ni_encode_utils.h:40
_ni_demo_context
Definition: ni_generic_utils.h:109
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: ni_encode_utils.c:124
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.
Definition: ni_encode_utils.c:1179
enc_send_param::output_total
int output_total
Definition: ni_encode_utils.h:43
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
Definition: ni_encode_utils.c:1924
set_demo_roi_map
void set_demo_roi_map(ni_session_context_t *p_enc_ctx)
Set up hard coded demo ROI map.
Definition: ni_encode_utils.c:41
_ni_session_data_io
Definition: ni_device_api.h:2866
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.
Definition: ni_encode_utils.c:1405
enc_recv_param::p_enc_ctx
ni_session_context_t * p_enc_ctx
Definition: ni_encode_utils.h:50
enc_recv_param::frame_list
ni_test_frame_list_t * frame_list
Definition: ni_encode_utils.h:55
_ni_packet
Definition: ni_device_api.h:2825
enc_send_param_t
struct enc_send_param enc_send_param_t
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.
Definition: ni_encode_utils.c:735
_ni_session_context
Definition: ni_device_api.h:1408
_niFrameSurface1
Definition: ni_device_api.h:2793
_ni_frame
Definition: ni_device_api.h:2601
enc_recv_param::output_height
int output_height
Definition: ni_encode_utils.h:52
_ni_xcoder_params
Definition: ni_device_api.h:2713
enc_recv_param::output_width
int output_width
Definition: ni_encode_utils.h:51
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: ni_encode_utils.c:1549
enc_recv_param_t
struct enc_recv_param enc_recv_param_t
enc_send_param::output_width
int output_width
Definition: ni_encode_utils.h:41
encoder_send_thread
void * encoder_send_thread(void *args)
Definition: ni_encode_utils.c:2276
ni_device_api.h
Public definitions for operating NETINT video processing devices for video processing.
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: ni_encode_utils.c:876
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: ni_encode_utils.c:1598
enc_send_param::frame_list
ni_test_frame_list_t * frame_list
Definition: ni_encode_utils.h:44
enc_recv_param::output_total
int output_total
Definition: ni_encode_utils.h:54
encoder_receive_thread
void * encoder_receive_thread(void *args)
Definition: ni_encode_utils.c:2368
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: ni_encode_utils.c:1949
enc_send_param::output_height
int output_height
Definition: ni_encode_utils.h:42
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.
Definition: ni_encode_utils.c:1258
enc_recv_param
Definition: ni_encode_utils.h:47