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_override_lua_input_sample_rate);
57 SET_FROM(adm_input_sample_rate);
58 SET_FROM(adm_output_sample_rate);
59 SET_FROM(adm_stereo_out);
60 SET_FROM(adm_force_use_bluetooth_a2dp);
61 SET_FROM(adm_keep_audio_session);
62 SET_FROM(adm_use_hw_aec);
63 SET_FROM(adm_output_align_input_sample_rate);
64 SET_FROM(adm_force_restart);
65 SET_FROM(adm_enable_opensl);
66 SET_FROM(adm_audio_layer);
67 SET_FROM(adm_enable_record_but_not_publish);
68 SET_FROM(adm_audio_source);
69 SET_FROM(adm_playout_bufsize_factor);
71 SET_FROM(apm_override_lua_enable_aec);
72 SET_FROM(apm_override_lua_enable_ns);
73 SET_FROM(apm_override_lua_enable_agc);
74 SET_FROM(apm_override_lua_enable_md);
75 SET_FROM(apm_enable_aec);
76 SET_FROM(apm_enable_ns);
77 SET_FROM(apm_enable_agc);
78 SET_FROM(apm_enable_md);
79 SET_FROM(apm_enable_highpass_filter);
80 SET_FROM(apm_enable_tone_remover);
81 SET_FROM(apm_enable_pitch_smoother);
82 SET_FROM(apm_enable_howling_control);
83 SET_FROM(apm_delay_offset_ms);
84 SET_FROM(apm_aec_suppression_level);
85 SET_FROM(apm_aec_delay_type);
86 SET_FROM(apm_aec_nlp_aggressiveness);
87 SET_FROM(apm_agc_target_level_dbfs);
88 SET_FROM(apm_agc_compression_gain_db);
89 SET_FROM(apm_agc_mode);
90 SET_FROM(apm_ns_level);
91 SET_FROM(apm_enable_dtd);
93 SET_FROM(acm_bitrate);
97 SET_FROM(acm_complex_level);
99 SET_FROM(neteq_live_min_delay);
100 SET_FROM(neteq_jitter_buffer_max_packets);
101 SET_FROM(neteq_jitter_buffer_fast_accelerate);
102 SET_FROM(neteq_target_level_optimization);
103 SET_FROM(neteq_aqm_voice_threshold);
104 SET_FROM(playback_volume);
105 SET_FROM(webrtc_enable_aec3);
106 SET_FROM(derived_headset_black_list_device);
107 #if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
108 SET_FROM(use_media_volume_in_headset);
109 SET_FROM(use_media_volume_in_audience);
110 SET_FROM(use_media_volume_in_solo);
111 #endif // defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
116 ADD_COMPARE(audio_scenario);
117 ADD_COMPARE(audio_routing);
118 ADD_COMPARE(opensl_mode);
119 ADD_COMPARE(has_published_stream);
120 ADD_COMPARE(has_subscribed_stream);
122 ADD_COMPARE(adm_mix_option_selected);
123 ADD_COMPARE(adm_override_lua_input_sample_rate);
124 ADD_COMPARE(adm_input_sample_rate);
125 ADD_COMPARE(adm_output_sample_rate);
126 ADD_COMPARE(adm_stereo_out);
127 ADD_COMPARE(adm_force_use_bluetooth_a2dp);
128 ADD_COMPARE(adm_keep_audio_session);
129 ADD_COMPARE(adm_use_hw_aec);
130 ADD_COMPARE(adm_output_align_input_sample_rate);
131 ADD_COMPARE(adm_force_restart);
132 ADD_COMPARE(adm_enable_opensl);
133 ADD_COMPARE(adm_audio_layer);
134 ADD_COMPARE(adm_enable_record_but_not_publish);
135 ADD_COMPARE(adm_audio_source);
136 ADD_COMPARE(adm_playout_bufsize_factor);
138 ADD_COMPARE(apm_override_lua_enable_aec);
139 ADD_COMPARE(apm_override_lua_enable_ns);
140 ADD_COMPARE(apm_override_lua_enable_agc);
141 ADD_COMPARE(apm_override_lua_enable_md);
142 ADD_COMPARE(apm_enable_aec);
143 ADD_COMPARE(apm_enable_ns);
144 ADD_COMPARE(apm_enable_agc);
145 ADD_COMPARE(apm_enable_md);
146 ADD_COMPARE(apm_enable_highpass_filter);
147 ADD_COMPARE(apm_enable_tone_remover);
148 ADD_COMPARE(apm_enable_pitch_smoother);
149 ADD_COMPARE(apm_enable_howling_control);
150 ADD_COMPARE(apm_delay_offset_ms);
151 ADD_COMPARE(apm_aec_suppression_level);
152 ADD_COMPARE(apm_aec_delay_type);
153 ADD_COMPARE(apm_aec_nlp_aggressiveness);
154 ADD_COMPARE(apm_agc_target_level_dbfs);
155 ADD_COMPARE(apm_agc_compression_gain_db);
156 ADD_COMPARE(apm_agc_mode);
157 ADD_COMPARE(apm_ns_level);
158 ADD_COMPARE(apm_enable_dtd);
160 ADD_COMPARE(acm_bitrate);
161 ADD_COMPARE(acm_codec);
162 ADD_COMPARE(acm_dtx);
163 ADD_COMPARE(acm_plc);
164 ADD_COMPARE(acm_complex_level);
165 ADD_COMPARE(acm_ptime);
167 ADD_COMPARE(neteq_live_min_delay);
168 ADD_COMPARE(neteq_jitter_buffer_max_packets);
169 ADD_COMPARE(neteq_jitter_buffer_fast_accelerate);
170 ADD_COMPARE(neteq_target_level_optimization);
171 ADD_COMPARE(neteq_aqm_voice_threshold);
172 ADD_COMPARE(playback_volume);
173 ADD_COMPARE(webrtc_enable_aec3);
174 ADD_COMPARE(derived_headset_black_list_device);
175 #if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
176 ADD_COMPARE(use_media_volume_in_headset);
177 ADD_COMPARE(use_media_volume_in_audience);
178 ADD_COMPARE(use_media_volume_in_solo);
179 #endif // defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
180 END_COMPARE_AND_RETURN();
184 UNPUBLISH(adm_input_sample_rate);
185 UNPUBLISH(adm_output_sample_rate);
186 UNPUBLISH(adm_stereo_out);
187 UNPUBLISH(adm_use_hw_aec);
188 UNPUBLISH(adm_output_align_input_sample_rate);
189 UNPUBLISH(derived_headset_black_list_device);
190 UNPUBLISH(playback_volume);
194 bool operator!=(
const AudioOptions& o)
const {
return !(*
this == o); }
265 #if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
269 #endif // defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
271 template <
typename T>