Agora C++ API Reference for All Platforms
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 
22 namespace agora {
23 namespace rtc {
24 
26  public:
27  // do NOT add any default value here
28  VideoConfigurationEx() = default;
29  ~VideoConfigurationEx() = default;
30  void SetAll(const VideoConfigurationEx& change) {
31 #define SET_FROM(X) SetFrom(&X, change.X)
32 
33  SET_FROM(codec_type);
34  SET_FROM(frame_width);
35  SET_FROM(frame_height);
36  SET_FROM(frame_rate);
37  SET_FROM(start_bitrate);
38  SET_FROM(target_bitrate);
39  SET_FROM(min_bitrate);
40  SET_FROM(max_bitrate);
41  SET_FROM(orientation_mode);
42  SET_FROM(number_of_temporal_layers);
43  SET_FROM(sps_data);
44  SET_FROM(pps_data);
45  SET_FROM(h264_profile);
46  SET_FROM(adaptive_op_mode);
47  SET_FROM(number_of_spatial_layers);
48  SET_FROM(flexible_mode);
49  SET_FROM(interlayer_pred);
50  SET_FROM(num_of_encoder_cores);
51  SET_FROM(degradation_preference);
52  SET_FROM(fps_down_step);
53  SET_FROM(fps_up_step);
54  SET_FROM(vqc_version);
55  //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
56  SET_FROM(vqc_quick_adaptNetwork);
57  SET_FROM(vqc_min_framerate);
60  SET_FROM(vqc_qp_adjust);
61  SET_FROM(vqc_ios_h265_adjust);
62  SET_FROM(fec_method);
63  SET_FROM(dm_wsize);
64  SET_FROM(dmfec_min_level);
65 
66  SET_FROM(complexity);
67  SET_FROM(denoising_on);
68  SET_FROM(automatic_resize_on);
69  SET_FROM(frame_dropping_on);
70  SET_FROM(has_intra_request);
71  SET_FROM(key_frame_interval);
72  SET_FROM(entropy_coding_mode_flag);
73  SET_FROM(loop_filter_disable_idc);
74  SET_FROM(background_detection_on);
76  SET_FROM(bitrate_adjust_ratio);
77  SET_FROM(minbitrate_ratio);
79  SET_FROM(h264_qp_thresholds_low);
80  SET_FROM(h264_qp_thresholds_high);
81  SET_FROM(enable_hw_encoder);
82  SET_FROM(enable_hw_decoder);
83  SET_FROM(hw_encoder_provider);
86  SET_FROM(av_dec_mmcss_class);
87  SET_FROM(av_enc_codec_type);
90  SET_FROM(av_enc_common_buffer_size);
92  SET_FROM(av_enc_common_low_latency);
97  SET_FROM(av_enc_common_quality);
100  SET_FROM(av_enc_common_real_time);
111  SET_FROM(av_dec_video_sw_power_level);
113  SET_FROM(av_enc_input_video_system);
120  SET_FROM(av_enc_video_field_swap);
123  SET_FROM(av_enc_video_header_frames);
124  SET_FROM(av_enc_video_header_hours);
125  SET_FROM(av_enc_video_header_minutes);
126  SET_FROM(av_enc_video_header_seconds);
151  SET_FROM(av_enc_video_source_is_bw);
152  SET_FROM(av_enc_mpv_add_seq_end_code);
154  SET_FROM(av_enc_mpv_frame_field_mode);
160  SET_FROM(av_enc_mpvgop_open);
161  SET_FROM(av_enc_mpvgops_in_seq);
162  SET_FROM(av_enc_mpvgop_size);
164  SET_FROM(av_enc_mpv_intra_vlc_table);
165  SET_FROM(av_enc_mpv_level);
166  SET_FROM(av_enc_mpv_profile);
167  SET_FROM(av_enc_mpvq_scale_type);
172  SET_FROM(av_enc_mpv_scan_pattern);
173  SET_FROM(av_enc_mpv_scene_detection);
178  SET_FROM(h264_hw_min_res_level);
179  SET_FROM(av_enc_video_max_slices);
180 
181  SET_FROM(enable_video_vpr);
182  SET_FROM(video_vpr_init_size);
183  SET_FROM(video_vpr_max_size);
184  SET_FROM(video_vpr_frozen_ms_thres);
185  SET_FROM(video_vpr_frozen_rate_thres);
186 
187  SET_FROM(retrans_detect_enable);
188  SET_FROM(video_rotation);
192  SET_FROM(av_dec_output_byte_frame);
193 
194  SET_FROM(av_enc_video_use_a264);
195  SET_FROM(av_enc_vmaf_calc);
196  SET_FROM(use_single_slice_parser);
197 #undef SET_FROM
198  }
199 
200  bool operator==(const VideoConfigurationEx& o) const {
201 #define BEGIN_COMPARE() bool b = true
202 #define ADD_COMPARE(X) b = (b && (X == o.X))
203 #define END_COMPARE()
204 
205  BEGIN_COMPARE();
206  ADD_COMPARE(codec_type);
207  ADD_COMPARE(frame_width);
208  ADD_COMPARE(frame_height);
209  ADD_COMPARE(frame_rate);
210  ADD_COMPARE(start_bitrate);
211  ADD_COMPARE(target_bitrate);
212  ADD_COMPARE(min_bitrate);
213  ADD_COMPARE(orientation_mode);
214  ADD_COMPARE(number_of_temporal_layers);
215  ADD_COMPARE(sps_data);
216  ADD_COMPARE(pps_data);
217  ADD_COMPARE(h264_profile);
218  ADD_COMPARE(adaptive_op_mode);
219  ADD_COMPARE(number_of_spatial_layers);
220  ADD_COMPARE(flexible_mode);
221  ADD_COMPARE(interlayer_pred);
222  ADD_COMPARE(num_of_encoder_cores);
223  ADD_COMPARE(degradation_preference);
224  ADD_COMPARE(fps_down_step);
225  ADD_COMPARE(fps_up_step);
226  ADD_COMPARE(vqc_version);
227  //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
228  ADD_COMPARE(vqc_quick_adaptNetwork);
229  ADD_COMPARE(vqc_min_framerate);
232  ADD_COMPARE(vqc_qp_adjust);
233  ADD_COMPARE(vqc_ios_h265_adjust);
234  ADD_COMPARE(fec_method);
235  ADD_COMPARE(dm_wsize);
236  ADD_COMPARE(dmfec_min_level);
237 
238  ADD_COMPARE(complexity);
239  ADD_COMPARE(denoising_on);
240  ADD_COMPARE(automatic_resize_on);
241  ADD_COMPARE(frame_dropping_on);
242  ADD_COMPARE(has_intra_request);
243  ADD_COMPARE(key_frame_interval);
244  ADD_COMPARE(entropy_coding_mode_flag);
245  ADD_COMPARE(loop_filter_disable_idc);
246  ADD_COMPARE(background_detection_on);
248  ADD_COMPARE(bitrate_adjust_ratio);
249  ADD_COMPARE(minbitrate_ratio);
251  ADD_COMPARE(h264_qp_thresholds_low);
252  ADD_COMPARE(h264_qp_thresholds_high);
253  ADD_COMPARE(enable_hw_encoder);
254  ADD_COMPARE(enable_hw_decoder);
255  ADD_COMPARE(hw_encoder_provider);
256  ADD_COMPARE(av_dec_common_input_format);
257  ADD_COMPARE(av_dec_common_output_format);
258  ADD_COMPARE(av_dec_mmcss_class);
259  ADD_COMPARE(av_enc_codec_type);
260  ADD_COMPARE(av_enc_common_buffer_in_level);
261  ADD_COMPARE(av_enc_common_buffer_out_level);
262  ADD_COMPARE(av_enc_common_buffer_size);
263  ADD_COMPARE(av_enc_common_format_constraint);
264  ADD_COMPARE(av_enc_common_low_latency);
265  ADD_COMPARE(av_enc_common_max_bit_rate);
266  ADD_COMPARE(av_enc_common_mean_bit_rate);
268  ADD_COMPARE(av_enc_common_min_bit_rate);
269  ADD_COMPARE(av_enc_common_quality);
270  ADD_COMPARE(av_enc_common_quality_vs_speed);
271  ADD_COMPARE(av_enc_common_rate_control_mode);
272  ADD_COMPARE(av_enc_common_real_time);
274  ADD_COMPARE(av_enc_mux_output_stream_type);
275  ADD_COMPARE(av_dec_video_acceleration_h264);
276  ADD_COMPARE(av_dec_video_acceleration_mpeg2);
277  ADD_COMPARE(av_dec_video_acceleration_vc1);
279  ADD_COMPARE(av_dec_video_fast_decode_mode);
280  ADD_COMPARE(av_dec_video_input_scan_type);
281  ADD_COMPARE(av_dec_video_pixel_aspect_ratio);
283  ADD_COMPARE(av_dec_video_sw_power_level);
285  ADD_COMPARE(av_enc_input_video_system);
289  ADD_COMPARE(av_enc_video_display_dimension);
290  ADD_COMPARE(av_enc_video_encode_dimension);
292  ADD_COMPARE(av_enc_video_field_swap);
294  ADD_COMPARE(av_enc_video_header_drop_frame);
295  ADD_COMPARE(av_enc_video_header_frames);
296  ADD_COMPARE(av_enc_video_header_hours);
297  ADD_COMPARE(av_enc_video_header_minutes);
298  ADD_COMPARE(av_enc_video_header_seconds);
318  ADD_COMPARE(av_enc_video_output_frame_rate);
320  ADD_COMPARE(av_enc_video_output_scan_type);
321  ADD_COMPARE(av_enc_video_pixel_aspect_ratio);
323  ADD_COMPARE(av_enc_video_source_is_bw);
324  ADD_COMPARE(av_enc_mpv_add_seq_end_code);
326  ADD_COMPARE(av_enc_mpv_frame_field_mode);
332  ADD_COMPARE(av_enc_mpvgop_open);
333  ADD_COMPARE(av_enc_mpvgops_in_seq);
334  ADD_COMPARE(av_enc_mpvgop_size);
335  ADD_COMPARE(av_enc_mpv_intra_dc_precision);
336  ADD_COMPARE(av_enc_mpv_intra_vlc_table);
337  ADD_COMPARE(av_enc_mpv_level);
338  ADD_COMPARE(av_enc_mpv_profile);
339  ADD_COMPARE(av_enc_mpvq_scale_type);
342  ADD_COMPARE(av_enc_mpv_quant_matrix_intra);
344  ADD_COMPARE(av_enc_mpv_scan_pattern);
345  ADD_COMPARE(av_enc_mpv_scene_detection);
349  ADD_COMPARE(enable_video_freeze_diagnose);
350  ADD_COMPARE(h264_hw_min_res_level);
351  ADD_COMPARE(av_enc_video_max_slices);
352 
353  ADD_COMPARE(enable_video_vpr);
354  ADD_COMPARE(video_vpr_init_size);
355  ADD_COMPARE(video_vpr_max_size);
356  ADD_COMPARE(video_vpr_frozen_ms_thres);
357  ADD_COMPARE(video_vpr_frozen_rate_thres);
358 
359  ADD_COMPARE(retrans_detect_enable);
360  ADD_COMPARE(video_rotation);
361  ADD_COMPARE(av_enc_video_use_a264);
362  ADD_COMPARE(av_enc_vmaf_calc);
363  ADD_COMPARE(use_single_slice_parser);
364  ADD_COMPARE(av_enc_video_width_alignment);
365  ADD_COMPARE(av_enc_video_height_alignment);
366  ADD_COMPARE(av_enc_video_force_alignment);
367  ADD_COMPARE(av_dec_output_byte_frame);
368  END_COMPARE();
369 
370 #undef BEGIN_COMPARE
371 #undef ADD_COMPARE
372 #undef END_COMPARE
373  return b;
374  }
375 
376  bool operator!=(const VideoConfigurationEx& o) const { return !(*this == o); }
377 
378  std::string ToString() const {
379 #define ADD_STRING(X) ost << ToStringIfSet(#X, X)
380 
381  std::ostringstream ost;
382  ADD_STRING(codec_type);
383  ADD_STRING(frame_width);
384  ADD_STRING(frame_height);
385  ADD_STRING(frame_rate);
386  ADD_STRING(start_bitrate);
387  ADD_STRING(target_bitrate);
388  ADD_STRING(min_bitrate);
389  ADD_STRING(max_bitrate);
390  ADD_STRING(orientation_mode);
391  ADD_STRING(number_of_temporal_layers);
392  ADD_STRING(sps_data);
393  ADD_STRING(pps_data);
394  ADD_STRING(h264_profile);
395  ADD_STRING(adaptive_op_mode);
396  ADD_STRING(number_of_spatial_layers);
397  ADD_STRING(flexible_mode);
398  ADD_STRING(interlayer_pred);
399  ADD_STRING(num_of_encoder_cores);
400  ADD_STRING(degradation_preference);
401  ADD_STRING(fps_down_step);
402  ADD_STRING(fps_up_step);
403  ADD_STRING(vqc_version);
404  //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
405  ADD_STRING(vqc_quick_adaptNetwork);
406  ADD_STRING(vqc_min_framerate);
409  ADD_STRING(vqc_qp_adjust);
410  ADD_STRING(vqc_ios_h265_adjust);
411  ADD_STRING(fec_method);
412  ADD_STRING(dm_wsize);
413  ADD_STRING(dmfec_min_level);
414 
415  ADD_STRING(complexity);
416  ADD_STRING(denoising_on);
417  ADD_STRING(automatic_resize_on);
418  ADD_STRING(frame_dropping_on);
419  ADD_STRING(has_intra_request);
420  ADD_STRING(key_frame_interval);
421  ADD_STRING(entropy_coding_mode_flag);
422  ADD_STRING(loop_filter_disable_idc);
423  ADD_STRING(background_detection_on);
425  ADD_STRING(bitrate_adjust_ratio);
426  ADD_STRING(minbitrate_ratio);
428  ADD_STRING(h264_qp_thresholds_low);
429  ADD_STRING(h264_qp_thresholds_high);
430  ADD_STRING(enable_hw_encoder);
431  ADD_STRING(enable_hw_decoder);
432  ADD_STRING(hw_encoder_provider);
433  ADD_STRING(av_dec_common_input_format);
434  ADD_STRING(av_dec_common_output_format);
435  ADD_STRING(av_dec_mmcss_class);
436  ADD_STRING(av_enc_codec_type);
437  ADD_STRING(av_enc_common_buffer_in_level);
438  ADD_STRING(av_enc_common_buffer_out_level);
439  ADD_STRING(av_enc_common_buffer_size);
441  ADD_STRING(av_enc_common_low_latency);
442  ADD_STRING(av_enc_common_max_bit_rate);
443  ADD_STRING(av_enc_common_mean_bit_rate);
445  ADD_STRING(av_enc_common_min_bit_rate);
446  ADD_STRING(av_enc_common_quality);
447  ADD_STRING(av_enc_common_quality_vs_speed);
449  ADD_STRING(av_enc_common_real_time);
451  ADD_STRING(av_enc_mux_output_stream_type);
452  ADD_STRING(av_dec_video_acceleration_h264);
454  ADD_STRING(av_dec_video_acceleration_vc1);
456  ADD_STRING(av_dec_video_fast_decode_mode);
457  ADD_STRING(av_dec_video_input_scan_type);
460  ADD_STRING(av_dec_video_sw_power_level);
462  ADD_STRING(av_enc_input_video_system);
466  ADD_STRING(av_enc_video_display_dimension);
467  ADD_STRING(av_enc_video_encode_dimension);
469  ADD_STRING(av_enc_video_field_swap);
471  ADD_STRING(av_enc_video_header_drop_frame);
472  ADD_STRING(av_enc_video_header_frames);
473  ADD_STRING(av_enc_video_header_hours);
474  ADD_STRING(av_enc_video_header_minutes);
475  ADD_STRING(av_enc_video_header_seconds);
495  ADD_STRING(av_enc_video_output_frame_rate);
497  ADD_STRING(av_enc_video_output_scan_type);
500  ADD_STRING(av_enc_video_source_is_bw);
501  ADD_STRING(av_enc_mpv_add_seq_end_code);
503  ADD_STRING(av_enc_mpv_frame_field_mode);
509  ADD_STRING(av_enc_mpvgop_open);
510  ADD_STRING(av_enc_mpvgops_in_seq);
511  ADD_STRING(av_enc_mpvgop_size);
512  ADD_STRING(av_enc_mpv_intra_dc_precision);
513  ADD_STRING(av_enc_mpv_intra_vlc_table);
514  ADD_STRING(av_enc_mpv_level);
515  ADD_STRING(av_enc_mpv_profile);
516  ADD_STRING(av_enc_mpvq_scale_type);
519  ADD_STRING(av_enc_mpv_quant_matrix_intra);
521  ADD_STRING(av_enc_mpv_scan_pattern);
522  ADD_STRING(av_enc_mpv_scene_detection);
526  ADD_STRING(enable_video_freeze_diagnose);
527  ADD_STRING(h264_hw_min_res_level);
528  ADD_STRING(av_enc_video_max_slices);
529 
530  ADD_STRING(enable_video_vpr);
531  ADD_STRING(video_vpr_init_size);
532  ADD_STRING(video_vpr_max_size);
533  ADD_STRING(video_vpr_frozen_ms_thres);
534  ADD_STRING(video_vpr_frozen_rate_thres);
535 
536  ADD_STRING(retrans_detect_enable);
537  ADD_STRING(video_rotation);
538  ADD_STRING(av_enc_video_width_alignment);
539  ADD_STRING(av_enc_video_height_alignment);
540  ADD_STRING(av_enc_video_force_alignment);
541  ADD_STRING(av_dec_output_byte_frame);
542 
543  ADD_STRING(av_enc_video_use_a264);
544  ADD_STRING(av_enc_vmaf_calc);
545  ADD_STRING(use_single_slice_parser);
546 #undef ADD_STRING
547  std::string ret = ost.str();
548  auto index = ret.rfind(",");
549  if (index != ret.npos) {
550  ret = ret.substr(0, index);
551  ret += NEW_LINE;
552  }
553 
554  return "{" NEW_LINE + ret + "}";
555  }
556 
579  //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
589 
602  // followings are hw setting
603 
604  // h264 quality scaler settings
608 
609  // Specifies whether or not to enable hw encode.
611  // Specifies whether or not to enable hw decode.
613  // Specifies hw encode provider.
615  // Specifies the current input format for the decoder.
617  // Specifies the output format for the decoder.
619  // Specifies the Multimedia Class Scheduler Service (MMCSS) class for the decoding thread.
621 
622  // Specifies the encoding scheme.
624  // Specifies the initial level of the encoding buffer.
626  // Specifies the final level of the encoding buffer at the end of the encoding process.
628  // Specifies the size of the buffer used during encoding.
630  // Specifies the target format for an encoder.
632  // Specifies whether the output stream should be structured so that the encoded stream has a
633  // low decoding latency.
635  // Specifies the maximum bit rate.
637  // Specifies the average bit rate.
639  // Specifies the time interval over which the average bit rate applies.
641  // Specifies the minimum bit rate.
643  // Specifies the quality level for encoding.
644  // 0 Minimum quality, smaller output size.
645  // 100 Maximum quality, larger output size.
647  // Specifies the tradeoff between encoding quality and speed.
648  // 0 Lower quality, faster encoding.
649  // 100 Higher quality, slower encoding.
651  // Specifies the rate control mode.
652  // eAVEncCommonRateControlMode_CBR,
653  // eAVEncCommonRateControlMode_PeakConstrainedVBR,
654  // eAVEncCommonRateControlMode_UnconstrainedVBR,
655  // eAVEncCommonRateControlMode_Quality,
656  // eAVEncCommonRateControlMode_LowDelayVBR,
657  // eAVEncCommonRateControlMode_GlobalVBR,
658  // eAVEncCommonRateControlMode_GlobalLowDelayVBR
660  // Specifies whether the application requires real-time encoding performance.
662  // Specifies whether the encoder discards partial groups of pictures (GOPs)
663  // at the end of the stream.
665  // Specifies the type of output stream produced by a multiplexer.
666  // eAVEncMuxOutputAuto,
667  // eAVEncMuxOutputPS,
668  // eAVEncMuxOutputTS
670 
671  // Enables or disables hardware acceleration for H.264 video decoding.
672  // set this property before the decoder's output pin is connected.
674  // Enables or disables hardware acceleration for MPEG-2 video decoding.
675  // set this property before the decoder's output pin is connected.
677  // Enables or disables hardware acceleration for VC-1 video decoding.
678  // set this property before the decoder's output pin is connected.
680  // Specifies whether the decoder drops intra frames with missing reference frames.
682  // Sets the video decoding speed.
683  // 0 indicates normal decoding and 32 is the fastest decoding mode.
685  // Specifies how the decoded video stream is interlaced.
686  // eAVDecVideoInputScan_Unknown,
687  // eAVDecVideoInputScan_Progressive,
688  // eAVDecVideoInputScan_Interlaced_UpperFieldFirst,
689  // eAVDecVideoInputScan_Interlaced_LowerFieldFirst
691  // Specifies the pixel aspect ratio of the decoded video stream.
692  // The upper 16 bits of the value contain the width, and the lower 16 bits contain the height.
694  // Specifies the decoders software deinterlace mode.
695  // eAVDecVideoSoftwareDeinterlaceMode_NoDeinterlacing,
696  // eAVDecVideoSoftwareDeinterlaceMode_ProgressiveDeinterlacing,
697  // eAVDecVideoSoftwareDeinterlaceMode_BOBDeinterlacing,
698  // eAVDecVideoSoftwareDeinterlaceMode_SmartBOBDeinterlacing
700  // Specifies the power-saving level.
701  // 0 Optimize for battery life.
702  // 100 Optimize for video quality.
704  // Enables or disables thumbnail generation mode.
706  // Specifies the video system of the source content.
707  // eAVEncInputVideoSystem_Unspecified,
708  // eAVEncInputVideoSystem_PAL,
709  // eAVEncInputVideoSystem_NTSC,
710  // eAVEncInputVideoSystem_SECAM,
711  // eAVEncInputVideoSystem_MAC,
712  // eAVEncInputVideoSystem_HDV,
713  // eAVEncInputVideoSystem_Component
715  // Specifies the tradeoff between motion and still images.
716  // 0 Optimize for still images
717  // 100 Optimize for motion.
719  // Specifies the size of the video access units.
721  // Specifies which field is displayed first.
723  // Specifies the size of the video stream when it is decoded.
724  // The upper 16 bits of the value contain the width, in pixels. The lower 16 bits contain the
725  // height, in pixels.
727  // Specifies the width and height of the encoded video, if the video is cropped.
728  // The upper 16 bits of the value contain the width, in pixels. The lower 16 bits contain the
729  // height, in pixels.
731  // Specifies the left and top corners of the clipping rectangle, if the video is cropped.
732  // The upper 16 bits of the value contain the offset from the left edge of the input frame, in
733  // pixels. The lower 16 bits contain the offset from the top edge of the input frame, in pixels.
735  // Reverses the order of the interlaced fields in the source video.
737  // Specifies whether the input frames are progressive or interlaced.
738  // eAVEncVideoSourceScan_Automatic,
739  // eAVEncVideoSourceScan_Interlaced,
740  // eAVEncVideoSourceScan_Progressive
742  // Specifies the value of drop-frame flag in the GOP header.
743  // The value of this property can be 0 or 1.
745  // Specifies the starting frame number in the GOP header.
747  // Specifies the starting hour number in the GOP header.
749  // Specifies the starting minute number in the GOP header.
751  // Specifies the starting second number in the GOP header.
753  // Specifies the chroma resolution of the input video.
754  // eAVEncVideoChromaResolution_SameAsSource,
755  // eAVEncVideoChromaResolution_444,
756  // eAVEncVideoChromaResolution_422,
757  // eAVEncVideoChromaResolution_420,
758  // eAVEncVideoChromaResolution_411
760  // Specifies the chroma siting for the input video.
762  // Specifies the intended lighting conditions for viewing the input video.
763  // eAVEncVideoColorLighting_SameAsSource,
764  // eAVEncVideoColorLighting_Unknown,
765  // eAVEncVideoColorLighting_Bright,
766  // eAVEncVideoColorLighting_Office,
767  // eAVEncVideoColorLighting_Dim,
768  // eAVEncVideoColorLighting_Dark
770  // Specifies the nominal range for the input video.
771  // eAVEncVideoColorNominalRange_SameAsSource,
772  // eAVEncVideoColorNominalRange_0_255,
773  // eAVEncVideoColorNominalRange_16_235,
774  // eAVEncVideoColorNominalRange_48_208
776  // Specifies the color primaries for the input video.
777  // eAVEncVideoColorPrimaries_SameAsSource,
778  // eAVEncVideoColorPrimaries_Reserved,
779  // eAVEncVideoColorPrimaries_BT709,
780  // eAVEncVideoColorPrimaries_BT470_2_SysM,
781  // eAVEncVideoColorPrimaries_BT470_2_SysBG,
782  // eAVEncVideoColorPrimaries_SMPTE170M,
783  // eAVEncVideoColorPrimaries_SMPTE240M,
784  // eAVEncVideoColorPrimaries_EBU3231,
785  // eAVEncVideoColorPrimaries_SMPTE_C
787  // Specifies the conversion function from RGB to RGB for input video
788  // eAVEncVideoColorTransferFunction_SameAsSource,
789  // eAVEncVideoColorTransferFunction_10,
790  // eAVEncVideoColorTransferFunction_18,
791  // eAVEncVideoColorTransferFunction_20,
792  // eAVEncVideoColorTransferFunction_22,
793  // eAVEncVideoColorTransferFunction_22_709,
794  // eAVEncVideoColorTransferFunction_22_240M,
795  // eAVEncVideoColorTransferFunction_22_8bit_sRGB,
796  // eAVEncVideoColorTransferFunction_28
798  // Specifies the conversion matrix from the YCbCr color space to the RGB color space, for the
799  // input video.
800  // eAVEncVideoColorTransferMatrix_SameAsSource,
801  // eAVEncVideoColorTransferMatrix_BT709,
802  // eAVEncVideoColorTransferMatrix_BT601,
803  // eAVEncVideoColorTransferMatrix_SMPTE240M
805  // Specifies whether the encoder performs inverse telecine.
807  // Sets the threshold at which the encoder considers a video field redundant.
809  // Specifies the maximum number of frames between key frames.
811  // Specifies the number of fields to encode.
812  // For progressive video, set this property to twice the number of frames to encode.
814  // Specifies the number of fields to skip during encoding.
815  // For progressive video, set this property to twice the number of frames to skip.
817  // Specifies the chroma resolution of the encoded video.
818  // eAVEncVideoChromaResolution_SameAsSource,
819  // eAVEncVideoChromaResolution_444,
820  // eAVEncVideoChromaResolution_422,
821  // eAVEncVideoChromaResolution_420,
822  // eAVEncVideoChromaResolution_411
824  // Specifies the chroma siting for the encoded video.
825  // eAVEncVideoChromaSubsamplingFormat_SameAsSource,
826  // eAVEncVideoChromaSubsamplingFormat_ProgressiveChroma,
827  // eAVEncVideoChromaSubsamplingFormat_Horizontally_Cosited,
828  // eAVEncVideoChromaSubsamplingFormat_Vertically_Cosited,
829  // eAVEncVideoChromaSubsamplingFormat_Vertically_AlignedChromaPlanes
831  // Specifies the intended lighting conditions for viewing the encoded video.
832  // eAVEncVideoColorLighting_SameAsSource,
833  // eAVEncVideoColorLighting_Unknown,
834  // eAVEncVideoColorLighting_Bright,
835  // eAVEncVideoColorLighting_Office,
836  // eAVEncVideoColorLighting_Dim,
837  // eAVEncVideoColorLighting_Dark
839  // Specifies the nominal range for the encoded video.
840  // eAVEncVideoColorNominalRange_SameAsSource,
841  // eAVEncVideoColorNominalRange_0_255,
842  // eAVEncVideoColorNominalRange_16_235,
843  // eAVEncVideoColorNominalRange_48_208
845  // Specifies the color primaries for the encoded video.
846  // eAVEncVideoColorPrimaries_SameAsSource,
847  // eAVEncVideoColorPrimaries_Reserved,
848  // eAVEncVideoColorPrimaries_BT709,
849  // eAVEncVideoColorPrimaries_BT470_2_SysM,
850  // eAVEncVideoColorPrimaries_BT470_2_SysBG,
851  // eAVEncVideoColorPrimaries_SMPTE170M,
852  // eAVEncVideoColorPrimaries_SMPTE240M,
853  // eAVEncVideoColorPrimaries_EBU3231,
854  // eAVEncVideoColorPrimaries_SMPTE_C
856  // Specifies the conversion function from RGB to RGB' for encoded video.
857  // eAVEncVideoColorTransferFunction_SameAsSource,
858  // eAVEncVideoColorTransferFunction_10,
859  // eAVEncVideoColorTransferFunction_18,
860  // eAVEncVideoColorTransferFunction_20,
861  // eAVEncVideoColorTransferFunction_22,
862  // eAVEncVideoColorTransferFunction_22_709,
863  // eAVEncVideoColorTransferFunction_22_240M,
864  // eAVEncVideoColorTransferFunction_22_8bit_sRGB,
865  // eAVEncVideoColorTransferFunction_28
867  // Specifies the conversion matrix from the YCbCr color space to the RGB color space, for the
868  // encoded video.
869  // eAVEncVideoColorTransferMatrix_SameAsSource,
870  // eAVEncVideoColorTransferMatrix_BT709,
871  // eAVEncVideoColorTransferMatrix_BT601,
872  // eAVEncVideoColorTransferMatrix_SMPTE240M
874  // Specifies the frame rate on the encoders output stream, in frames per second.
875  // Frame rate Ratio
876  // 23.97 24000/1001
877  // 24 24/1
878  // 25 25/1
879  // 29.97 30000/1001
880  // 30 30/1
881  // 50 50/1
882  // 59.94 60000/1001
883  // 60 60/1
885  // Specifies whether the encoder converts the frame rate when the output frame rate does not match
886  // the input frame rate.
887  // eAVEncVideoOutputFrameRateConversion_Disable,
888  // eAVEncVideoOutputFrameRateConversion_Enable,
889  // eAVEncVideoOutputFrameRateConversion_Alias
891  // Specifies how the encoder interlaces the output video.
892  // eAVEncVideoOutputScan_Progressive,
893  // eAVEncVideoOutputScan_Interlaced,
894  // eAVEncVideoOutputScan_SameAsInput,
895  // eAVEncVideoOutputScan_Automatic
897  // Specifies the pixel aspect ratio.
898  // The upper 16 bits of the value contain the width, and the lower 16 bits contain the height.
900  // Specifies whether the original source of the input video was film or video.
901  // eAVEncVideoFilmContent_VideoOnly,
902  // eAVEncVideoFilmContent_FilmOnly,
903  // eAVEncVideoFilmContent_Mixed
905  // Specifies whether the video is monochrome (black and white) or contains color.
907  // Specifies whether the encoder adds a sequence end code at the end of the stream.
909  // Specifies the default number of consecutive B frames between I and P frames.
911  // Specifies whether the encoder produces encoded fields or encoded frames.
912  // eAVEncMPVFrameFieldMode_FieldMode,
913  // eAVEncMPVFrameFieldMode_FrameMode
915  // Specifies whether the encoder generates picture display extension headers.
917  // Specifies whether the encoder generates picture extension headers.
919  // Specifies whether the encoder generates sequence display extension headers.
921  // Specifies whether the encoder generates sequence extension headers.
923  // Specifies whether the encoder generates sequence scalable extension headers.
925  // Specifies whether the encoder produces open GOPs or closed GOPs.
927  // Specifies the number of GOPs between sequence headers.
929  // Specifies the maximum number of pictures from one GOP header to the next GOP header.
931  // Specifies the precision of the DC coefficients.
933  // Specifies which variable-length coding (VLC) table to use for entropy coding.
934  // eAVEncMPVIntraVLCTable_Auto,
935  // eAVEncMPVIntraVLCTable_MPEG1,
936  // eAVEncMPVIntraVLCTable_Alternate
938  // Specifies the MPEG-2 level.
939  // eAVEncMPVLevel_Low,
940  // eAVEncMPVLevel_Main,
941  // eAVEncMPVLevel_High1440,
942  // eAVEncMPVLevel_High
944  // Specifies the MPEG-2 profile.
945  // eAVEncMPVProfile_unknown,
946  // eAVEncMPVProfile_Simple,
947  // eAVEncMPVProfile_Main,
948  // eAVEncMPVProfile_High,
949  // eAVEncMPVProfile_422
951  // Specifies whether the quantizer scale is linear or non-linear.
952  // eAVEncMPVQScaleType_Auto,
953  // eAVEncMPVQScaleType_Linear,
954  // eAVEncMPVQScaleType_NonLinear
956  // Specifies the chroma quantization matrix for intra macroblocks.
958  // Specifies the chroma quantization matrix for non-intra macroblocks.
960  // Specifies the luma quantization matrix for intra macroblocks.
962  // Specifies the luma quantization matrix for non-intra macroblocks.
964  // Specifies the macroblock scan pattern.
965  // eAVEncMPVScanPattern_Auto,
966  // eAVEncMPVScanPattern_ZigZagScan,
967  // eAVEncMPVScanPattern_AlternateScan
969  // Specifies how the encoder behaves when it detects a new scene.
970  // eAVEncMPVSceneDetection_None,
971  // eAVEncMPVSceneDetection_InsertIPicture,
972  // eAVEncMPVSceneDetection_StartNewGOP,
973  // eAVEncMPVSceneDetection_StartNewLocatableGOP
975  // Specifies whether the encoder uses concealment motion vectors.
978 
984  // Specifies the min resolution level to use h264 hardware encoder
986  // mac slice num for a264, valid only when > 0
988 
994 
997  // whether default use a264;
999  // whether open vmaf calc;
1001  // whether use single slice parser.
1007 
1008  private:
1009  template <class T>
1010  std::string ToStringIfSet(const char* key, const Optional<T>& val) const {
1011  std::string str;
1012  if (val) {
1013  str = key;
1014  str = "\t\"" + str + "\"";
1015  str += ": ";
1016  str += std::to_string(*val);
1017  str += ",";
1018  str += NEW_LINE;
1019  }
1020  return str;
1021  }
1022 
1023  std::string ToStringIfSet(const char* key, const Optional<std::string>& val) const {
1024  std::string str;
1025  if (val) {
1026  str = key;
1027  str = "\t\"" + str + "\"";
1028  str += ": \"";
1029  str += val.value();
1030  str += "\",";
1031  str += NEW_LINE;
1032  }
1033  return str;
1034  }
1035 
1036  std::string ToStringIfSet(const char* key, const Optional<bool>& val) const {
1037  std::string str;
1038  if (val) {
1039  str = key;
1040  str = "\t\"" + str + "\"";
1041  str += ": ";
1042  str += *val ? "true" : "false";
1043  str += ",";
1044  str += NEW_LINE;
1045  }
1046  return str;
1047  }
1048 
1049  template <typename T>
1050  static void SetFrom(Optional<T>* s, const Optional<T>& o) {
1051  if (o) {
1052  *s = o;
1053  }
1054  }
1055 };
1056 
1057 } // namespace rtc
1058 } // namespace agora
agora::rtc::VideoConfigurationEx::fps_up_step
Optional< int > fps_up_step
Definition: video_config_i.h:577
agora::rtc::VideoConfigurationEx::VideoConfigurationEx
VideoConfigurationEx()=default
agora::rtc::VideoConfigurationEx::h264_hw_min_res_level
Optional< int > h264_hw_min_res_level
Definition: video_config_i.h:985
agora::rtc::VideoConfigurationEx::av_dec_video_acceleration_vc1
Optional< uint32_t > av_dec_video_acceleration_vc1
Definition: video_config_i.h:679
agora::rtc::VideoConfigurationEx::intel_cpu_threshold_mhz
Optional< int32_t > intel_cpu_threshold_mhz
Definition: video_config_i.h:981
agora::rtc::VideoConfigurationEx::av_enc_mpv_quant_matrix_intra
Optional< std::string > av_enc_mpv_quant_matrix_intra
Definition: video_config_i.h:961
agora::rtc::VideoConfigurationEx::av_enc_video_header_hours
Optional< uint32_t > av_enc_video_header_hours
Definition: video_config_i.h:748
agora::rtc::VideoConfigurationEx::av_enc_video_max_slices
Optional< int > av_enc_video_max_slices
Definition: video_config_i.h:987
agora::rtc::VideoConfigurationEx::av_enc_mpv_scene_detection
Optional< uint32_t > av_enc_mpv_scene_detection
Definition: video_config_i.h:974
agora::rtc::VideoConfigurationEx::av_enc_video_header_minutes
Optional< uint32_t > av_enc_video_header_minutes
Definition: video_config_i.h:750
agora::rtc::VideoConfigurationEx::av_enc_video_input_color_transfer_function
Optional< uint32_t > av_enc_video_input_color_transfer_function
Definition: video_config_i.h:797
agora::rtc::VideoConfigurationEx::operator!=
bool operator!=(const VideoConfigurationEx &o) const
Definition: video_config_i.h:376
agora::rtc::VideoConfigurationEx::pps_data
Optional< std::string > pps_data
Definition: video_config_i.h:568
agora::rtc::VideoConfigurationEx::av_enc_mpv_generate_header_pic_disp_ext
Optional< bool > av_enc_mpv_generate_header_pic_disp_ext
Definition: video_config_i.h:916
agora::rtc::VideoConfigurationEx::av_enc_video_field_swap
Optional< bool > av_enc_video_field_swap
Definition: video_config_i.h:736
agora::rtc::VideoConfigurationEx::adaptive_op_mode
Optional< bool > adaptive_op_mode
Definition: video_config_i.h:570
agora::rtc::VideoConfigurationEx::av_dec_video_fast_decode_mode
Optional< uint32_t > av_dec_video_fast_decode_mode
Definition: video_config_i.h:684
agora::rtc::VideoConfigurationEx::bitrate_adjust_ratio
Optional< std::string > bitrate_adjust_ratio
Definition: video_config_i.h:600
agora::rtc::VideoConfigurationEx::fps_down_step
Optional< int > fps_down_step
Definition: video_config_i.h:576
agora::rtc::VideoConfigurationEx::av_enc_mpv_frame_field_mode
Optional< uint32_t > av_enc_mpv_frame_field_mode
Definition: video_config_i.h:914
agora::rtc::VideoConfigurationEx::av_enc_video_max_keyframe_distance
Optional< uint32_t > av_enc_video_max_keyframe_distance
Definition: video_config_i.h:810
agora::rtc::VideoConfigurationEx::av_dec_common_input_format
Optional< std::string > av_dec_common_input_format
Definition: video_config_i.h:616
agora::rtc::VideoConfigurationEx::av_enc_video_input_chroma_subsampling
Optional< uint32_t > av_enc_video_input_chroma_subsampling
Definition: video_config_i.h:761
agora::rtc::VideoConfigurationEx::av_enc_video_input_color_lighting
Optional< uint32_t > av_enc_video_input_color_lighting
Definition: video_config_i.h:769
agora::rtc::VideoConfigurationEx::av_enc_mpv_default_b_picture_count
Optional< uint32_t > av_enc_mpv_default_b_picture_count
Definition: video_config_i.h:910
agora::rtc::VideoConfigurationEx::av_enc_common_buffer_in_level
Optional< uint32_t > av_enc_common_buffer_in_level
Definition: video_config_i.h:625
agora::rtc::VideoConfigurationEx::vqc_version
Optional< int > vqc_version
Definition: video_config_i.h:578
agora::rtc::VideoConfigurationEx::av_enc_mpvgop_open
Optional< bool > av_enc_mpvgop_open
Definition: video_config_i.h:926
agora::rtc::VideoConfigurationEx::av_enc_common_max_bit_rate
Optional< int > av_enc_common_max_bit_rate
Definition: video_config_i.h:636
agora::rtc::VideoConfigurationEx::av_enc_common_buffer_size
Optional< uint32_t > av_enc_common_buffer_size
Definition: video_config_i.h:629
agora::rtc::VideoConfigurationEx::min_bitrate
Optional< int > min_bitrate
Definition: video_config_i.h:563
agora::rtc::VideoConfigurationEx::av_dec_video_sw_power_level
Optional< uint32_t > av_dec_video_sw_power_level
Definition: video_config_i.h:703
agora::rtc::VideoConfigurationEx::av_enc_video_coded_video_access_unit_size
Optional< uint32_t > av_enc_video_coded_video_access_unit_size
Definition: video_config_i.h:720
agora::rtc::VideoConfigurationEx::av_enc_common_mean_bit_rate
Optional< int > av_enc_common_mean_bit_rate
Definition: video_config_i.h:638
agora::rtc::VideoConfigurationEx::frame_dropping_on
Optional< bool > frame_dropping_on
Definition: video_config_i.h:593
agora::rtc::VideoConfigurationEx::orientation_mode
Optional< int > orientation_mode
Definition: video_config_i.h:565
agora::rtc::VideoConfigurationEx::av_enc_mpv_intra_vlc_table
Optional< uint32_t > av_enc_mpv_intra_vlc_table
Definition: video_config_i.h:937
agora::rtc::VideoConfigurationEx::h264_profile
Optional< int > h264_profile
Definition: video_config_i.h:569
agora::rtc::VideoConfigurationEx::av_enc_mpv_level
Optional< uint32_t > av_enc_mpv_level
Definition: video_config_i.h:943
agora::rtc::VideoConfigurationEx::av_enc_video_inverse_telecine_enable
Optional< bool > av_enc_video_inverse_telecine_enable
Definition: video_config_i.h:806
agora::rtc::VideoConfigurationEx::av_enc_video_input_color_primaries
Optional< uint32_t > av_enc_video_input_color_primaries
Definition: video_config_i.h:786
agora::rtc::VideoConfigurationEx::av_dec_mmcss_class
Optional< std::string > av_dec_mmcss_class
Definition: video_config_i.h:620
agora::rtc::VideoConfigurationEx::av_enc_mpv_quant_matrix_non_intra
Optional< std::string > av_enc_mpv_quant_matrix_non_intra
Definition: video_config_i.h:963
agora::rtc::VideoConfigurationEx::posted_frames_waiting_for_encode
Optional< int > posted_frames_waiting_for_encode
Definition: video_config_i.h:599
agora::rtc::VideoConfigurationEx::av_dec_video_thumbnail_generation_mode
Optional< bool > av_dec_video_thumbnail_generation_mode
Definition: video_config_i.h:705
agora::rtc::VideoConfigurationEx::av_dec_video_acceleration_h264
Optional< uint32_t > av_dec_video_acceleration_h264
Definition: video_config_i.h:673
agora::rtc::VideoConfigurationEx::vqc_min_framerate
Optional< int > vqc_min_framerate
Definition: video_config_i.h:581
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::VideoConfigurationEx::av_enc_video_width_alignment
Optional< int32_t > av_enc_video_width_alignment
Definition: video_config_i.h:1003
agora::rtc::VideoConfigurationEx::av_enc_video_output_chroma_resolution
Optional< uint32_t > av_enc_video_output_chroma_resolution
Definition: video_config_i.h:823
agora::rtc::VideoConfigurationEx::key_frame_interval
Optional< int > key_frame_interval
Definition: video_config_i.h:595
agora::rtc::VideoConfigurationEx::operator==
bool operator==(const VideoConfigurationEx &o) const
Definition: video_config_i.h:200
agora::rtc::VideoConfigurationEx::av_enc_mpv_add_seq_end_code
Optional< bool > av_enc_mpv_add_seq_end_code
Definition: video_config_i.h:908
agora::rtc::VideoConfigurationEx::av_enc_video_header_drop_frame
Optional< uint32_t > av_enc_video_header_drop_frame
Definition: video_config_i.h:744
agora::rtc::VideoConfigurationEx::av_enc_mpv_profile
Optional< uint32_t > av_enc_mpv_profile
Definition: video_config_i.h:950
agora::rtc::VideoConfigurationEx::denoising_on
Optional< bool > denoising_on
Definition: video_config_i.h:591
agora::rtc::VideoConfigurationEx::av_enc_mpvgops_in_seq
Optional< uint32_t > av_enc_mpvgops_in_seq
Definition: video_config_i.h:928
agora::rtc::VideoConfigurationEx::av_enc_video_source_is_bw
Optional< bool > av_enc_video_source_is_bw
Definition: video_config_i.h:906
agora::rtc::VideoConfigurationEx::av_enc_video_input_chroma_resolution
Optional< uint32_t > av_enc_video_input_chroma_resolution
Definition: video_config_i.h:759
agora::rtc::VideoConfigurationEx::av_enc_input_video_system
Optional< uint32_t > av_enc_input_video_system
Definition: video_config_i.h:714
agora::rtc::VideoConfigurationEx::av_enc_codec_type
Optional< std::string > av_enc_codec_type
Definition: video_config_i.h:623
agora::rtc::VideoConfigurationEx::av_enc_video_display_dimension
Optional< uint32_t > av_enc_video_display_dimension
Definition: video_config_i.h:726
agora::rtc::VideoConfigurationEx::video_vpr_max_size
Optional< int32_t > video_vpr_max_size
Definition: video_config_i.h:991
agora::rtc::VideoConfigurationEx::av_enc_common_low_latency
Optional< bool > av_enc_common_low_latency
Definition: video_config_i.h:634
agora::rtc::VideoConfigurationEx::enable_video_vpr
Optional< bool > enable_video_vpr
Definition: video_config_i.h:989
agora::rtc::VideoConfigurationEx::video_vpr_frozen_ms_thres
Optional< int32_t > video_vpr_frozen_ms_thres
Definition: video_config_i.h:992
agora::rtc::VideoConfigurationEx::start_bitrate
Optional< int > start_bitrate
Definition: video_config_i.h:561
agora::rtc::VideoConfigurationEx::~VideoConfigurationEx
~VideoConfigurationEx()=default
agora::rtc::VideoConfigurationEx::av_enc_common_mean_bit_rate_interval
Optional< int > av_enc_common_mean_bit_rate_interval
Definition: video_config_i.h:640
agora::rtc::VideoConfigurationEx::dmfec_min_level
Optional< int > dmfec_min_level
Definition: video_config_i.h:588
agora::rtc::VideoConfigurationEx::vqc_ios_h265_adjust
Optional< int > vqc_ios_h265_adjust
Definition: video_config_i.h:585
agora::rtc::VideoConfigurationEx::h264_qp_thresholds_high
Optional< int > h264_qp_thresholds_high
Definition: video_config_i.h:607
agora::rtc::VideoConfigurationEx::SetAll
void SetAll(const VideoConfigurationEx &change)
Definition: video_config_i.h:30
agora::rtc::VideoConfigurationEx::ToString
std::string ToString() const
Definition: video_config_i.h:378
agora::rtc::VideoConfigurationEx::av_enc_video_header_frames
Optional< uint32_t > av_enc_video_header_frames
Definition: video_config_i.h:746
agora::rtc::VideoConfigurationEx::av_enc_video_output_color_transfer_function
Optional< uint32_t > av_enc_video_output_color_transfer_function
Definition: video_config_i.h:866
agora::rtc::VideoConfigurationEx::video_vpr_frozen_rate_thres
Optional< int32_t > video_vpr_frozen_rate_thres
Definition: video_config_i.h:993
agora::rtc::VideoConfigurationEx::complexity
Optional< int > complexity
Definition: video_config_i.h:590
agora::rtc::VideoConfigurationEx::av_enc_video_pixel_aspect_ratio
Optional< uint32_t > av_enc_video_pixel_aspect_ratio
Definition: video_config_i.h:899
agora::rtc::VideoConfigurationEx::use_single_slice_parser
Optional< bool > use_single_slice_parser
Definition: video_config_i.h:1002
agora::rtc::VideoConfigurationEx::av_dec_video_software_deinterlace_mode
Optional< uint32_t > av_dec_video_software_deinterlace_mode
Definition: video_config_i.h:699
agora::rtc::VideoConfigurationEx::vqc_min_holdtime_auto_resize_zoomout
Optional< int > vqc_min_holdtime_auto_resize_zoomout
Definition: video_config_i.h:583
agora::rtc::VideoConfigurationEx::av_enc_common_buffer_out_level
Optional< uint32_t > av_enc_common_buffer_out_level
Definition: video_config_i.h:627
agora::rtc::VideoConfigurationEx::codec_type
Optional< int > codec_type
Definition: video_config_i.h:557
agora::rtc::VideoConfigurationEx::av_enc_video_encode_offset_origin
Optional< uint32_t > av_enc_video_encode_offset_origin
Definition: video_config_i.h:734
agora::rtc::VideoConfigurationEx::av_enc_video_output_frame_rate
Optional< uint64_t > av_enc_video_output_frame_rate
Definition: video_config_i.h:884
agora::rtc::VideoConfigurationEx::dm_wsize
Optional< int > dm_wsize
Definition: video_config_i.h:587
agora::rtc::VideoConfigurationEx::h264_qp_thresholds_low
Optional< int > h264_qp_thresholds_low
Definition: video_config_i.h:606
agora::rtc::VideoConfigurationEx::nvdia_cpu_threshold_mhz
Optional< int32_t > nvdia_cpu_threshold_mhz
Definition: video_config_i.h:980
agora::rtc::VideoConfigurationEx::av_dec_common_output_format
Optional< std::string > av_dec_common_output_format
Definition: video_config_i.h:618
agora::rtc::VideoConfigurationEx::av_enc_common_format_constraint
Optional< std::string > av_enc_common_format_constraint
Definition: video_config_i.h:631
agora::rtc::VideoConfigurationEx::vdm_not_override_lua_smallvideo_not_use_hwenc_policy
Optional< bool > vdm_not_override_lua_smallvideo_not_use_hwenc_policy
Definition: video_config_i.h:982
agora::rtc::VideoConfigurationEx::number_of_temporal_layers
Optional< uint8_t > number_of_temporal_layers
Definition: video_config_i.h:566
agora::rtc::VideoConfigurationEx::av_enc_mpv_generate_header_seq_ext
Optional< bool > av_enc_mpv_generate_header_seq_ext
Definition: video_config_i.h:922
agora::rtc::VideoConfigurationEx::av_enc_video_no_of_fields_to_skip
Optional< uint64_t > av_enc_video_no_of_fields_to_skip
Definition: video_config_i.h:816
agora::rtc::VideoConfigurationEx::retrans_detect_enable
Optional< bool > retrans_detect_enable
Definition: video_config_i.h:995
agora::rtc::VideoConfigurationEx::degradation_preference
Optional< int > degradation_preference
Definition: video_config_i.h:575
agora::rtc::VideoConfigurationEx::video_rotation
Optional< int > video_rotation
Definition: video_config_i.h:996
agora::rtc::VideoConfigurationEx::av_enc_mpv_quant_matrix_chroma_non_intra
Optional< std::string > av_enc_mpv_quant_matrix_chroma_non_intra
Definition: video_config_i.h:959
agora::rtc::VideoConfigurationEx::fec_method
Optional< int > fec_method
Definition: video_config_i.h:586
agora::rtc::VideoConfigurationEx::av_enc_mpv_generate_header_pic_ext
Optional< bool > av_enc_mpv_generate_header_pic_ext
Definition: video_config_i.h:918
agora::rtc::VideoConfigurationEx::has_intra_request
Optional< bool > has_intra_request
Definition: video_config_i.h:594
agora::rtc::VideoConfigurationEx::av_dec_output_byte_frame
Optional< bool > av_dec_output_byte_frame
Definition: video_config_i.h:1006
agora::rtc::VideoConfigurationEx::av_dec_video_acceleration_mpeg2
Optional< uint32_t > av_dec_video_acceleration_mpeg2
Definition: video_config_i.h:676
agora::rtc::VideoConfigurationEx::minbitrate_ratio
Optional< std::string > minbitrate_ratio
Definition: video_config_i.h:601
agora::rtc::VideoConfigurationEx::loop_filter_disable_idc
Optional< int > loop_filter_disable_idc
Definition: video_config_i.h:597
agora::rtc::VideoConfigurationEx
Definition: video_config_i.h:25
agora::rtc::VideoConfigurationEx::target_bitrate
Optional< int > target_bitrate
Definition: video_config_i.h:562
agora::rtc::VideoConfigurationEx::av_enc_common_real_time
Optional< bool > av_enc_common_real_time
Definition: video_config_i.h:661
agora::rtc::VideoConfigurationEx::number_of_spatial_layers
Optional< uint8_t > number_of_spatial_layers
Definition: video_config_i.h:571
agora::rtc::VideoConfigurationEx::av_enc_mpv_use_concealment_motion_vectors
Optional< bool > av_enc_mpv_use_concealment_motion_vectors
Definition: video_config_i.h:977
agora::rtc::VideoConfigurationEx::av_enc_mpv_generate_header_seq_scale_ext
Optional< bool > av_enc_mpv_generate_header_seq_scale_ext
Definition: video_config_i.h:924
agora::rtc::VideoConfigurationEx::av_enc_mux_output_stream_type
Optional< uint32_t > av_enc_mux_output_stream_type
Definition: video_config_i.h:669
agora::rtc::VideoConfigurationEx::sps_data
Optional< std::string > sps_data
Definition: video_config_i.h:567
agora::rtc::VideoConfigurationEx::av_enc_video_encode_dimension
Optional< uint32_t > av_enc_video_encode_dimension
Definition: video_config_i.h:730
agora::rtc::VideoConfigurationEx::av_enc_video_output_color_lighting
Optional< uint32_t > av_enc_video_output_color_lighting
Definition: video_config_i.h:838
agora::rtc::VideoConfigurationEx::av_enc_mpv_generate_header_seq_disp_ext
Optional< bool > av_enc_mpv_generate_header_seq_disp_ext
Definition: video_config_i.h:920
agora::rtc::VideoConfigurationEx::av_enc_vmaf_calc
Optional< bool > av_enc_vmaf_calc
Definition: video_config_i.h:1000
agora::rtc::VideoConfigurationEx::av_enc_mpvq_scale_type
Optional< uint32_t > av_enc_mpvq_scale_type
Definition: video_config_i.h:955
agora::rtc::VideoConfigurationEx::av_enc_video_output_color_nominal_range
Optional< uint32_t > av_enc_video_output_color_nominal_range
Definition: video_config_i.h:844
agora::rtc::VideoConfigurationEx::av_enc_video_output_frame_rate_conversion
Optional< uint32_t > av_enc_video_output_frame_rate_conversion
Definition: video_config_i.h:890
agora::rtc::VideoConfigurationEx::background_detection_on
Optional< bool > background_detection_on
Definition: video_config_i.h:598
agora::rtc::VideoConfigurationEx::av_enc_video_input_color_transfer_matrix
Optional< uint32_t > av_enc_video_input_color_transfer_matrix
Definition: video_config_i.h:804
agora::rtc::VideoConfigurationEx::video_vpr_init_size
Optional< int32_t > video_vpr_init_size
Definition: video_config_i.h:990
agora::rtc::VideoConfigurationEx::av_enc_video_output_chroma_subsampling
Optional< uint32_t > av_enc_video_output_chroma_subsampling
Definition: video_config_i.h:830
agora::rtc::VideoConfigurationEx::av_enc_common_quality_vs_speed
Optional< uint32_t > av_enc_common_quality_vs_speed
Definition: video_config_i.h:650
agora::rtc::VideoConfigurationEx::av_dec_video_input_scan_type
Optional< uint32_t > av_dec_video_input_scan_type
Definition: video_config_i.h:690
agora::rtc::VideoConfigurationEx::av_enc_video_input_color_nominal_range
Optional< uint32_t > av_enc_video_input_color_nominal_range
Definition: video_config_i.h:775
agora::rtc::VideoConfigurationEx::av_dec_video_pixel_aspect_ratio
Optional< uint32_t > av_dec_video_pixel_aspect_ratio
Definition: video_config_i.h:693
agora::rtc::VideoConfigurationEx::frame_width
Optional< int > frame_width
Definition: video_config_i.h:558
agora::rtc::VideoConfigurationEx::av_enc_video_use_a264
Optional< bool > av_enc_video_use_a264
Definition: video_config_i.h:998
agora::rtc::VideoConfigurationEx::enable_video_freeze_diagnose
Optional< bool > enable_video_freeze_diagnose
Definition: video_config_i.h:983
agora::rtc::VideoConfigurationEx::max_bitrate
Optional< int > max_bitrate
Definition: video_config_i.h:564
agora::rtc::VideoConfigurationEx::enable_video_sender_frame_dropper
Optional< bool > enable_video_sender_frame_dropper
Definition: video_config_i.h:976
agora::rtc::VideoConfigurationEx::flexible_mode
Optional< bool > flexible_mode
Definition: video_config_i.h:572
agora::rtc::VideoConfigurationEx::av_dec_video_drop_pic_with_missing_ref
Optional< bool > av_dec_video_drop_pic_with_missing_ref
Definition: video_config_i.h:681
agora::rtc::VideoConfigurationEx::av_enc_video_output_color_transfer_matrix
Optional< uint32_t > av_enc_video_output_color_transfer_matrix
Definition: video_config_i.h:873
agora::rtc::VideoConfigurationEx::num_of_encoder_cores
Optional< int > num_of_encoder_cores
Definition: video_config_i.h:574
agora::rtc::VideoConfigurationEx::av_enc_mpvgop_size
Optional< uint32_t > av_enc_mpvgop_size
Definition: video_config_i.h:930
agora::rtc::VideoConfigurationEx::vqc_quick_adaptNetwork
Optional< bool > vqc_quick_adaptNetwork
Definition: video_config_i.h:580
agora::rtc::VideoConfigurationEx::vqc_min_holdtime_auto_resize_zoomin
Optional< int > vqc_min_holdtime_auto_resize_zoomin
Definition: video_config_i.h:582
agora::rtc::VideoConfigurationEx::av_enc_video_height_alignment
Optional< int32_t > av_enc_video_height_alignment
Definition: video_config_i.h:1004
agora::rtc::VideoConfigurationEx::av_enc_video_force_alignment
Optional< bool > av_enc_video_force_alignment
Definition: video_config_i.h:1005
agora::rtc::VideoConfigurationEx::vqc_qp_adjust
Optional< int > vqc_qp_adjust
Definition: video_config_i.h:584
agora::rtc::VideoConfigurationEx::quality_scale_only_on_average_qp
Optional< bool > quality_scale_only_on_average_qp
Definition: video_config_i.h:605
agora::rtc::VideoConfigurationEx::enable_hw_decoder
Optional< bool > enable_hw_decoder
Definition: video_config_i.h:612
agora::rtc::VideoConfigurationEx::enable_nvdia_first
Optional< bool > enable_nvdia_first
Definition: video_config_i.h:979
agora::rtc::VideoConfigurationEx::av_enc_mpv_intra_dc_precision
Optional< uint32_t > av_enc_mpv_intra_dc_precision
Definition: video_config_i.h:932
agora::rtc::VideoConfigurationEx::av_enc_common_stream_end_handling
Optional< bool > av_enc_common_stream_end_handling
Definition: video_config_i.h:664
agora::rtc::VideoConfigurationEx::av_enc_video_cbr_motion_tradeoff
Optional< uint32_t > av_enc_video_cbr_motion_tradeoff
Definition: video_config_i.h:718
agora::rtc::VideoConfigurationEx::av_enc_video_header_seconds
Optional< uint32_t > av_enc_video_header_seconds
Definition: video_config_i.h:752
agora::rtc::VideoConfigurationEx::av_enc_mpv_quant_matrix_chroma_intra
Optional< std::string > av_enc_mpv_quant_matrix_chroma_intra
Definition: video_config_i.h:957
agora::rtc::VideoConfigurationEx::av_enc_video_output_color_primaries
Optional< uint32_t > av_enc_video_output_color_primaries
Definition: video_config_i.h:855
agora::rtc::VideoConfigurationEx::frame_rate
Optional< int > frame_rate
Definition: video_config_i.h:560
agora::rtc::VideoConfigurationEx::av_enc_common_rate_control_mode
Optional< uint32_t > av_enc_common_rate_control_mode
Definition: video_config_i.h:659
agora::rtc::VideoConfigurationEx::av_enc_video_inverse_telecine_threshold
Optional< uint32_t > av_enc_video_inverse_telecine_threshold
Definition: video_config_i.h:808
agora::rtc::VideoConfigurationEx::av_enc_mpv_scan_pattern
Optional< uint32_t > av_enc_mpv_scan_pattern
Definition: video_config_i.h:968
agora::rtc::VideoConfigurationEx::av_enc_video_source_film_content
Optional< uint32_t > av_enc_video_source_film_content
Definition: video_config_i.h:904
agora::rtc::VideoConfigurationEx::av_enc_common_min_bit_rate
Optional< int > av_enc_common_min_bit_rate
Definition: video_config_i.h:642
agora::rtc::VideoConfigurationEx::av_enc_video_no_of_fields_to_encode
Optional< uint32_t > av_enc_video_no_of_fields_to_encode
Definition: video_config_i.h:813
agora::rtc::VideoConfigurationEx::frame_height
Optional< int > frame_height
Definition: video_config_i.h:559
agora::rtc::VideoConfigurationEx::av_enc_common_quality
Optional< uint32_t > av_enc_common_quality
Definition: video_config_i.h:646
agora::rtc::VideoConfigurationEx::av_enc_video_output_scan_type
Optional< uint32_t > av_enc_video_output_scan_type
Definition: video_config_i.h:896
agora::rtc::VideoConfigurationEx::entropy_coding_mode_flag
Optional< int > entropy_coding_mode_flag
Definition: video_config_i.h:596
agora::rtc::VideoConfigurationEx::hw_encoder_provider
Optional< std::string > hw_encoder_provider
Definition: video_config_i.h:614
agora::rtc::VideoConfigurationEx::enable_hw_encoder
Optional< bool > enable_hw_encoder
Definition: video_config_i.h:610
rtc
Definition: video_node_i.h:27
agora::rtc::VideoConfigurationEx::av_enc_video_force_source_scan_type
Optional< uint32_t > av_enc_video_force_source_scan_type
Definition: video_config_i.h:741
agora::Optional< int >
agora::rtc::VideoConfigurationEx::av_enc_video_default_upper_field_dominant
Optional< bool > av_enc_video_default_upper_field_dominant
Definition: video_config_i.h:722
agora::rtc::VideoConfigurationEx::interlayer_pred
Optional< int > interlayer_pred
Definition: video_config_i.h:573
agora::rtc::VideoConfigurationEx::automatic_resize_on
Optional< bool > automatic_resize_on
Definition: video_config_i.h:592