Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
video_config_i.h
1//
2// Agora Media SDK
3//
4// Created by Rao Qi in 2019-05.
5// Copyright (c) 2019 Agora IO. All rights reserved.
6//
7#pragma once
8
9#include <cstdint>
10#include <sstream>
11#include <string>
12
13#include "AgoraBase.h"
14#include "AgoraOptional.h"
15
16#if defined(WEBRTC_WIN)
17#define NEW_LINE "\r\n"
18#else
19#define NEW_LINE "\n"
20#endif
21
22namespace agora {
23namespace rtc {
24
26 public:
27 // do NOT add any default value here
30 void SetAll(const VideoConfigurationEx& change) {
31#define SET_FROM(X) SetFrom(&X, change.X)
32
33 SET_FROM(codec_type);
34 SET_FROM(h265_screen_enable);
35 SET_FROM(frame_width);
36 SET_FROM(frame_height);
37 SET_FROM(frame_rate);
38 SET_FROM(start_bitrate);
39 SET_FROM(target_bitrate);
40 SET_FROM(min_bitrate);
41 SET_FROM(max_bitrate);
42 SET_FROM(actual_max_bitrate);
43 SET_FROM(orientation_mode);
46 SET_FROM(number_of_bframe_temporal_layers);
47 SET_FROM(sps_data);
48 SET_FROM(pps_data);
49 SET_FROM(h264_profile);
50 SET_FROM(adaptive_op_mode);
52 SET_FROM(flexible_mode);
53 SET_FROM(interlayer_pred);
54 SET_FROM(num_of_encoder_cores);
55 SET_FROM(degradation_preference);
56 SET_FROM(fps_down_step);
57 SET_FROM(fps_up_step);
58 SET_FROM(vqc_version);
59 SET_FROM(vqc_force_use_version);
61 //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
62 SET_FROM(vqc_quick_adaptNetwork);
63 SET_FROM(vqc_min_framerate);
67 SET_FROM(vqc_qp_adjust);
68 SET_FROM(vqc_ios_h265_adjust);
69 SET_FROM(vqc_res_min_width);
70 SET_FROM(vqc_res_min_height);
71 SET_FROM(min_qp);
72 SET_FROM(max_qp);
73 SET_FROM(frame_max_size);
74 SET_FROM(fec_fix_rate);
76 SET_FROM(fec_method);
77 SET_FROM(enable_pvc);
79 SET_FROM(enable_pvc_verify);
80 SET_FROM(enable_sr_verify);
81 SET_FROM(sr_verify_type);
82 SET_FROM(color_space_enable);
83 SET_FROM(videoFullrange);
84 SET_FROM(matrixCoefficients);
85 SET_FROM(enable_sr);
86 SET_FROM(sr_type);
87 SET_FROM(save_encode_bitrate);
90
91 SET_FROM(complexity);
92 SET_FROM(denoising_on);
93 SET_FROM(automatic_resize_on);
94 SET_FROM(frame_dropping_on);
95 SET_FROM(has_intra_request);
96 SET_FROM(key_frame_interval);
101 SET_FROM(bitrate_adjust_ratio);
102 SET_FROM(minbitrate_ratio);
104 SET_FROM(h264_qp_thresholds_low);
105 SET_FROM(h264_qp_thresholds_high);
106 SET_FROM(dec_mosreport);
107 SET_FROM(vqa_model_target_fps);
108 SET_FROM(reset_bitrate_ratio);
109 SET_FROM(reset_framerate_ratio);
110 SET_FROM(enable_hw_decoder);
112 SET_FROM(hw_decoder_provider);
113 SET_FROM(decoder_thread_num);
114 SET_FROM(max_hwdec_cosessions);
116 SET_FROM(enable_hw_encoder);
117 SET_FROM(hw_encoder_provider);
120 SET_FROM(hwenc_blacklist);
121 SET_FROM(hwdec_blacklist);
122 SET_FROM(av_enc_codec_type);
123 SET_FROM(av_enc_common_quality);
126 SET_FROM(enable_video_qoe_assess);
127 SET_FROM(h264_hw_min_res_level);
128 SET_FROM(av_enc_video_max_slices);
131 SET_FROM(video_encoder_rc_scene);
134 SET_FROM(vp8_enc_switch);
135 SET_FROM(av1_dec_enable);
136 SET_FROM(h265_dec_enable);
137 SET_FROM(av1_camera_enable);
138 SET_FROM(av1_screen_enable);
139 SET_FROM(av1_feedback_enable);
140 SET_FROM(enc_scc_enable);
144 SET_FROM(minscore_for_swh265enc);
145 SET_FROM(max_hwenc_cosessions);
146 SET_FROM(min_enc_level);
147 SET_FROM(wz265_dec_enable);
148 SET_FROM(vcm_info_event_enable);
149
150 SET_FROM(enable_video_vpr);
151 SET_FROM(video_vpr_init_size);
152 SET_FROM(video_vpr_max_size);
155 SET_FROM(video_vpr_method);
156 SET_FROM(video_vpr_adaptive_thres);
157 SET_FROM(retrans_detect_enable);
158 SET_FROM(use_sent_ts_enable);
160 SET_FROM(video_rotation);
161 SET_FROM(scale_type);
178 SET_FROM(av_dec_output_byte_frame);
180 SET_FROM(av_enc_google_enable);
181 SET_FROM(av_dec_google_enable);
187 SET_FROM(av_hw_dec_skip_by_name);
190 SET_FROM(av_enc_hw_exceptions);
191
192 SET_FROM(av_enc_video_use_a264);
195 SET_FROM(av_enc_video_enable_roi);
196 SET_FROM(roi_max_qp);
197 SET_FROM(roi_qp_offset);
198 SET_FROM(av_enc_vmaf_calc);
199 SET_FROM(av_enc_profiling);
200 SET_FROM(av_enc_param_config);
202 SET_FROM(video_quality_guarantee);
205
206 SET_FROM(enable_iptos);
207
211 SET_FROM(bFrames);
212 SET_FROM(enable_bframe);
213 SET_FROM(enable_bframe_h265);
214 SET_FROM(bitrate_ceiling_ratio);
215 SET_FROM(video_skip_enable);
216 SET_FROM(av_enc_new_complexity);
219 SET_FROM(key_force_device_score);
221 SET_FROM(use_single_slice_parser);
222 SET_FROM(enable_parser_reject);
223
224 SET_FROM(av_enc_send_sei_alpha);
227 SET_FROM(av_enc_encode_alpha);
230 SET_FROM(fake_enc_error_code);
232
234 SET_FROM(fps_est_window_size_ms);
247 SET_FROM(feedback_mode);
254#undef SET_FROM
255 }
256
257 bool operator==(const VideoConfigurationEx& o) const {
258#define BEGIN_COMPARE() bool b = true
259#define ADD_COMPARE(X) b = (b && (X == o.X))
260#define END_COMPARE()
261
262 BEGIN_COMPARE();
263 ADD_COMPARE(codec_type);
264 ADD_COMPARE(h265_screen_enable);
265 ADD_COMPARE(frame_width);
266 ADD_COMPARE(frame_height);
267 ADD_COMPARE(frame_rate);
268 ADD_COMPARE(start_bitrate);
269 ADD_COMPARE(target_bitrate);
270 ADD_COMPARE(min_bitrate);
271 ADD_COMPARE(orientation_mode);
272 ADD_COMPARE(number_of_temporal_layers);
274 ADD_COMPARE(number_of_bframe_temporal_layers);
275 ADD_COMPARE(sps_data);
276 ADD_COMPARE(pps_data);
277 ADD_COMPARE(h264_profile);
278 ADD_COMPARE(adaptive_op_mode);
279 ADD_COMPARE(number_of_spatial_layers);
280 ADD_COMPARE(flexible_mode);
281 ADD_COMPARE(interlayer_pred);
282 ADD_COMPARE(num_of_encoder_cores);
283 ADD_COMPARE(degradation_preference);
284 ADD_COMPARE(fps_down_step);
285 ADD_COMPARE(fps_up_step);
286 ADD_COMPARE(vqc_version);
287 ADD_COMPARE(vqc_force_use_version);
288 ADD_COMPARE(overuse_detector_version);
289 //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
290 ADD_COMPARE(vqc_quick_adaptNetwork);
291 ADD_COMPARE(vqc_min_framerate);
292 ADD_COMPARE(vqc_settings_by_resolution);
295 ADD_COMPARE(vqc_qp_adjust);
296 ADD_COMPARE(vqc_ios_h265_adjust);
297 ADD_COMPARE(vqc_res_min_width);
298 ADD_COMPARE(vqc_res_min_height);
299 ADD_COMPARE(min_qp);
300 ADD_COMPARE(max_qp);
301 ADD_COMPARE(frame_max_size);
302 ADD_COMPARE(fec_fix_rate);
303 ADD_COMPARE(quick_response_intra_request);
304 ADD_COMPARE(fec_method);
305 ADD_COMPARE(enable_pvc);
306 ADD_COMPARE(pvc_max_support_resolution);
307 ADD_COMPARE(enable_pvc_verify);
308 ADD_COMPARE(enable_sr_verify);
309 ADD_COMPARE(sr_verify_type);
310 ADD_COMPARE(enable_sr);
311 ADD_COMPARE(sr_type);
312 ADD_COMPARE(save_encode_bitrate);
314 ADD_COMPARE(save_encode_bitrate_params);
315
316 ADD_COMPARE(complexity);
317 ADD_COMPARE(denoising_on);
318 ADD_COMPARE(automatic_resize_on);
319 ADD_COMPARE(frame_dropping_on);
320 ADD_COMPARE(has_intra_request);
321 ADD_COMPARE(key_frame_interval);
322 ADD_COMPARE(entropy_coding_mode_flag);
323 ADD_COMPARE(loop_filter_disable_idc);
324 ADD_COMPARE(background_detection_on);
326 ADD_COMPARE(bitrate_adjust_ratio);
327 ADD_COMPARE(minbitrate_ratio);
329 ADD_COMPARE(h264_qp_thresholds_low);
330 ADD_COMPARE(h264_qp_thresholds_high);
331 ADD_COMPARE(dec_mosreport);
332 ADD_COMPARE(vqa_model_target_fps);
333 ADD_COMPARE(reset_bitrate_ratio);
334 ADD_COMPARE(reset_framerate_ratio);
335 ADD_COMPARE(enable_hw_decoder);
336 ADD_COMPARE(enable_background_hw_decode);
337 ADD_COMPARE(hw_decoder_provider);
338 ADD_COMPARE(decoder_thread_num);
339 ADD_COMPARE(max_hwdec_cosessions);
340 ADD_COMPARE(low_stream_enable_hw_encoder);
341 ADD_COMPARE(enable_hw_encoder);
342 ADD_COMPARE(hw_encoder_provider);
343 ADD_COMPARE(av_enc_codec_type);
344 ADD_COMPARE(av_enc_common_quality);
346 ADD_COMPARE(video_render_d3d9_texture);
349 ADD_COMPARE(video_render_vsync_switch);
350 ADD_COMPARE(video_force_texture_to_i420);
355 ADD_COMPARE(enable_video_qoe_assess);
356 ADD_COMPARE(h264_hw_min_res_level);
357 ADD_COMPARE(av_enc_video_max_slices);
358 ADD_COMPARE(video_encoder_rc_limit_value);
360 ADD_COMPARE(video_encoder_rc_scene);
362 ADD_COMPARE(av_sw_enc_dump_frame_info);
363 ADD_COMPARE(vp8_enc_switch);
364 ADD_COMPARE(h265_dec_enable);
365 ADD_COMPARE(av1_dec_enable);
366 ADD_COMPARE(av1_camera_enable);
367 ADD_COMPARE(av1_feedback_enable);
368 ADD_COMPARE(av1_screen_enable);
369 ADD_COMPARE(enc_scc_enable);
372 ADD_COMPARE(color_space_enable);
373 ADD_COMPARE(videoFullrange);
374 ADD_COMPARE(matrixCoefficients);
375 ADD_COMPARE(vcm_info_event_enable);
376
377 ADD_COMPARE(min_enc_level);
378 ADD_COMPARE(minscore_for_swh265enc);
379 ADD_COMPARE(max_hwenc_cosessions);
380 ADD_COMPARE(default_enable_hwenc_win32);
382 ADD_COMPARE(hwenc_blacklist);
383 ADD_COMPARE(hwdec_blacklist);
385 ADD_COMPARE(wz265_dec_enable);
386
387 ADD_COMPARE(enable_video_vpr);
388 ADD_COMPARE(video_vpr_init_size);
389 ADD_COMPARE(video_vpr_max_size);
390 ADD_COMPARE(video_vpr_frozen_ms_thres);
391 ADD_COMPARE(video_vpr_frozen_rate_thres);
392 ADD_COMPARE(video_vpr_method);
393 ADD_COMPARE(video_vpr_adaptive_thres);
394 ADD_COMPARE(av_enc_intra_key_interval);
395 ADD_COMPARE(key_force_device_score);
397 ADD_COMPARE(retrans_detect_enable);
398 ADD_COMPARE(use_sent_ts_enable);
400 ADD_COMPARE(video_rotation);
401 ADD_COMPARE(scale_type);
402 ADD_COMPARE(av_enc_video_use_a264);
403 ADD_COMPARE(av_enc_video_qp_parser_skip);
404 ADD_COMPARE(video_clarity_analysis_flag);
405 ADD_COMPARE(av_enc_video_enable_roi);
406 ADD_COMPARE(roi_max_qp);
407 ADD_COMPARE(roi_qp_offset);
408 ADD_COMPARE(av_enc_vmaf_calc);
409 ADD_COMPARE(av_enc_profiling);
410 ADD_COMPARE(av_enc_param_config);
412 ADD_COMPARE(video_quality_guarantee);
413 ADD_COMPARE(av_enc_advanced_param_config);
415 ADD_COMPARE(av_enc_video_width_alignment);
419 ADD_COMPARE(av_enc_video_force_alignment);
422 ADD_COMPARE(av_dec_texture_copy_enable);
423 ADD_COMPARE(av_dec_output_byte_frame);
424 ADD_COMPARE(av_dec_output_10bit_frame);
425 ADD_COMPARE(av_enc_google_enable);
426 ADD_COMPARE(av_dec_google_enable);
427 ADD_COMPARE(av_dec_google_dav1d_enable);
430
431 ADD_COMPARE(enable_iptos);
432
435 ADD_COMPARE(min_encode_keyframe_interval);
436 ADD_COMPARE(bFrames);
437 ADD_COMPARE(enable_bframe);
438 ADD_COMPARE(enable_bframe_h265);
439 ADD_COMPARE(video_skip_enable);
440 ADD_COMPARE(av_enc_new_complexity);
441 ADD_COMPARE(av_enc_default_complexity);
442 ADD_COMPARE(use_single_slice_parser);
443 ADD_COMPARE(av_enc_video_hwenc_config);
444 ADD_COMPARE(av_dec_video_hwdec_config);
445 ADD_COMPARE(av_hw_dec_skip_by_name);
446 ADD_COMPARE(av_enc_hw_hevc_exceptions);
447 ADD_COMPARE(av_dec_hw_hevc_exceptions);
448 ADD_COMPARE(av_enc_hw_exceptions);
449 ADD_COMPARE(enable_parser_reject);
451
452 ADD_COMPARE(av_enc_send_sei_alpha);
453 ADD_COMPARE(av_enc_alpha_data_codec_type);
454 ADD_COMPARE(av_enc_alpha_data_scale_mode);
455 ADD_COMPARE(av_enc_encode_alpha);
458 ADD_COMPARE(fake_enc_error_code);
460 ADD_COMPARE(fps_est_window_size_ms);
461 ADD_COMPARE(default_enable_hw_encoder);
463 ADD_COMPARE(frame_glitching_detect_level);
465 ADD_COMPARE(enable_follow_major_stream);
467 ADD_COMPARE(enable_performance_gating);
471 ADD_COMPARE(max_all_intra_encode_time);
473 ADD_COMPARE(feedback_mode);
474 ADD_COMPARE(response_quick_intra_request);
476 ADD_COMPARE(minimum_amf_version_require);
477 ADD_COMPARE(vtenc_default_pixel_format);
480 END_COMPARE();
481
482#undef BEGIN_COMPARE
483#undef ADD_COMPARE
484#undef END_COMPARE
485 return b;
486 }
487
488 bool operator!=(const VideoConfigurationEx& o) const { return !(*this == o); }
489
490 std::string ToString() const {
491#define ADD_STRING(X) ost << ToStringIfSet(#X, X)
492
493 std::ostringstream ost;
494 ADD_STRING(codec_type);
495 ADD_STRING(h265_screen_enable);
496 ADD_STRING(frame_width);
497 ADD_STRING(frame_height);
498 ADD_STRING(frame_rate);
499 ADD_STRING(start_bitrate);
500 ADD_STRING(target_bitrate);
501 ADD_STRING(min_bitrate);
502 ADD_STRING(max_bitrate);
503 ADD_STRING(actual_max_bitrate);
504 ADD_STRING(orientation_mode);
505 ADD_STRING(number_of_temporal_layers);
507 ADD_STRING(number_of_bframe_temporal_layers);
508 ADD_STRING(sps_data);
509 ADD_STRING(pps_data);
510 ADD_STRING(h264_profile);
511 ADD_STRING(adaptive_op_mode);
512 ADD_STRING(number_of_spatial_layers);
513 ADD_STRING(flexible_mode);
514 ADD_STRING(interlayer_pred);
515 ADD_STRING(num_of_encoder_cores);
516 ADD_STRING(degradation_preference);
517 ADD_STRING(fps_down_step);
518 ADD_STRING(fps_up_step);
519 ADD_STRING(vqc_version);
520 ADD_STRING(vqc_force_use_version);
521 ADD_STRING(overuse_detector_version);
522 //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
523 ADD_STRING(vqc_quick_adaptNetwork);
524 ADD_STRING(vqc_min_framerate);
525 ADD_STRING(vqc_settings_by_resolution);
528 ADD_STRING(vqc_qp_adjust);
529 ADD_STRING(vqc_ios_h265_adjust);
530 ADD_STRING(vqc_res_min_width);
531 ADD_STRING(vqc_res_min_height);
532 ADD_STRING(min_qp);
533 ADD_STRING(max_qp);
534 ADD_STRING(frame_max_size);
535 ADD_STRING(fec_fix_rate);
537 ADD_STRING(fec_method);
538 ADD_STRING(enable_pvc);
539 ADD_STRING(pvc_max_support_resolution);
540 ADD_STRING(enable_pvc_verify);
541 ADD_STRING(enable_sr_verify);
542 ADD_STRING(sr_verify_type);
543 ADD_STRING(enable_sr);
544 ADD_STRING(sr_type);
545
546 ADD_STRING(complexity);
547 ADD_STRING(denoising_on);
548 ADD_STRING(automatic_resize_on);
549 ADD_STRING(frame_dropping_on);
550 ADD_STRING(has_intra_request);
551 ADD_STRING(key_frame_interval);
552 ADD_STRING(entropy_coding_mode_flag);
553 ADD_STRING(loop_filter_disable_idc);
554 ADD_STRING(background_detection_on);
556 ADD_STRING(bitrate_adjust_ratio);
557 ADD_STRING(minbitrate_ratio);
559 ADD_STRING(h264_qp_thresholds_low);
560 ADD_STRING(h264_qp_thresholds_high);
561 ADD_STRING(dec_mosreport);
562 ADD_STRING(vqa_model_target_fps);
563 ADD_STRING(reset_bitrate_ratio);
564 ADD_STRING(reset_framerate_ratio);
565 ADD_STRING(enable_hw_decoder);
566 ADD_STRING(enable_background_hw_decode);
567 ADD_STRING(hw_decoder_provider);
568 ADD_STRING(decoder_thread_num);
569 ADD_STRING(max_hwdec_cosessions);
571 ADD_STRING(enable_hw_encoder);
572 ADD_STRING(hw_encoder_provider);
573 ADD_STRING(av_enc_codec_type);
574 ADD_STRING(av_enc_common_quality);
577 ADD_STRING(enable_video_qoe_assess);
578 ADD_STRING(h264_hw_min_res_level);
579 ADD_STRING(av_enc_video_max_slices);
582 ADD_STRING(video_encoder_rc_scene);
584 ADD_STRING(av_sw_enc_dump_frame_info);
585 ADD_STRING(vp8_enc_switch);
586 ADD_STRING(h265_dec_enable);
587 ADD_STRING(av1_dec_enable);
588 ADD_STRING(av1_camera_enable);
589 ADD_STRING(av1_feedback_enable);
590 ADD_STRING(av1_screen_enable);
591 ADD_STRING(enc_scc_enable);
594 ADD_STRING(save_encode_bitrate);
596 ADD_STRING(save_encode_bitrate_params);
597 ADD_STRING(vcm_info_event_enable);
598
599 ADD_STRING(min_enc_level);
600 ADD_STRING(minscore_for_swh265enc);
601 ADD_STRING(max_hwenc_cosessions);
602 ADD_STRING(default_enable_hwenc_win32);
604 ADD_STRING(hwenc_blacklist);
605 ADD_STRING(hwdec_blacklist);
607
608 ADD_STRING(wz265_dec_enable);
609
610 ADD_STRING(color_space_enable);
611 ADD_STRING(videoFullrange);
612 ADD_STRING(matrixCoefficients);
613
614 ADD_STRING(enable_video_vpr);
615 ADD_STRING(video_vpr_init_size);
616 ADD_STRING(video_vpr_max_size);
617 ADD_STRING(video_vpr_frozen_ms_thres);
618 ADD_STRING(video_vpr_frozen_rate_thres);
619 ADD_STRING(video_vpr_method);
620 ADD_STRING(video_vpr_adaptive_thres);
621 ADD_STRING(retrans_detect_enable);
622 ADD_STRING(use_sent_ts_enable);
624 ADD_STRING(video_rotation);
625 ADD_STRING(scale_type);
626 ADD_STRING(video_render_d3d9_texture);
629 ADD_STRING(video_render_vsync_switch);
630 ADD_STRING(video_force_texture_to_i420);
641 ADD_STRING(av_dec_texture_copy_enable);
642 ADD_STRING(av_dec_output_byte_frame);
643 ADD_STRING(av_dec_output_10bit_frame);
644 ADD_STRING(av_enc_google_enable);
645 ADD_STRING(av_dec_google_enable);
646 ADD_STRING(av_dec_google_dav1d_enable);
649 ADD_STRING(av_dec_video_hwdec_config);
650 ADD_STRING(av_enc_video_hwenc_config);
651 ADD_STRING(av_hw_dec_skip_by_name);
652 ADD_STRING(av_enc_hw_hevc_exceptions);
653 ADD_STRING(av_dec_hw_hevc_exceptions);
654 ADD_STRING(av_enc_hw_exceptions);
655
656 ADD_STRING(av_enc_video_use_a264);
657 ADD_STRING(av_enc_video_qp_parser_skip);
658 ADD_STRING(video_clarity_analysis_flag);
659 ADD_STRING(av_enc_video_enable_roi);
660 ADD_STRING(roi_max_qp);
661 ADD_STRING(roi_qp_offset);
662 ADD_STRING(av_enc_vmaf_calc);
663 ADD_STRING(av_enc_profiling);
664 ADD_STRING(av_enc_param_config);
666 ADD_STRING(video_quality_guarantee);
669
670 ADD_STRING(enable_iptos);
671
675 ADD_STRING(bFrames);
676 ADD_STRING(enable_bframe);
677 ADD_STRING(enable_bframe_h265);
678 ADD_STRING(video_skip_enable);
679 ADD_STRING(av_enc_new_complexity);
680 ADD_STRING(av_enc_default_complexity);
681 ADD_STRING(av_enc_intra_key_interval);
682 ADD_STRING(key_force_device_score);
684 ADD_STRING(use_single_slice_parser);
685 ADD_STRING(enable_parser_reject);
686
688 ADD_STRING(av_enc_send_sei_alpha);
691 ADD_STRING(av_enc_encode_alpha);
694 ADD_STRING(fake_enc_error_code);
696 ADD_STRING(fps_est_window_size_ms);
697 ADD_STRING(default_enable_hw_encoder);
701 ADD_STRING(enable_follow_major_stream);
703 ADD_STRING(enable_performance_gating);
707 ADD_STRING(max_all_intra_encode_time);
709 ADD_STRING(feedback_mode);
712 ADD_STRING(minimum_amf_version_require);
713 ADD_STRING(vtenc_default_pixel_format);
716#undef ADD_STRING
717 std::string ret = ost.str();
718 auto index = ret.rfind(",");
719 if (index != ret.npos) {
720 ret = ret.substr(0, index);
721 ret += NEW_LINE;
722 }
723
724 return "{" NEW_LINE + ret + "}";
725 }
726
739 Optional<uint8_t> (number_of_bframe_temporal_layers);
754 //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
764 Optional<int> (min_qp);
765 Optional<int> (max_qp);
766 Optional<int> (frame_max_size);
770 //h265 dec enable
772 //av1 dec enable
779 // enc scc enable
781 // vp8 enc switch
783
786
794
796
809 // followings are hw setting
810
811 // h264 quality scaler settings
815
818
819 //vqa
822
823 // Specifies whether or not to enable hw decode.
825 // Specifies whether or not to enable background hw decode.
827 // Specifies hw encode provider.
831
832 // Specifies whether or not to enable hw encode.
834 // Specifies hw encode provider.
836 // Specifies the encoding scheme.
838 // Specifies the quality level for encoding.
839 // 0 Minimum quality, smaller output size.
840 // 100 Maximum quality, larger output size.
842 // Specifies the rate control mode.
843 // eAVEncCommonRateControlMode_CBR,
844 // eAVEncCommonRateControlMode_PeakConstrainedVBR,
845 // eAVEncCommonRateControlMode_UnconstrainedVBR,
846 // eAVEncCommonRateControlMode_Quality,
847 // eAVEncCommonRateControlMode_LowDelayVBR,
848 // eAVEncCommonRateControlMode_GlobalVBR,
849 // eAVEncCommonRateControlMode_GlobalLowDelayVBR
856 // Specifies the min resolution level to use h264 hardware encoder
858 // mac slice num for a264, valid only when > 0
860 // rc limit value, it can limit the fluctuation range of the bitrate
865 // software encoder open dump frame info feature, used to investigate questions
874
884 // for intra request
890
898
900 // whether default use a264;
905 // whether open vmaf calc;
909 // whether open video coding profiling
911 // sw encoder param
913 // video resolution auto adjust param
916 // advanced encoder param
918 // screen sharing content type
941 // whether use single slice parser.
947
959
964
977
978 // minor stream config
980 // Specifies whether or not to enable low stream hw encode.
999
1000 private:
1001 template <class T>
1002 std::string ToStringIfSet(const char* key, const Optional<T>& val) const {
1003 std::string str;
1004 if (val) {
1005 str = key;
1006 str = "\t\"" + str + "\"";
1007 str += ": ";
1008 str += std::to_string(*val);
1009 str += ",";
1010 str += NEW_LINE;
1011 }
1012 return str;
1013 }
1014
1015 std::string ToStringIfSet(const char* key, const Optional<std::string>& val) const {
1016 std::string str;
1017 if (val) {
1018 str = key;
1019 str = "\t\"" + str + "\"";
1020 str += ": \"";
1021 str += val.value();
1022 str += "\",";
1023 str += NEW_LINE;
1024 }
1025 return str;
1026 }
1027
1028 std::string ToStringIfSet(const char* key, const Optional<bool>& val) const {
1029 std::string str;
1030 if (val) {
1031 str = key;
1032 str = "\t\"" + str + "\"";
1033 str += ": ";
1034 str += *val ? "true" : "false";
1035 str += ",";
1036 str += NEW_LINE;
1037 }
1038 return str;
1039 }
1040
1041 template <typename T>
1042 static void SetFrom(Optional<T>* s, const Optional<T>& o) {
1043 if (o) {
1044 *s = o;
1045 }
1046 }
1047};
1048
1049} // namespace rtc
1050} // namespace agora
Definition AgoraOptional.h:413
const T & value() const
Definition AgoraOptional.h:542
Definition AgoraExtensions.h:5
Definition AgoraAtomicOps.h:21
Optional< int > target_bitrate
Definition video_config_i.h:733
Optional< int > sr_type
Definition video_config_i.h:873
Optional< bool > use_single_slice_parser
Definition video_config_i.h:942
Optional< std::string > hw_decoder_provider
Definition video_config_i.h:828
Optional< int > frame_rate
Definition video_config_i.h:731
Optional< int > vqc_force_use_version
Definition video_config_i.h:752
Optional< std::string > pps_data
Definition video_config_i.h:741
Optional< int > h264_qp_thresholds_high
Definition video_config_i.h:814
Optional< bool > enable_smooth_enc_codec_change
Definition video_config_i.h:972
Optional< std::string > simulcast_stream_bitrate_string
Definition video_config_i.h:983
Optional< int > degradation_preference
Definition video_config_i.h:748
Optional< bool > enable_hw_decoder_reset_cropping
Definition video_config_i.h:940
Optional< int > frame_height
Definition video_config_i.h:730
Optional< bool > h265_dec_enable
Definition video_config_i.h:771
Optional< bool > response_quick_intra_request
Definition video_config_i.h:993
Optional< int > fec_method
Definition video_config_i.h:768
Optional< int32_t > video_vpr_adaptive_thres
Definition video_config_i.h:881
Optional< std::string > vqc_settings_by_resolution
Definition video_config_i.h:757
Optional< bool > enable_bframe_h265
Definition video_config_i.h:967
Optional< bool > video_android_capturer_copy_enable
Definition video_config_i.h:897
Optional< bool > enable_hw_encoder_quickly_start
Definition video_config_i.h:969
Optional< bool > save_encode_bitrate_minor_stream
Definition video_config_i.h:949
Optional< bool > has_intra_request
Definition video_config_i.h:801
Optional< bool > enable_minor_stream_codec_follow_major_stream
Definition video_config_i.h:987
Optional< bool > enable_follow_major_stream
Definition video_config_i.h:984
Optional< bool > video_force_texture_to_i420
Definition video_config_i.h:895
Optional< std::string > video_quality_guarantee
Definition video_config_i.h:915
Optional< int > min_bitrate
Definition video_config_i.h:734
Optional< int > h264_profile
Definition video_config_i.h:742
Optional< int > bFrames
Definition video_config_i.h:966
Optional< int32_t > intel_cpu_threshold_mhz
Definition video_config_i.h:853
Optional< int > vqc_min_holdtime_auto_resize_zoomout
Definition video_config_i.h:759
Optional< int > fake_enc_error_code
Definition video_config_i.h:971
Optional< std::string > av_enc_video_hwenc_config
Definition video_config_i.h:924
Optional< int > max_bitrate
Definition video_config_i.h:735
Optional< int > video_switch_soft_decoder_threshold
Definition video_config_i.h:952
Optional< bool > av1_dec_enable
Definition video_config_i.h:773
Optional< bool > video_windows_capture_to_texture
Definition video_config_i.h:896
Optional< int > vqc_res_min_height
Definition video_config_i.h:763
Optional< bool > av_enc_send_sei_alpha
Definition video_config_i.h:960
Optional< bool > vdm_not_override_lua_smallvideo_not_use_hwenc_policy
Definition video_config_i.h:854
Optional< int32_t > key_force_device_score
Definition video_config_i.h:886
Optional< bool > enable_performance_gating
Definition video_config_i.h:986
Optional< int > fec_fix_rate
Definition video_config_i.h:769
Optional< bool > video_skip_enable
Definition video_config_i.h:954
Optional< std::string > minbitrate_ratio
Definition video_config_i.h:808
void SetAll(const VideoConfigurationEx &change)
Definition video_config_i.h:30
Optional< int > av_sw_enc_dump_frame_info
Definition video_config_i.h:866
Optional< int > fps_est_window_size_ms
Definition video_config_i.h:973
Optional< int > num_of_encoder_cores
Definition video_config_i.h:747
Optional< uint8_t > number_of_spatial_layers
Definition video_config_i.h:744
Optional< int32_t > max_all_intra_encode_time
Definition video_config_i.h:990
Optional< bool > enable_video_qoe_assess
Definition video_config_i.h:855
Optional< int > max_hwenc_cosessions
Definition video_config_i.h:788
Optional< bool > video_render_vsync_switch
Definition video_config_i.h:894
Optional< int32_t > video_vpr_frozen_rate_thres
Definition video_config_i.h:879
Optional< bool > enable_change_encoder_profile
Definition video_config_i.h:793
Optional< int32_t > video_vpr_init_size
Definition video_config_i.h:876
Optional< bool > enable_iptos
Definition video_config_i.h:946
Optional< uint32_t > av_enc_codec_type
Definition video_config_i.h:837
Optional< bool > enable_video_vpr
Definition video_config_i.h:875
Optional< int > vtenc_default_pixel_format
Definition video_config_i.h:996
Optional< int > scale_type
Definition video_config_i.h:889
Optional< int32_t > video_vpr_frozen_ms_thres
Definition video_config_i.h:878
Optional< int > sr_verify_type
Definition video_config_i.h:871
Optional< std::string > hwdec_blacklist
Definition video_config_i.h:792
Optional< int > orientation_mode
Definition video_config_i.h:737
Optional< bool > background_detection_on
Definition video_config_i.h:805
Optional< std::string > av_enc_param_config
Definition video_config_i.h:912
Optional< bool > enable_hw_encoder
Definition video_config_i.h:833
Optional< int > major_stream_encoder_thread_num
Definition video_config_i.h:777
Optional< bool > use_sent_ts_enable
Definition video_config_i.h:883
Optional< int32_t > av_enc_hw_hevc_exceptions
Definition video_config_i.h:927
Optional< bool > enable_nvdia_first
Definition video_config_i.h:851
Optional(number_of_bframe_temporal_layers)
Optional< bool > enable_pvc_verify
Definition video_config_i.h:869
Optional< bool > av_enc_video_use_a264
Definition video_config_i.h:901
Optional< int > quick_response_intra_request
Definition video_config_i.h:767
Optional< int > roi_max_qp
Definition video_config_i.h:903
Optional< bool > save_encode_bitrate
Definition video_config_i.h:948
Optional< int > videoFullrange
Definition video_config_i.h:944
Optional< bool > enc_scc_enable
Definition video_config_i.h:780
Optional< bool > automatic_resize_on
Definition video_config_i.h:799
Optional< bool > initial_hw_encoder_quickly_start
Definition video_config_i.h:970
Optional< uint32_t > av_enc_common_quality
Definition video_config_i.h:841
Optional< int > vqc_ios_h265_adjust
Definition video_config_i.h:761
Optional< bool > frame_dropping_on
Definition video_config_i.h:800
Optional< bool > encoder_skip_color_space_override_if_present_enable
Definition video_config_i.h:997
Optional< int32_t > video_vpr_max_size
Definition video_config_i.h:877
Optional< int > video_clarity_analysis_flag
Definition video_config_i.h:907
Optional< bool > color_space_enable
Definition video_config_i.h:943
Optional< int > entropy_coding_mode_flag
Definition video_config_i.h:803
Optional< int32_t > nvdia_cpu_threshold_mhz
Definition video_config_i.h:852
Optional< bool > enable_pvc
Definition video_config_i.h:867
Optional< bool > av_enc_video_force_alignment
Definition video_config_i.h:930
Optional< bool > enable_instant_streaming_mode
Definition video_config_i.h:989
Optional< std::string > save_encode_bitrate_params
Definition video_config_i.h:950
Optional< int > posted_frames_waiting_for_encode
Definition video_config_i.h:806
Optional< int > vqc_version
Definition video_config_i.h:751
Optional< int > vqc_qp_adjust
Definition video_config_i.h:760
Optional< int > video_encoder_rc_scene
Definition video_config_i.h:863
Optional< bool > vp8_enc_switch
Definition video_config_i.h:782
Optional< int > vqc_res_min_width
Definition video_config_i.h:762
Optional< int > interlayer_pred
Definition video_config_i.h:746
Optional< bool > quality_scale_only_on_average_qp
Definition video_config_i.h:812
Optional< int32_t > av_enc_video_height_alignment
Definition video_config_i.h:921
Optional< uint8_t > number_of_temporal_layers
Definition video_config_i.h:738
Optional< int > start_bitrate
Definition video_config_i.h:732
Optional< std::string > hwenc_blacklist
Definition video_config_i.h:791
Optional< bool > av1_feedback_enable
Definition video_config_i.h:775
Optional< bool > default_enable_hw_encoder
Definition video_config_i.h:974
Optional< int32_t > av_dec_hw_hevc_exceptions
Definition video_config_i.h:928
Optional< bool > flexible_mode
Definition video_config_i.h:745
Optional< int32_t > av_enc_video_width_alignment
Definition video_config_i.h:920
Optional< int > vqa_model_target_fps
Definition video_config_i.h:821
Optional< int > use_keyframe_type_from_parser
Definition video_config_i.h:975
Optional< bool > av_enc_profiling
Definition video_config_i.h:910
bool operator==(const VideoConfigurationEx &o) const
Definition video_config_i.h:257
Optional< std::string > video_resolution_auto_adjust_param
Definition video_config_i.h:914
Optional< int > minscore_for_swh265enc
Definition video_config_i.h:787
Optional< bool > av_dec_google_dav1d_enable
Definition video_config_i.h:938
Optional< int32_t > av_enc_video_hdr_width_alignment
Definition video_config_i.h:922
Optional< int32_t > av_enc_video_hdr_height_alignment
Definition video_config_i.h:923
Optional< int > video_encoder_rc_limit_value
Definition video_config_i.h:861
Optional< int > frame_width
Definition video_config_i.h:729
Optional< bool > wz265_dec_enable
Definition video_config_i.h:795
Optional< int > key_frame_interval
Definition video_config_i.h:802
Optional< bool > av_dec_texture_copy_enable
Definition video_config_i.h:933
Optional< int > pvc_max_support_resolution
Definition video_config_i.h:868
Optional< bool > av_enc_encode_alpha
Definition video_config_i.h:963
Optional< int > max_hwdec_cosessions
Definition video_config_i.h:830
Optional< int > dec_mosreport
Definition video_config_i.h:820
Optional< bool > av_enc_new_complexity
Definition video_config_i.h:955
Optional< bool > av_enc_video_enable_dequeue_timewait
Definition video_config_i.h:931
Optional< bool > enable_sr
Definition video_config_i.h:872
Optional< bool > av1_screen_enable
Definition video_config_i.h:776
bool operator!=(const VideoConfigurationEx &o) const
Definition video_config_i.h:488
Optional< bool > vcm_info_event_enable
Definition video_config_i.h:784
Optional< int32_t > video_vpr_method
Definition video_config_i.h:880
Optional< int > roi_qp_offset
Definition video_config_i.h:904
Optional< bool > av_enc_video_adjustment_reset
Definition video_config_i.h:932
Optional< bool > enable_bframe
Definition video_config_i.h:965
Optional< int > vqc_min_holdtime_auto_resize_zoomin
Definition video_config_i.h:758
Optional< int > av_enc_video_max_slices
Definition video_config_i.h:859
Optional< bool > av1_camera_enable
Definition video_config_i.h:774
Optional< std::string > minimum_amf_version_require
Definition video_config_i.h:995
Optional< int > key_frame_interval_intra_request
Definition video_config_i.h:951
Optional< int > encode_failed_fallback_thresh
Definition video_config_i.h:994
Optional< bool > adaptive_op_mode
Definition video_config_i.h:743
Optional< int > fps_up_step
Definition video_config_i.h:750
Optional< uint32_t > hw_encoder_provider
Definition video_config_i.h:835
Optional< std::string > sps_data
Definition video_config_i.h:740
Optional< bool > enable_parser_reject
Definition video_config_i.h:957
Optional< bool > av_enc_google_enable
Definition video_config_i.h:936
Optional< int > minor_stream_encoder_thread_num
Definition video_config_i.h:778
Optional< int > minor_stream_video_encoder_rc_limit_value
Definition video_config_i.h:862
Optional< bool > video_enable_high_definition_strategy
Definition video_config_i.h:899
Optional< int > video_encoder_impair_net_ref_opt
Definition video_config_i.h:864
Optional< bool > enable_sr_verify
Definition video_config_i.h:870
Optional< float > scc_autoframerate_bitrate_ratio
Definition video_config_i.h:991
Optional< int > decoder_thread_num
Definition video_config_i.h:829
Optional< bool > av_enc_video_enable_roi
Definition video_config_i.h:902
Optional< int > actual_max_bitrate
Definition video_config_i.h:736
Optional< int32_t > video_render_buffer_queue_size
Definition video_config_i.h:893
Optional< std::string > bitrate_adjust_ratio
Definition video_config_i.h:807
Optional< int32_t > av_enc_bitrate_adjustment_type
Definition video_config_i.h:887
Optional< int > fps_down_step
Definition video_config_i.h:749
Optional< int > direct_cdn_streaming_h264_profile
Definition video_config_i.h:958
Optional< int > reset_bitrate_ratio
Definition video_config_i.h:816
Optional< float > major_minor_stream_resolution_ratio
Definition video_config_i.h:985
Optional< int32_t > feedback_mode
Definition video_config_i.h:992
Optional< int > intra_request_keyframe_received_timeout_ms
Definition video_config_i.h:998
Optional< int > overuse_detector_version
Definition video_config_i.h:753
Optional< bool > av_dec_output_10bit_frame
Definition video_config_i.h:935
Optional< int32_t > av_enc_screen_sharing_subclass
Definition video_config_i.h:919
Optional< uint8_t > simulcast_stream_number_of_temporal_layers
Definition video_config_i.h:982
Optional< int > h265_screen_enable
Definition video_config_i.h:728
Optional< int > h264_hw_min_res_level
Definition video_config_i.h:857
Optional< int > min_encode_keyframe_interval
Definition video_config_i.h:953
Optional< int > min_enc_level
Definition video_config_i.h:785
Optional< std::string > bitrate_ceiling_ratio
Definition video_config_i.h:968
Optional< int > reset_framerate_ratio
Definition video_config_i.h:817
Optional< bool > default_enable_hwenc_win32
Definition video_config_i.h:789
Optional< bool > vqc_quick_adaptNetwork
Definition video_config_i.h:755
Optional< int > vqc_min_framerate
Definition video_config_i.h:756
Optional< bool > av_dec_google_enable
Definition video_config_i.h:937
Optional< int > av_enc_alpha_data_scale_mode
Definition video_config_i.h:962
Optional< bool > enable_background_hw_decode
Definition video_config_i.h:826
Optional< bool > enable_minor_stream_intra_request
Definition video_config_i.h:979
Optional< int32_t > av_enc_hw_exceptions
Definition video_config_i.h:929
Optional< std::string > av_dec_video_hwdec_config
Definition video_config_i.h:925
Optional< int > loop_filter_disable_idc
Definition video_config_i.h:804
Optional< bool > allow_qsvhevcenc_for_screenshare
Definition video_config_i.h:790
Optional< std::string > av_enc_advanced_param_config
Definition video_config_i.h:917
Optional< int > matrixCoefficients
Definition video_config_i.h:945
Optional< int > av_enc_alpha_data_codec_type
Definition video_config_i.h:961
Optional< bool > video_render_d3d9_texture
Definition video_config_i.h:891
Optional< int32_t > av_enc_intra_key_interval
Definition video_config_i.h:885
Optional< bool > av_enc_vmaf_calc
Definition video_config_i.h:908
Optional< bool > av_dec_output_byte_frame
Definition video_config_i.h:934
Optional< bool > low_stream_enable_hw_encoder
Definition video_config_i.h:981
std::string ToString() const
Definition video_config_i.h:490
Optional< bool > enable_hw_decoder
Definition video_config_i.h:824
Optional< int > av_dec_output_byte_frame_resolution_product_thres
Definition video_config_i.h:939
Optional< int > codec_type
Definition video_config_i.h:727
Optional< int > frame_glitching_detect_level
Definition video_config_i.h:976
Optional< bool > denoising_on
Definition video_config_i.h:798
Optional< bool > enable_simulcast_stream_codec_follow_major_stream
Definition video_config_i.h:988
Optional< int > h264_qp_thresholds_low
Definition video_config_i.h:813
Optional< int > av_enc_video_qp_parser_skip
Definition video_config_i.h:906
Optional< int > av_enc_default_complexity
Definition video_config_i.h:956
Optional< int > complexity
Definition video_config_i.h:797
Optional< bool > retrans_detect_enable
Definition video_config_i.h:882
Optional< uint32_t > av_enc_common_rate_control_mode
Definition video_config_i.h:850
Optional< std::string > av_hw_dec_skip_by_name
Definition video_config_i.h:926
Optional< int32_t > video_render_d3d9_render_mode
Definition video_config_i.h:892
Optional< int > video_rotation
Definition video_config_i.h:888