xref: /OK3568_Linux_fs/external/rockit/tgi/sdk/include/RTNodeCommon.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright 2020 Rockchip Electronics Co. LTD
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Licensed under the Apache License, Version 2.0 (the "License");
5*4882a593Smuzhiyun  * you may not use this file except in compliance with the License.
6*4882a593Smuzhiyun  * You may obtain a copy of the License at
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  *      http://www.apache.org/licenses/LICENSE-2.0
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * Unless required by applicable law or agreed to in writing, software
11*4882a593Smuzhiyun  * distributed under the License is distributed on an "AS IS" BASIS,
12*4882a593Smuzhiyun  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4882a593Smuzhiyun  * See the License for the specific language governing permissions and
14*4882a593Smuzhiyun  * limitations under the License.
15*4882a593Smuzhiyun  *
16*4882a593Smuzhiyun  *     author: <martin.cheng@rock-chips.com>
17*4882a593Smuzhiyun  *       date: 2020-05-20
18*4882a593Smuzhiyun  *     module: RTNodeCommon
19*4882a593Smuzhiyun  */
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #ifndef SRC_RT_TASK_APP_GRAPH_RTNODECOMMON_H
22*4882a593Smuzhiyun #define SRC_RT_TASK_APP_GRAPH_RTNODECOMMON_H
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #include <iterator>
25*4882a593Smuzhiyun #include <list>
26*4882a593Smuzhiyun #include <vector>
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #include "rt_string_utils.h"
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /*
31*4882a593Smuzhiyun  * "node_0": {
32*4882a593Smuzhiyun  *    "node_name":          "source_stream",
33*4882a593Smuzhiyun  *    "node_opts":        { "node_type": "rkisp" },
34*4882a593Smuzhiyun  *    "node_stream":      { "name":      "v4l2_capture" },
35*4882a593Smuzhiyun  *    "node_stream_opts": { "device":    "/dev/video0" }
36*4882a593Smuzhiyun  * }
37*4882a593Smuzhiyun  */
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define NODE_NAME_RKISP         "rkisp"
40*4882a593Smuzhiyun #define NODE_NAME_FREAD         "fread"
41*4882a593Smuzhiyun #define NODE_NAME_RKMPP_ENC     "rkmpp_enc"
42*4882a593Smuzhiyun #define NODE_NAME_RKMPP_DEC     "rkmpp_dec"
43*4882a593Smuzhiyun #define NODE_NAME_ROCKX         "rockx"
44*4882a593Smuzhiyun #define NODE_NAME_FWRITE        "fwrite"
45*4882a593Smuzhiyun #define NODE_NAME_RKRGA         "rkrga"
46*4882a593Smuzhiyun #define NODE_NAME_EPTZ          "rkeptz"
47*4882a593Smuzhiyun #define NODE_NAME_STASTERIA     "st_asteria"  // sensetime asteria
48*4882a593Smuzhiyun #define NODE_NAME_AIMATTING     "ai_matting"
49*4882a593Smuzhiyun #define NODE_NAME_GLPSS         "rkglpss"
50*4882a593Smuzhiyun #define NODE_NAME_VPSS          "rkvpss"
51*4882a593Smuzhiyun #define NODE_NAME_AVS           "rkavs"
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define NODE_NAME_RESAMPLE      "resample"
54*4882a593Smuzhiyun #define NODE_NAME_ALSA_CAPTURE  "alsa_capture"
55*4882a593Smuzhiyun #define NODE_NAME_ALSA_PLAYBACK "alsa_playback"
56*4882a593Smuzhiyun #define NODE_NAME_MULTI_CAPTURE "multi_cap"
57*4882a593Smuzhiyun #define NODE_NAME_ALGORITHM_3A  "alg_3a"
58*4882a593Smuzhiyun #define NODE_NAME_ALGORITHM_3A_ANR  "alg_anr"
59*4882a593Smuzhiyun #define NODE_NAME_ALGORITHM_SKV     "skv"
60*4882a593Smuzhiyun #define NODE_NAME_ALGORITHM_SKV_AEC "skv_aec"
61*4882a593Smuzhiyun #define NODE_NAME_ALGORITHM_SKV_AGC "skv_agc"
62*4882a593Smuzhiyun #define NODE_NAME_ALGORITHM_SKV_BF  "skv_bf"
63*4882a593Smuzhiyun #define NODE_NAME_ALGORITHM_SKV_DOA "skv_doa"
64*4882a593Smuzhiyun #define NODE_NAME_AUDIO_TRACK_MODE  "track_mode"
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun #define NODE_NAME_RKNN          "rknn"
67*4882a593Smuzhiyun #define NODE_NAME_FFM_DEMUXER   "ffm_demuxer"
68*4882a593Smuzhiyun #define NODE_NAME_VIDEO_SINK    "video_sink"
69*4882a593Smuzhiyun #define NODE_NAME_FILTER_IMAGE  "filter_image"
70*4882a593Smuzhiyun #define NODE_NAME_FILTER_SCALER "filter_scaler"
71*4882a593Smuzhiyun #define NODE_NAME_VOLUME        "filter_volume"
72*4882a593Smuzhiyun #define NODE_NAME_LINK_OUTPUT   "link_output"
73*4882a593Smuzhiyun #define NODE_NAME_SOURCE_EXTERNAL  "external_source"
74*4882a593Smuzhiyun #define NODE_NAME_AUDIO_DEC     "audio_dec"
75*4882a593Smuzhiyun #define NODE_NAME_AUDIO_ENC     "audio_enc"
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define NODE_PORT_SOURCE  "source"
78*4882a593Smuzhiyun #define NODE_PORT_DEVICE  "device"
79*4882a593Smuzhiyun #define NODE_PORT_SINK    "sink"
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun // task node names supported by rockchip co.
82*4882a593Smuzhiyun #define RT_NODE_DEVICE_RKISP             "node_rkisp"
83*4882a593Smuzhiyun #define RT_NODE_DEVICE_ALSA_CAPTURE      "node_alsa_capture"
84*4882a593Smuzhiyun #define RT_NODE_DEVICE_ALSA_PLAYBACK     "node_alsa_playback"
85*4882a593Smuzhiyun #define RT_NODE_CODEC_RKMPP              "node_rkmpp"
86*4882a593Smuzhiyun #define RT_NODE_CODEC_FFVIDEO            "node_ffvideo"    // tmedia codec video
87*4882a593Smuzhiyun #define RT_NODE_CODEC_FFAUDIO            "node_ffaudio"    // tmedia codec audio
88*4882a593Smuzhiyun #define RT_NODE_FILTER_RKRGA             "node_rkrga"
89*4882a593Smuzhiyun #define RT_NODE_FILTER_RKNN              "node_rknn"
90*4882a593Smuzhiyun #define RT_NODE_FILTER_RKFACE            "node_rkface"
91*4882a593Smuzhiyun #define RT_NODE_FILTER_RESAMPLE          "node_resample"
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun // common root types for task node.
94*4882a593Smuzhiyun #define KEY_ROOT_PIPE_ID                 "pipe_"
95*4882a593Smuzhiyun #define KEY_ROOT_NODE_ID                 "node_"
96*4882a593Smuzhiyun #define KEY_ROOT_EXEC_ID                 "executor_"
97*4882a593Smuzhiyun #define KEY_ROOT_LINK_MODE_ID            "link_"
98*4882a593Smuzhiyun #define KEY_ROOT_INPUT_STREAM_ID         "stream_input_"
99*4882a593Smuzhiyun #define KEY_ROOT_OUTPUT_STREAM_ID        "stream_output_"
100*4882a593Smuzhiyun #define KEY_ROOT_NODE_OPTS               "node_opts"
101*4882a593Smuzhiyun #define KEY_ROOT_NODE_OPTS_EXTRA         "node_opts_extra"
102*4882a593Smuzhiyun #define KEY_ROOT_STREAM_OPTS             "stream_opts"
103*4882a593Smuzhiyun #define KEY_ROOT_STREAM_OPTS_EXTRA       "stream_opts_extra"
104*4882a593Smuzhiyun #define KEY_ROOT_THREAD_OPTS             "thread_opts"
105*4882a593Smuzhiyun #define KEY_ROOT_EXEC_OPTS               "executor_opts"
106*4882a593Smuzhiyun #define KEY_ROOT_DEFAULT_LINK_MODE       "default_mode_link"
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun // common parameters for task node. subnodes of KEY_ROOT_NODE_OPTS
109*4882a593Smuzhiyun #define OPT_NODE_NAME                    "node_name"
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun #define OPT_LINK_NAME                    "link_name"
112*4882a593Smuzhiyun #define OPT_LINK_SHIP                    "link_ship"
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun // extra parameters for task node. subnodes of KEY_ROOT_NODE_OPTS_EXTRA
115*4882a593Smuzhiyun #define OPT_NODE_SOURCE_URI              "node_source_uri"
116*4882a593Smuzhiyun #define OPT_NODE_BUFFER_COUNT            "node_buff_count"
117*4882a593Smuzhiyun #define OPT_NODE_BUFFER_TYPE             "node_buff_type"
118*4882a593Smuzhiyun #define OPT_NODE_BUFFER_SIZE             "node_buff_size"
119*4882a593Smuzhiyun #define OPT_NODE_BUFFER_ALLOC_TYPE       "node_buff_alloc_type"
120*4882a593Smuzhiyun #define OPT_NODE_TRANS_RECT              "node_trans_rect"
121*4882a593Smuzhiyun #define OPT_NODE_DISPATCH_EXEC           "node_disp_exec"
122*4882a593Smuzhiyun #define OPT_NODE_MAX_INPUT_COUNT         "node_max_input_count"
123*4882a593Smuzhiyun #define OPT_NODE_GATE_MODE               "node_gate_mode"
124*4882a593Smuzhiyun #define OPT_NODE_BATCH_SIZE              "node_batch_size"
125*4882a593Smuzhiyun #define OPT_NODE_SRC_MB_TYPE             "node_src_mbtype"
126*4882a593Smuzhiyun #define OPT_NODE_DST_MB_TYPE             "node_dst_mbtype"
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #define OPT_FILE_READ_SIZE               "opt_read_size"
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun // common parameters for node stream. subnodes of KEY_ROOT_NODE_STREAM
131*4882a593Smuzhiyun #define OPT_STREAM_UID                   "stream_uid"
132*4882a593Smuzhiyun #define OPT_STREAM_INPUT_NAME            "stream_input"
133*4882a593Smuzhiyun #define OPT_STREAM_OUTPUT_NAME           "stream_output"
134*4882a593Smuzhiyun #define OPT_STREAM_FMT_IN                "stream_fmt_in"
135*4882a593Smuzhiyun #define OPT_STREAM_FMT_OUT               "stream_fmt_out"
136*4882a593Smuzhiyun #define OPT_STREAM_FMT_IN_PREFIX         "stream_fmt_in_"
137*4882a593Smuzhiyun #define OPT_STREAM_FMT_OUT_PREFIX        "stream_fmt_out_"
138*4882a593Smuzhiyun #define OPT_STREAM_INPUT_MODE            "stream_mode_in"
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun // common parameters for codec video. subnodes of KEY_ROOT_NODE_STREAM_OPTS
141*4882a593Smuzhiyun #define OPT_VIDEO_SVC                    "opt_svc"
142*4882a593Smuzhiyun #define OPT_VIDEO_SMART                  "opt_smart"
143*4882a593Smuzhiyun #define OPT_VIDEO_GOP                    "opt_gop"
144*4882a593Smuzhiyun #define OPT_VIDEO_BITRATE                "opt_bitrate"
145*4882a593Smuzhiyun #define OPT_VIDEO_STREAMSMOOTH           "opt_smooth"
146*4882a593Smuzhiyun #define OPT_VIDEO_LEVEL                  "opt_level"
147*4882a593Smuzhiyun #define OPT_VIDEO_PROFILE                "opt_profile"
148*4882a593Smuzhiyun #define OPT_VIDEO_TRANS_8x8              "opt_trans8x8"
149*4882a593Smuzhiyun #define OPT_VIDEO_ENTROPY_EN             "opt_cabac_en"
150*4882a593Smuzhiyun #define OPT_VIDEO_ENTROPY_IDC            "opt_cabac_idc"
151*4882a593Smuzhiyun #define OPT_VIDEO_FRAME_RATE             "opt_frame_rate"
152*4882a593Smuzhiyun #define OPT_VIDEO_DIMENS                 "opt_dimens"            // veried, fixed
153*4882a593Smuzhiyun #define OPT_VIDEO_WIDTH                  "opt_width"
154*4882a593Smuzhiyun #define OPT_VIDEO_HEIGHT                 "opt_height"
155*4882a593Smuzhiyun #define OPT_VIDEO_VIR_WIDTH              "opt_vir_width"
156*4882a593Smuzhiyun #define OPT_VIDEO_VIR_HEIGHT             "opt_vir_height"
157*4882a593Smuzhiyun #define OPT_VIDEO_HOR_STRIDE             "opt_hor_stride"
158*4882a593Smuzhiyun #define OPT_VIDEO_VER_STRIDE             "opt_ver_stride"
159*4882a593Smuzhiyun #define OPT_VIDEO_PIX_FORMAT             "opt_pix_format"
160*4882a593Smuzhiyun #define OPT_VIDEO_QUALITY_INIT           "opt_qp_init"
161*4882a593Smuzhiyun #define OPT_VIDEO_QUALITY_STEP           "opt_qp_step"
162*4882a593Smuzhiyun #define OPT_VIDEO_QUALITY_MIN            "opt_qp_min"
163*4882a593Smuzhiyun #define OPT_VIDEO_QUALITY_MAX            "opt_qp_max"
164*4882a593Smuzhiyun #define OPT_VIDEO_QUALITY_MIN_H265       "opt_qp_min_h265"
165*4882a593Smuzhiyun #define OPT_VIDEO_QUALITY_MAX_H265       "opt_qp_max_h265"
166*4882a593Smuzhiyun #define OPT_VIDEO_RC_MODE                "opt_rc_mode"
167*4882a593Smuzhiyun #define OPT_VIDEO_RC_QUALITY             "opt_rc_mode"
168*4882a593Smuzhiyun #define OPT_VIDEO_REGIONS_ROI            "opt_regions_roi"
169*4882a593Smuzhiyun #define OPT_VIDEO_REGIONS_RI             "opt_regions_ri"
170*4882a593Smuzhiyun #define OPT_VIDEO_TRANS_RECT             "opt_trans_rect"
171*4882a593Smuzhiyun #define OPT_VIDEO_COLOR_RANGE            "opt_color_range"
172*4882a593Smuzhiyun #define OPT_VIDEO_TIME_REF               "opt_time_ref"
173*4882a593Smuzhiyun #define OPT_VIDEO_COLOR                  "opt_color"
174*4882a593Smuzhiyun #define OPT_VIDEO_SPLIT_MODE             "opt_split_mode"
175*4882a593Smuzhiyun #define OPT_VIDEO_OUTPUT_MODE            "opt_output_mode"
176*4882a593Smuzhiyun #define OPT_VIDEO_DROP_ERR_FRAME         "opt_drop_err_frame"
177*4882a593Smuzhiyun #define OPT_VIDEO_NALU_TYPE              "opt_nalu_type"
178*4882a593Smuzhiyun #define OPT_VIDEO_EN_DEI                 "opt_en_dei"
179*4882a593Smuzhiyun #define OPT_VIDEO_EN_COLMV               "opt_en_colmv"
180*4882a593Smuzhiyun #define OPT_VIDEO_MAX_DEC_BUFFERING      "opt_max_dec_buffering"
181*4882a593Smuzhiyun 
182*4882a593Smuzhiyun /* draw line in picture */
183*4882a593Smuzhiyun #define OPT_LINE_START_X                 "opt_line_startx"
184*4882a593Smuzhiyun #define OPT_LINE_START_Y                 "opt_line_starty"
185*4882a593Smuzhiyun #define OPT_LINE_END_X                   "opt_line_endx"
186*4882a593Smuzhiyun #define OPT_LINE_END_Y                   "opt_line_endy"
187*4882a593Smuzhiyun #define OPT_LINE_THICK                   "opt_line_thick"
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun /* mosaic in picture */
190*4882a593Smuzhiyun #define OPT_MOSAIC_X                     "opt_mosaic_x"
191*4882a593Smuzhiyun #define OPT_MOSAIC_Y                     "opt_mosaic_y"
192*4882a593Smuzhiyun #define OPT_MOSAIC_W                     "opt_mosaic_w"
193*4882a593Smuzhiyun #define OPT_MOSAIC_H                     "opt_mosaic_h"
194*4882a593Smuzhiyun #define OPT_MOSAIC_BLK_SIZE              "opt_mosaic_blk_size"
195*4882a593Smuzhiyun 
196*4882a593Smuzhiyun // common parameters for codec audio. subnodes of KEY_ROOT_NODE_STREAM_OPTS
197*4882a593Smuzhiyun #define OPT_AUDIO_CHANNEL                "opt_channel"
198*4882a593Smuzhiyun #define OPT_AUDIO_CHANNEL_LAYOUT         "opt_channel_layout"
199*4882a593Smuzhiyun #define OPT_AUDIO_SAMPLE_RATE            "opt_samaple_rate"
200*4882a593Smuzhiyun #define OPT_AUDIO_BITRATE                "opt_bitrate"
201*4882a593Smuzhiyun #define OPT_AUDIO_SOURCE_URI             "opt_source_uri"
202*4882a593Smuzhiyun #define OPT_AUDIO_ANS                    "opt_ans"
203*4882a593Smuzhiyun #define OPT_AUDIO_FORMAT                 "opt_format"
204*4882a593Smuzhiyun #define OPT_AUDIO_REF_CHANNEL_LAYOUT     "opt_ref_channel_layout"    /*aec process of 3a filter*/
205*4882a593Smuzhiyun #define OPT_AUDIO_REC_CHANNEL_LAYOUT     "opt_rec_channel_layout"
206*4882a593Smuzhiyun #define OPT_AUDIO_REF_VOLUME             "opt_ref_volume"
207*4882a593Smuzhiyun #define OPT_AUDIO_REC_VOLUME             "opt_rec_volume"
208*4882a593Smuzhiyun #define OPT_AUDIO_ALSA_MODE              "opt_alsa_mode"
209*4882a593Smuzhiyun #define OPT_AUDIO_AGC_LEVEL              "opt_agc_level"
210*4882a593Smuzhiyun #define OPT_AUDIO_AGC_IS_SPEECH          "opt_agc_is_speech"
211*4882a593Smuzhiyun #define OPT_AUDIO_BF_MODE                "opt_bf_mode"
212*4882a593Smuzhiyun #define OPT_AUDIO_DOA_DISTANCE           "opt_doa_distance"
213*4882a593Smuzhiyun #define OPT_AUDIO_DOA_TARG               "opt_doa_targ"
214*4882a593Smuzhiyun #define OPT_AUDIO_ANR_DEGREE             "opt_anr_degree"
215*4882a593Smuzhiyun #define OPT_AUDIO_AEC_ENABLE             "opt_aec_enable"
216*4882a593Smuzhiyun #define OPT_AUDIO_AEC_DELAY              "opt_aec_delay"
217*4882a593Smuzhiyun #define OPT_AUDIO_AEC_NLP_URI            "opt_aec_nlp_uri"
218*4882a593Smuzhiyun #define OPT_AUDIO_AEC_NLP_PLUS_URI       "opt_aec_nlp_plus_uri"
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun #define OPT_PEROID_SIZE                  "opt_peroid_size"
221*4882a593Smuzhiyun #define OPT_PEROID_COUNT                 "opt_peroid_count"
222*4882a593Smuzhiyun #define OPT_AUDIO_MUTE                   "opt_mute"
223*4882a593Smuzhiyun #define OPT_AUDIO_VOLUME                 "opt_volume"
224*4882a593Smuzhiyun #define OPT_AUDIO_START_DELAY            "opt_start_delay"
225*4882a593Smuzhiyun #define OPT_AUDIO_STOP_DELAY             "opt_stop_delay"
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun // define new option begin here
228*4882a593Smuzhiyun #define OPT_NODE_ID                      "opt_node_id"
229*4882a593Smuzhiyun #define OPT_NODE_CMD                     "opt_node_cmd"
230*4882a593Smuzhiyun #define OPT_NODE_OP                      "opt_node_op"
231*4882a593Smuzhiyun #define OPT_NODE_PRIOR_TYPE              "opt_node_prior"
232*4882a593Smuzhiyun #define OPT_NODE_BYPASS                  "opt_node_bypass"
233*4882a593Smuzhiyun 
234*4882a593Smuzhiyun #define OPT_AV_PTS                       "opt_av_pts"
235*4882a593Smuzhiyun #define OPT_AV_BPM                       "opt_av_dts"
236*4882a593Smuzhiyun #define OPT_AV_SEQ                       "opt_av_seq"
237*4882a593Smuzhiyun #define OPT_AV_EOS                       "opt_av_eos"
238*4882a593Smuzhiyun #define OPT_AV_ERR                       "opt_av_err"
239*4882a593Smuzhiyun #define OPT_AV_DURATION                  "opt_av_duration"
240*4882a593Smuzhiyun #define OPT_AV_TIMEOUT                   "opt_av_timeout"
241*4882a593Smuzhiyun #define OPT_AV_BUF_STATUS                "opt_av_buf_status"
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun #define OPT_CODEC_ID                     "opt_codec_id"
244*4882a593Smuzhiyun #define OPT_CODEC_TYPE                   "opt_codec_type"
245*4882a593Smuzhiyun #define OPT_CODEC_DEC_MODE               "opt_dec_mode"
246*4882a593Smuzhiyun #define OPT_CODEC_EXT_DATA               "opt_ext_data"
247*4882a593Smuzhiyun #define OPT_CODEC_EXT_SIZE               "opt_ext_size"
248*4882a593Smuzhiyun #define OPT_CODEC_BITS_PER_SAMPLE        "opt_bits_per_sample"
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun // define new option end here
251*4882a593Smuzhiyun #define OPT_FILTER_WIDTH                 "opt_width"
252*4882a593Smuzhiyun #define OPT_FILTER_HEIGHT                "opt_height"
253*4882a593Smuzhiyun #define OPT_FILTER_VIR_WIDTH             "opt_vir_width"
254*4882a593Smuzhiyun #define OPT_FILTER_VIR_HEIGHT            "opt_vir_height"
255*4882a593Smuzhiyun #define OPT_FILTER_TRANS_RECT            "opt_trans_rect"
256*4882a593Smuzhiyun #define OPT_FILTER_TRANS_ROTATE          "opt_trans_rotate"
257*4882a593Smuzhiyun #define OPT_FILTER_MOSAIC                "opt_mosaic"
258*4882a593Smuzhiyun #define OPT_FILTER_MIRROR                "opt_mirror"
259*4882a593Smuzhiyun #define OPT_FILTER_FLIP                  "opt_flip"
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun #define OPT_FILTER_MD_DS_WIDTH           "opt_md_ds_width"
262*4882a593Smuzhiyun #define OPT_FILTER_MD_DS_HEIGHT          "opt_md_ds_height"
263*4882a593Smuzhiyun #define OPT_FILTER_MD_ORI_WIDTH          "opt_md_ori_width"
264*4882a593Smuzhiyun #define OPT_FILTER_MD_ORI_HEIGHT         "opt_md_ori_height"
265*4882a593Smuzhiyun #define OPT_FILTER_MD_ROI_CNT            "opt_md_roi_cnt"
266*4882a593Smuzhiyun #define OPT_FILTER_MD_ROI_RECT           "opt_md_roi_rect"
267*4882a593Smuzhiyun #define OPT_FILTER_MD_SINGLE_REF         "opt_md_single"
268*4882a593Smuzhiyun #define OPT_FILTER_RECT_X                "opt_rect_x"
269*4882a593Smuzhiyun #define OPT_FILTER_RECT_Y                "opt_rect_y"
270*4882a593Smuzhiyun #define OPT_FILTER_RECT_W                "opt_rect_w"
271*4882a593Smuzhiyun #define OPT_FILTER_RECT_H                "opt_rect_h"
272*4882a593Smuzhiyun #define OPT_FILTER_RECT_MODE             "opt_rect_mode"
273*4882a593Smuzhiyun #define OPT_FILTER_DST_RECT_X            "opt_dst_rect_x"
274*4882a593Smuzhiyun #define OPT_FILTER_DST_RECT_Y            "opt_dst_rect_y"
275*4882a593Smuzhiyun #define OPT_FILTER_DST_RECT_W            "opt_dst_rect_w"
276*4882a593Smuzhiyun #define OPT_FILTER_DST_RECT_H            "opt_dst_rect_h"
277*4882a593Smuzhiyun #define OPT_FILTER_DST_RECT_MODE         "opt_dst_rect_mode"
278*4882a593Smuzhiyun #define OPT_FILTER_DST_VIR_WIDTH         "opt_dst_vir_width"
279*4882a593Smuzhiyun #define OPT_FILTER_DST_VIR_HEIGHT        "opt_dst_vir_height"
280*4882a593Smuzhiyun #define OPT_FILTER_DST_PIX_FORMAT        "opt_dst_pix_format"
281*4882a593Smuzhiyun #define OPT_FILTER_COMPRESS              "opt_compress_mode"
282*4882a593Smuzhiyun #define OPT_FILTER_DST_COMPRESS          "opt_dst_compress_mode"
283*4882a593Smuzhiyun #define OPT_FILTER_FADE_RATE             "opt_fade_rate"
284*4882a593Smuzhiyun #define OPT_FILTER_FG_ALPHA              "opt_fg_alpha"
285*4882a593Smuzhiyun #define OPT_FILTER_BG_ALPHA              "opt_bg_alpha"
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun #define OPT_V4L2_BUF_TYPE               "opt_buf_type"
288*4882a593Smuzhiyun #define OPT_V4L2_MEM_TYPE               "opt_mem_type"
289*4882a593Smuzhiyun #define OPT_V4L2_USE_LIBV4L2            "opt_use_libv4l2"
290*4882a593Smuzhiyun #define OPT_V4L2_COLORSPACE             "opt_colorspace"
291*4882a593Smuzhiyun #define OPT_V4L2_WIDTH                  "opt_width"
292*4882a593Smuzhiyun #define OPT_V4L2_HEIGHT                 "opt_height"
293*4882a593Smuzhiyun #define OPT_V4L2_ENTITY_NAME            "opt_entity_name"
294*4882a593Smuzhiyun #define OPT_V4L2_QUANTIZATION           "opt_quantiztion"
295*4882a593Smuzhiyun #define OPT_V4L2_CAMERA_INDEX           "opt_camera_index"
296*4882a593Smuzhiyun 
297*4882a593Smuzhiyun #define OPT_ROCKX_MODEL                 "opt_rockx_model"
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun #define OPT_ROCKX_LIB_PATH              "opt_rockx_lib_path"
300*4882a593Smuzhiyun #define OPT_ROCKX_SKIP_FRAME            "opt_rockx_skip_frame"
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun #define OPT_AI_DETECT_RESULT            "opt_ai_detect_result"
303*4882a593Smuzhiyun #define OPT_AI_ALGORITHM                "opt_ai_algorithm"
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun #define OPT_AIMATTING_OUT_RESULT        "aimatting_out_result"
306*4882a593Smuzhiyun 
307*4882a593Smuzhiyun #define OPT_EPTZ_CLIP_RATIO             "opt_clip_ratio"
308*4882a593Smuzhiyun #define OPT_EPTZ_CLIP_WIDTH             "opt_clip_width"
309*4882a593Smuzhiyun #define OPT_EPTZ_CLIP_HEIGHT            "opt_clip_height"
310*4882a593Smuzhiyun 
311*4882a593Smuzhiyun #define OPT_AUDIO_ALGORITHM             "opt_audio_algorithm"
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun #define OPT_EXEC_THREAD_NUM             "exec_thread_num"
314*4882a593Smuzhiyun #define OPT_EXEC_THREAD_NAME            "exec_name"
315*4882a593Smuzhiyun 
316*4882a593Smuzhiyun #define OPT_RGA_BLEND                   "opt_rga_blend"
317*4882a593Smuzhiyun #define OPT_MPP_MPI_TYPE                "opt_mpp_mpi_type"
318*4882a593Smuzhiyun 
319*4882a593Smuzhiyun /*
320*4882a593Smuzhiyun  * AI Server  -- {DBUS | RNDIS} -- Remote HOST(TV AI)
321*4882a593Smuzhiyun  *
322*4882a593Smuzhiyun  * We communicate with the remote HOST through RNDIS.
323*4882a593Smuzhiyun  * DBus is an interactive interface, CMDs are as follows
324*4882a593Smuzhiyun  */
325*4882a593Smuzhiyun #define OPT_DBUS_LEVEL_HIGHEST          "dbus_highest"
326*4882a593Smuzhiyun #define OPT_DBUS_LEVEL_HIGHER           "dbus_higher"
327*4882a593Smuzhiyun #define OPT_DBUS_LEVEL_HIGH             "dbus_high"
328*4882a593Smuzhiyun #define OPT_DBUS_LEVEL_MEDIUM           "dbus_medium"
329*4882a593Smuzhiyun #define OPT_DBUS_LEVEL_LOW              "dbus_low"
330*4882a593Smuzhiyun #define OPT_DBUS_LEVEL_LOWER            "dbus_lower"
331*4882a593Smuzhiyun #define OPT_DBUS_LEVEL_LOWEST           "dbus_lowest"
332*4882a593Smuzhiyun #define OPT_DBUS_RC_MODE_CBR            "dbus_rc_mode_cbr"
333*4882a593Smuzhiyun #define OPT_DBUS_RC_MODE_VBR            "dbus_rc_mode_vbr"
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun #define OPT_DBUS_ENCORDE_TYPE_H264      "H.264"
336*4882a593Smuzhiyun #define OPT_DBUS_ENCORDE_TYPE_H265      "H.265"
337*4882a593Smuzhiyun #define OPT_DBUS_ENCORDE_TYPE_MJPEG     "MJPEG"
338*4882a593Smuzhiyun #define OPT_DBUS_ENCORDE_TYPE_MPEG4     "MPEG4"
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun #define RT_MAX_CAM_NUM           4
341*4882a593Smuzhiyun #define RT_MAX_SOUND_NUM         3
342*4882a593Smuzhiyun #define RT_MAX_OSD_REGION_NUM    15
343*4882a593Smuzhiyun #define RT_MAX_ROI_REGION_NUM    4
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun #define RT_PARAM_STRING_APPEND(s, s1, s2)  \
346*4882a593Smuzhiyun         s.append(s1).append("=").append(s2).append("\n")
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun #define RT_STRING_LINK_STREAM(s, format, upNodeId, downNodeId)          \
349*4882a593Smuzhiyun         s.append(format).append("_").append(util_to_string(upNodeId))   \
350*4882a593Smuzhiyun         .append("_").append(util_to_string(downNodeId))
351*4882a593Smuzhiyun 
352*4882a593Smuzhiyun #define RT_NODE_CONFIG_STRING_APPEND(s, key, value) \
353*4882a593Smuzhiyun         s.append("\"").append(key).append("\"")     \
354*4882a593Smuzhiyun         .append(" : ").append("\"").append(value).append("\",\n")
355*4882a593Smuzhiyun 
356*4882a593Smuzhiyun #define RT_NODE_CONFIG_NUMBER_APPEND(s, key, value) \
357*4882a593Smuzhiyun         s.append("\"").append(key).append("\"")     \
358*4882a593Smuzhiyun         .append(" : ").append(util_to_string(value)).append(",\n")
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun #define RT_NODE_CONFIG_STRING_LAST_APPEND(s, key, value) \
361*4882a593Smuzhiyun         s.append("\"").append(key).append("\"")          \
362*4882a593Smuzhiyun         .append(" : ").append("\"").append(value).append("\"\n")
363*4882a593Smuzhiyun 
364*4882a593Smuzhiyun #define RT_NODE_CONFIG_NUMBER_LAST_APPEND(s, key, value) \
365*4882a593Smuzhiyun         s.append("\"").append(key).append("\"")          \
366*4882a593Smuzhiyun         .append(" : ").append(util_to_string(value)).append("\n")
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun #define RT_NODE_TAG_APPEND(s, id) \
369*4882a593Smuzhiyun         s.append("\"").append(KEY_ROOT_NODE_ID).append(util_to_string(id)).append("\": {\n")
370*4882a593Smuzhiyun 
371*4882a593Smuzhiyun #define RT_PIPE_TAG_APPEND(s, id) \
372*4882a593Smuzhiyun         s.append("\"").append(KEY_ROOT_PIPE_ID).append(util_to_string(id)).append("\": {\n")
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun #define RT_NODE_OPTS_APPEND(s) \
375*4882a593Smuzhiyun         s.append("\"").append(KEY_ROOT_NODE_OPTS).append("\": {\n")
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun #define RT_STREAM_OPTS_APPEND(s) \
378*4882a593Smuzhiyun         s.append("\"").append(KEY_ROOT_STREAM_OPTS).append("\": {\n")
379*4882a593Smuzhiyun 
380*4882a593Smuzhiyun #define RT_TAG_END(s) \
381*4882a593Smuzhiyun         s.append("},\n")
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun #define RT_TAG_LAST_END(s) \
384*4882a593Smuzhiyun         s.append("}\n")
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun typedef enum _RTStreamId {
387*4882a593Smuzhiyun     RT_STREAM_ID_MAIN = 0,
388*4882a593Smuzhiyun     RT_STREAM_ID_2ND,
389*4882a593Smuzhiyun     RT_STREAM_ID_3RD,
390*4882a593Smuzhiyun     RT_STREAM_ID_4TH,
391*4882a593Smuzhiyun } RTStreamId;
392*4882a593Smuzhiyun 
393*4882a593Smuzhiyun typedef enum _RTStreamType {
394*4882a593Smuzhiyun     RT_STM_TYPE_UNKNOW,
395*4882a593Smuzhiyun     RT_STM_TYPE_VIDEO,
396*4882a593Smuzhiyun     RT_STM_TYPE_AUDIO,
397*4882a593Smuzhiyun     RT_STM_TYPE_SUBTI,
398*4882a593Smuzhiyun     RT_STM_TYPE_IMAGE,
399*4882a593Smuzhiyun     RT_STM_TYPE_GENERAL,
400*4882a593Smuzhiyun     RT_STM_TYPE_MAX,
401*4882a593Smuzhiyun } RTStreamType;
402*4882a593Smuzhiyun 
403*4882a593Smuzhiyun typedef enum _RTNodeGateMode {
404*4882a593Smuzhiyun     RT_NODE_GATE_NORMAL = 0,
405*4882a593Smuzhiyun     RT_NODE_GATE_AUTO,
406*4882a593Smuzhiyun     RT_NODE_GATE_DELAYOPEN,
407*4882a593Smuzhiyun     RT_NODE_GATE_MAX,
408*4882a593Smuzhiyun } RTNodeGateMode;
409*4882a593Smuzhiyun 
410*4882a593Smuzhiyun #endif   // SRC_RT_TASK_APP_GRAPH_RTNODECOMMON_H
411