libxcoder  3.5.1
ni_device_test_logan.h
Go to the documentation of this file.
1 /*!****************************************************************************
2 *
3 * Copyright (C) 2018 NETINT Technologies.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted.
7 *
8 *******************************************************************************/
9 
10 /*!*****************************************************************************
11 * \file ni_device_test_logan.h
12 *
13 * \brief Example code on how to programmatically work with NI T-408 using
14 * libxcoder API
15 *
16 *******************************************************************************/
17 
18 #pragma once
19 
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include "ni_av_codec_logan.h"
23 
24 #ifdef __cplusplus
25  "C" {
26 #endif
27 
28 #ifdef _WIN32
29 #define open _open
30 #define close _close
31 #define read _read
32 #define write _write
33 #define lseek _lseek
34 #endif
35 
36 #define NVME_CMD_SEM_PROTECT 1
37 
38 #define FILE_NAME_LEN 256
39 
40 #define XCODER_APP_TRANSCODE 0
41 #define XCODER_APP_DECODE 1
42 #define XCODER_APP_ENCODE 2
43 
44 #define ENC_CONF_STRUCT_SIZE 0x100
45 
46 typedef struct _device_state
47 {
53 
54 typedef struct _tx_data
55 {
57  uint32_t DataSizeLimit;
58 
60  int mode;
65  int arg_width;
67 
69 
70 typedef struct RecvDataStruct_
71 {
73  uint32_t DataSizeLimit;
74 
76  int mode;
81 
82  int arg_width;
84 
86 
90 typedef struct _ni_logan_h264_sps_t
91 {
92  int width;
93  int height;
94 
95  unsigned int sps_id;
97  int level_idc;
101  int poc_type;
109  int mb_width;
113  int mb_aff;
115  int crop;
116 
117  unsigned int crop_left;
118  unsigned int crop_right;
119  unsigned int crop_top;
120  unsigned int crop_bottom;
131  uint32_t time_scale;
138  uint8_t scaling_matrix4[6][16];
139  uint8_t scaling_matrix8[6][64];
144  int cpb_cnt;
152  uint8_t data[4096];
153  size_t data_size;
155 
156 typedef struct dev_send_param
157 {
164  unsigned long *p_total_bytes_sent;
168 
169 typedef struct dev_recv_param
170 {
176  FILE *p_file;
177  unsigned long long *p_total_bytes_received;
180 
182  ni_logan_session_data_io_t* p_in_data,
183  int input_video_width,
184  int input_video_height,
185  int packet_size,
186  unsigned long *sentTotal,
187  int printT,
188  device_state_t *xState,
189  ni_logan_h264_sps_t *sps);
190 
192  ni_logan_session_data_io_t* p_out_data,
193  int output_video_width,
194  int output_video_height,
195  FILE* pfr,
196  unsigned long long *recvTotal,
197  int printT,
198  device_state_t *xState);
199 
201  ni_logan_session_data_io_t* p_in_data,
202  int input_video_width,
203  int input_video_height,
204  unsigned long *sentSize,
205  device_state_t *xState);
206 
208  ni_logan_session_context_t* p_dec_ctx,
209  ni_logan_session_data_io_t* p_dec_out_data,
210  ni_logan_session_data_io_t* p_enc_in_data,
211  int input_video_width,
212  int input_video_height,
213  unsigned long *sentSize,
214  device_state_t *xState);
215 
216 #ifdef __cplusplus
217 }
218 #endif
NETINT audio/video related utility functions.
enum _ni_color_primaries ni_color_primaries_t
enum _ni_color_transfer_characteristic ni_color_transfer_characteristic_t
enum _ni_color_space ni_color_space_t
int encoder_send_data(ni_logan_session_context_t *p_enc_ctx, ni_logan_session_data_io_t *p_in_data, int input_video_width, int input_video_height, unsigned long *sentSize, device_state_t *xState)
Send encoder input data, read from input file.
struct dev_send_param dev_send_param_t
int encoder_send_data2(ni_logan_session_context_t *p_enc_ctx, ni_logan_session_context_t *p_dec_ctx, ni_logan_session_data_io_t *p_dec_out_data, ni_logan_session_data_io_t *p_enc_in_data, int input_video_width, int input_video_height, unsigned long *sentSize, device_state_t *xState)
struct _ni_logan_h264_sps_t ni_logan_h264_sps_t
struct _tx_data tx_data_t
struct RecvDataStruct_ rx_data_t
int decoder_receive_data(ni_logan_session_context_t *p_dec_ctx, ni_logan_session_data_io_t *p_out_data, int output_video_width, int output_video_height, FILE *pfr, unsigned long long *recvTotal, int printT, device_state_t *xState)
Receive decoded output data from decoder.
int decoder_send_data(ni_logan_session_context_t *p_dec_ctx, ni_logan_session_data_io_t *p_in_data, int input_video_width, int input_video_height, int packet_size, unsigned long *sentTotal, int printT, device_state_t *xState, ni_logan_h264_sps_t *sps)
Send decoder input data.
struct dev_recv_param dev_recv_param_t
struct _device_state device_state_t
#define FILE_NAME_LEN
ni_color_transfer_characteristic_t color_trc
ni_color_primaries_t color_primaries
int log2_max_frame_num
log2_max_frame_num_minus4 + 4
unsigned int crop_left
frame_cropping_rect_left_offset
int cpb_removal_delay_length
cpb_removal_delay_length_minus1 + 1
int poc_type
pic_order_cnt_type
int constraint_set_flags
constraint_set[0-3]_flag
int bit_depth_luma
bit_depth_luma_minus8 + 8
int transform_bypass
qpprime_y_zero_transform_bypass_flag
uint8_t scaling_matrix8[6][64]
int initial_cpb_removal_delay_length
initial_cpb_removal_delay_length_minus1 + 1
unsigned int max_dec_frame_buffering
unsigned int crop_bottom
frame_cropping_rect_bottom_offset
ni_color_space_t colorspace
uint8_t scaling_matrix4[6][16]
int poc_cycle_length
num_ref_frames_in_pic_order_cnt_cycle
int residual_color_transform_flag
residual_colour_transform_flag
int mb_aff
mb_adaptive_frame_field_flag
int dpb_output_delay_length
dpb_output_delay_length_minus1 + 1
unsigned int crop_right
frame_cropping_rect_right_offset
unsigned int crop_top
frame_cropping_rect_top_offset
int cpb_cnt
See H.264 E.1.2.
int crop
frame_cropping_flag
int ref_frame_count
num_ref_frames
int bit_depth_chroma
bit_depth_chroma_minus8 + 8
int log2_max_poc_lsb
log2_max_pic_order_cnt_lsb_minus4
int mb_width
(pic_height_in_map_units_minus1 + 1) * (2 - frame_mbs_only_flag)
char fileName[FILE_NAME_LEN]
uint32_t DataSizeLimit
ni_logan_session_context_t * p_enc_ctx
ni_logan_device_context_t * p_enc_rsrc_ctx
ni_logan_session_context_t * p_dec_ctx
ni_logan_device_context_t * p_dec_rsrc_ctx
char fileName[FILE_NAME_LEN]
ni_logan_session_context_t * p_enc_ctx
ni_logan_device_context_t * p_enc_rsrc_ctx
ni_logan_session_context_t * p_dec_ctx
ni_logan_device_context_t * p_dec_rsrc_ctx
device_state_t * p_xcodeState
unsigned long long * p_total_bytes_received
ni_logan_session_data_io_t * p_data
ni_logan_session_context_t * p_ctx
device_state_t * p_xcodeState
ni_logan_session_data_io_t * p_data
unsigned long * p_total_bytes_sent
ni_logan_session_context_t * p_ctx
ni_logan_h264_sps_t * p_SPS