8 #include "AgoraOptional.h"
10 #define SET_FROM(X) SetFrom(&X, change.X)
12 #define BEGIN_COMPARE() bool b = true
13 #define ADD_COMPARE(X) b = (b && (X == o.X))
14 #define END_COMPARE_AND_RETURN() \
18 #define UNPUBLISH(X) X.reset()
26 enum class OPENSL_MODE {
49 SET_FROM(audio_scenario);
50 SET_FROM(audio_routing);
51 SET_FROM(opensl_mode);
52 SET_FROM(has_published_stream);
53 SET_FROM(has_subscribed_stream);
55 SET_FROM(adm_mix_option_selected);
56 SET_FROM(adm_input_sample_rate);
57 SET_FROM(adm_output_sample_rate);
58 SET_FROM(adm_stereo_out);
59 SET_FROM(adm_force_use_bluetooth_a2dp);
60 SET_FROM(adm_keep_audio_session);
61 SET_FROM(adm_use_hw_aec);
62 SET_FROM(adm_output_align_input_sample_rate);
63 SET_FROM(adm_force_restart);
64 SET_FROM(adm_enable_opensl);
65 SET_FROM(adm_audio_layer);
66 SET_FROM(adm_enable_record_but_not_publish);
67 SET_FROM(adm_audio_source);
68 SET_FROM(adm_playout_bufsize_factor);
70 SET_FROM(apm_override_lua_enable_aec);
71 SET_FROM(apm_override_lua_enable_ns);
72 SET_FROM(apm_override_lua_enable_agc);
73 SET_FROM(apm_override_lua_enable_md);
74 SET_FROM(apm_enable_aec);
75 SET_FROM(apm_enable_ns);
76 SET_FROM(apm_enable_agc);
77 SET_FROM(apm_enable_md);
78 SET_FROM(apm_enable_highpass_filter);
79 SET_FROM(apm_enable_tone_remover);
80 SET_FROM(apm_enable_pitch_smoother);
81 SET_FROM(apm_enable_howling_control);
82 SET_FROM(apm_delay_offset_ms);
83 SET_FROM(apm_aec_suppression_level);
84 SET_FROM(apm_aec_delay_type);
85 SET_FROM(apm_aec_nlp_aggressiveness);
86 SET_FROM(apm_agc_target_level_dbfs);
87 SET_FROM(apm_agc_compression_gain_db);
88 SET_FROM(apm_agc_mode);
89 SET_FROM(apm_ns_level);
90 SET_FROM(apm_enable_dtd);
92 SET_FROM(acm_bitrate);
96 SET_FROM(acm_complex_level);
97 SET_FROM(neteq_live_min_delay);
98 SET_FROM(neteq_jitter_buffer_max_packets);
99 SET_FROM(neteq_jitter_buffer_fast_accelerate);
100 SET_FROM(neteq_target_level_optimization);
101 SET_FROM(playback_volume);
102 SET_FROM(webrtc_enable_aec3);
103 SET_FROM(derived_headset_black_list_device);
108 ADD_COMPARE(audio_scenario);
109 ADD_COMPARE(audio_routing);
110 ADD_COMPARE(opensl_mode);
111 ADD_COMPARE(has_published_stream);
112 ADD_COMPARE(has_subscribed_stream);
114 ADD_COMPARE(adm_mix_option_selected);
115 ADD_COMPARE(adm_input_sample_rate);
116 ADD_COMPARE(adm_output_sample_rate);
117 ADD_COMPARE(adm_stereo_out);
118 ADD_COMPARE(adm_force_use_bluetooth_a2dp);
119 ADD_COMPARE(adm_keep_audio_session);
120 ADD_COMPARE(adm_use_hw_aec);
121 ADD_COMPARE(adm_output_align_input_sample_rate);
122 ADD_COMPARE(adm_force_restart);
123 ADD_COMPARE(adm_enable_opensl);
124 ADD_COMPARE(adm_audio_layer);
125 ADD_COMPARE(adm_enable_record_but_not_publish);
126 ADD_COMPARE(adm_audio_source);
127 ADD_COMPARE(adm_playout_bufsize_factor);
129 ADD_COMPARE(apm_override_lua_enable_aec);
130 ADD_COMPARE(apm_override_lua_enable_ns);
131 ADD_COMPARE(apm_override_lua_enable_agc);
132 ADD_COMPARE(apm_override_lua_enable_md);
133 ADD_COMPARE(apm_enable_aec);
134 ADD_COMPARE(apm_enable_ns);
135 ADD_COMPARE(apm_enable_agc);
136 ADD_COMPARE(apm_enable_md);
137 ADD_COMPARE(apm_enable_highpass_filter);
138 ADD_COMPARE(apm_enable_tone_remover);
139 ADD_COMPARE(apm_enable_pitch_smoother);
140 ADD_COMPARE(apm_enable_howling_control);
141 ADD_COMPARE(apm_delay_offset_ms);
142 ADD_COMPARE(apm_aec_suppression_level);
143 ADD_COMPARE(apm_aec_delay_type);
144 ADD_COMPARE(apm_aec_nlp_aggressiveness);
145 ADD_COMPARE(apm_agc_target_level_dbfs);
146 ADD_COMPARE(apm_agc_compression_gain_db);
147 ADD_COMPARE(apm_agc_mode);
148 ADD_COMPARE(apm_ns_level);
149 ADD_COMPARE(apm_enable_dtd);
151 ADD_COMPARE(acm_bitrate);
152 ADD_COMPARE(acm_codec);
153 ADD_COMPARE(acm_dtx);
154 ADD_COMPARE(acm_plc);
155 ADD_COMPARE(acm_complex_level);
157 ADD_COMPARE(neteq_live_min_delay);
158 ADD_COMPARE(neteq_jitter_buffer_max_packets);
159 ADD_COMPARE(neteq_jitter_buffer_fast_accelerate);
160 ADD_COMPARE(neteq_target_level_optimization);
161 ADD_COMPARE(playback_volume);
162 ADD_COMPARE(webrtc_enable_aec3);
163 ADD_COMPARE(derived_headset_black_list_device);
164 END_COMPARE_AND_RETURN();
168 UNPUBLISH(adm_input_sample_rate);
169 UNPUBLISH(adm_output_sample_rate);
170 UNPUBLISH(adm_stereo_out);
171 UNPUBLISH(adm_use_hw_aec);
172 UNPUBLISH(adm_output_align_input_sample_rate);
173 UNPUBLISH(derived_headset_black_list_device);
174 UNPUBLISH(playback_volume);
178 bool operator!=(
const AudioOptions& o)
const {
return !(*
this == o); }
248 template <
typename T>