diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e580c4..00df682 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,12 +4,7 @@ # # ============================================================================ -if (APPLE) - cmake_minimum_required(VERSION 3.2) -else (APPLE) - cmake_minimum_required(VERSION 2.8) -endif (APPLE) - +cmake_minimum_required(VERSION 3.2) project(peerconnect) @@ -149,14 +144,14 @@ if (PC_WITH_STATIC) if (_CMAKE_BUILD_TYPE STREQUAL "DEBUG") add_custom_command(TARGET peerconnect PRE_LINK COMMAND ${CMAKE_COMMAND} -E env \"PATH=${DEPOT_TOOLS_DIR}:$ENV{PATH}\" gn gen ${WEBRTC_OUT_DIR_DEBUG} --args=\"is_debug=true is_component_build=false\" - COMMAND ${CMAKE_COMMAND} -E env \"PATH=${DEPOT_TOOLS_DIR}:$ENV{PATH}\" ninja -C ${WEBRTC_OUT_DIR_DEBUG} peerconnection_unittests + COMMAND ${CMAKE_COMMAND} -E env \"PATH=${DEPOT_TOOLS_DIR}:$ENV{PATH}\" ninja -C ${WEBRTC_OUT_DIR_DEBUG} WORKING_DIRECTORY "${WEBRTC_ROOT_DIR}" COMMENT "Building WebRTC library (Once)" ) else() add_custom_command(TARGET peerconnect PRE_LINK COMMAND ${CMAKE_COMMAND} -E env \"PATH=${DEPOT_TOOLS_DIR}:$ENV{PATH}\" gn gen ${WEBRTC_OUT_DIR} --args=\"is_debug=false is_component_build=false\" - COMMAND ${CMAKE_COMMAND} -E env \"PATH=${DEPOT_TOOLS_DIR}:$ENV{PATH}\" ninja -C ${WEBRTC_OUT_DIR} peerconnection_unittests + COMMAND ${CMAKE_COMMAND} -E env \"PATH=${DEPOT_TOOLS_DIR}:$ENV{PATH}\" ninja -C ${WEBRTC_OUT_DIR} WORKING_DIRECTORY "${WEBRTC_ROOT_DIR}" COMMENT "Building WebRTC library (Once)" ) @@ -251,7 +246,6 @@ if (PC_WITH_SHARED) CACHE STRING "PeerConnect shared library") endif() - # ============================================================================ # Test # ============================================================================ @@ -259,7 +253,6 @@ endif() if (PC_BUILD_TEST) add_executable(test_main src/test/test_main.cc) add_dependencies(test_main peerconnect) - target_include_directories(test_main PRIVATE ${PEERCONNECT_INCLUDE_DIR}) target_link_libraries(test_main ${PEERCONNECT_LIBRARIES_STATIC}) set_target_properties (test_main PROPERTIES FOLDER test) diff --git a/README.md b/README.md index 7f58ee8..4fd7ad6 100644 --- a/README.md +++ b/README.md @@ -63,10 +63,10 @@ In the [WebRTC development](https://webrtc.org/native-code/development/) instruc * Follow 'Before You Start' step * Follow 'Getting the code' step -Currently PeerConnect supports WebRTC branch-heads/55 so run +Currently PeerConnect supports WebRTC branch-heads/60 so run ``` -$ git checkout -b peers55 refs/remotes/branch-heads/55 +$ git checkout -b peers60 refs/remotes/branch-heads/60 ``` To update build toolchain and dependencies of WebRTC, run: diff --git a/cmake/FindWebRTC.cmake b/cmake/FindWebRTC.cmake index 11f6daa..a9b7d8f 100644 --- a/cmake/FindWebRTC.cmake +++ b/cmake/FindWebRTC.cmake @@ -73,9 +73,7 @@ find_path(WEBRTC_INCLUDE_DIR list(APPEND WEBRTC_INCLUDE_DIR "${WEBRTC_INCLUDE_DIR}" "${WEBRTC_INCLUDE_DIR}/webrtc" - "${WEBRTC_INCLUDE_DIR}/third_party" - "${WEBRTC_INCLUDE_DIR}/third_party/webrtc" - "${WEBRTC_INCLUDE_DIR}/third_party/wtl/include" + "${WEBRTC_INCLUDE_DIR}/webrtc/third_party/libyuv/include" "${WEBRTC_INCLUDE_DIR}/third_party/jsoncpp/overrides/include" "${WEBRTC_INCLUDE_DIR}/third_party/jsoncpp/source/include" "${WEBRTC_INCLUDE_DIR}/third_party/boringssl/src/include" @@ -94,36 +92,34 @@ set (WEBRTC_LIBRARIES_INTERNAL) set (WEBRTC_LIBRARIES_EXTERNAL) if (MSVC) - # from peerconnection_client.ninja, WebRTC branch-heads/55 + # from peerconnection_client.ninja, WebRTC branch-heads/60 list(APPEND _WEBRTC_LIB_NAMES - obj/third_party/libyuv/libyuv.lib obj/webrtc/api/libjingle_peerconnection.lib obj/webrtc/system_wrappers/field_trial_default.lib obj/webrtc/system_wrappers/metrics_default.lib obj/third_party/libjpeg_turbo/libjpeg.lib obj/third_party/libjpeg_turbo/simd.lib obj/third_party/libjpeg_turbo/simd_asm.lib obj/webrtc/webrtc_common.lib obj/webrtc/base/rtc_base_approved.lib obj/webrtc/modules/audio_coding/audio_encoder_interface.lib obj/webrtc/call/call.lib obj/webrtc/audio/audio.lib obj/webrtc/system_wrappers/system_wrappers.lib obj/webrtc/voice_engine/voice_engine.lib obj/webrtc/modules/audio_coding/audio_coding.lib obj/webrtc/modules/audio_coding/webrtc_opus.lib obj/third_party/opus/opus.lib obj/webrtc/modules/audio_coding/audio_decoder_interface.lib obj/webrtc/modules/audio_coding/cng.lib obj/webrtc/common_audio/common_audio.lib obj/third_party/openmax_dl/dl/dl.lib obj/webrtc/common_audio/common_audio_sse2.lib obj/webrtc/modules/audio_coding/g711.lib obj/webrtc/modules/audio_coding/pcm16b.lib obj/webrtc/modules/audio_coding/ilbc.lib obj/webrtc/modules/audio_coding/isac.lib obj/webrtc/modules/audio_coding/isac_common.lib obj/webrtc/modules/audio_coding/g722.lib obj/webrtc/modules/audio_coding/red.lib obj/webrtc/modules/audio_coding/ana_config_proto.lib obj/third_party/protobuf/protobuf_lite.lib obj/webrtc/modules/audio_coding/ana_debug_dump_proto.lib obj/webrtc/modules/audio_coding/neteq.lib obj/webrtc/modules/audio_coding/builtin_audio_decoder_factory.lib obj/webrtc/modules/audio_coding/audio_decoder_factory_interface.lib obj/webrtc/modules/audio_coding/rent_a_codec.lib obj/webrtc/voice_engine/level_indicator.lib obj/webrtc/modules/audio_conference_mixer/audio_conference_mixer.lib obj/webrtc/modules/audio_processing/audio_processing.lib obj/webrtc/modules/audio_processing/audioproc_debug_proto.lib obj/webrtc/modules/audio_processing/audio_processing_sse2.lib obj/webrtc/modules/utility/utility.lib obj/webrtc/base/rtc_task_queue.lib obj/webrtc/modules/media_file/media_file.lib obj/webrtc/modules/audio_device/audio_device.lib obj/webrtc/modules/bitrate_controller/bitrate_controller.lib obj/webrtc/modules/pacing/pacing.lib obj/webrtc/modules/rtp_rtcp/rtp_rtcp.lib obj/webrtc/common_video/common_video.lib obj/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.lib obj/webrtc/logging/rtc_event_log_impl.lib obj/webrtc/logging/rtc_event_log_proto.lib obj/webrtc/modules/congestion_controller/congestion_controller.lib obj/webrtc/video/video.lib obj/webrtc/modules/video_capture/video_capture_module.lib obj/webrtc/modules/video_coding/video_coding.lib obj/webrtc/modules/video_coding/video_coding_utility.lib obj/webrtc/modules/video_coding/webrtc_h264.lib obj/webrtc/modules/video_coding/webrtc_i420.lib obj/webrtc/modules/video_coding/webrtc_vp8.lib obj/third_party/libvpx/libvpx.lib obj/third_party/libvpx/libvpx_yasm.lib obj/webrtc/modules/video_coding/webrtc_vp9.lib obj/webrtc/modules/video_processing/video_processing.lib obj/webrtc/modules/video_processing/video_processing_sse2.lib obj/webrtc/media/rtc_media.lib obj/third_party/usrsctp/usrsctp.lib obj/third_party/boringssl/boringssl.lib obj/third_party/boringssl/boringssl_asm.lib obj/webrtc/modules/video_capture/video_capture_internal_impl.lib obj/third_party/winsdk_samples/winsdk_samples.lib obj/webrtc/libjingle/xmllite/rtc_xmllite.lib obj/third_party/expat/expat.lib obj/webrtc/base/rtc_base.lib obj/webrtc/libjingle/xmpp/rtc_xmpp.lib obj/webrtc/p2p/rtc_p2p.lib obj/webrtc/pc/rtc_pc.lib obj/third_party/libsrtp/libsrtp.lib obj/webrtc/stats/rtc_stats.lib + obj/webrtc/media/rtc_media_base.lib obj/webrtc/base/rtc_base.lib obj/webrtc/base/rtc_base_approved.lib obj/webrtc/media/rtc_media.lib obj/webrtc/modules/video_capture/video_capture_module.lib obj/webrtc/pc/libjingle_peerconnection.lib obj/webrtc/system_wrappers/field_trial_default.lib obj/webrtc/system_wrappers/metrics_default.lib obj/third_party/libyuv/libyuv_internal.lib obj/third_party/libjpeg_turbo/libjpeg.lib obj/third_party/libjpeg_turbo/simd.lib obj/third_party/libjpeg_turbo/simd_asm.lib obj/webrtc/webrtc_common.lib obj/webrtc/api/libjingle_peerconnection_api.lib obj/third_party/boringssl/boringssl.lib obj/third_party/boringssl/boringssl_asm.lib obj/webrtc/system_wrappers/system_wrappers.lib obj/webrtc/api/audio_codecs/builtin_audio_encoder_factory.lib obj/webrtc/modules/audio_coding/builtin_audio_encoder_factory_internal.lib obj/third_party/protobuf/protobuf_lite.lib obj/webrtc/modules/audio_coding/cng.lib obj/webrtc/common_audio/common_audio.lib obj/third_party/openmax_dl/dl/dl.lib obj/webrtc/common_audio/common_audio_sse2.lib obj/webrtc/modules/audio_coding/g711.lib obj/webrtc/modules/audio_coding/legacy_encoded_audio_frame.lib obj/webrtc/modules/audio_coding/pcm16b.lib obj/webrtc/modules/audio_coding/ilbc.lib obj/webrtc/modules/audio_coding/webrtc_opus.lib obj/third_party/opus/opus.lib obj/webrtc/modules/audio_coding/audio_network_adaptor.lib obj/webrtc/modules/audio_coding/ana_config_proto.lib obj/webrtc/modules/audio_coding/ana_debug_dump_proto.lib obj/webrtc/base/rtc_numerics.lib obj/webrtc/modules/audio_coding/isac.lib obj/webrtc/modules/audio_coding/isac_c.lib obj/webrtc/modules/audio_coding/isac_common.lib obj/webrtc/modules/audio_coding/g722.lib obj/webrtc/modules/audio_coding/red.lib obj/webrtc/common_video/common_video.lib obj/webrtc/base/rtc_task_queue.lib obj/webrtc/p2p/libstunprober.lib obj/webrtc/p2p/rtc_p2p.lib obj/third_party/usrsctp/usrsctp.lib obj/webrtc/modules/video_capture/video_capture_internal_impl.lib obj/third_party/winsdk_samples/winsdk_samples.lib obj/webrtc/modules/audio_processing/audioproc_debug_proto.lib obj/webrtc/api/audio_codecs/builtin_audio_decoder_factory.lib obj/webrtc/modules/audio_coding/builtin_audio_decoder_factory_internal.lib obj/webrtc/call/call.lib obj/webrtc/audio/audio.lib obj/webrtc/modules/audio_device/audio_device.lib obj/webrtc/modules/utility/utility.lib obj/webrtc/audio/utility/audio_frame_operations.lib obj/webrtc/modules/audio_coding/audio_format_conversion.lib obj/webrtc/modules/media_file/media_file.lib obj/webrtc/modules/audio_processing/audio_processing.lib obj/webrtc/modules/audio_processing/audio_processing_sse2.lib obj/webrtc/modules/bitrate_controller/bitrate_controller.lib obj/webrtc/modules/rtp_rtcp/rtp_rtcp.lib obj/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.lib obj/webrtc/modules/congestion_controller/congestion_controller.lib obj/webrtc/modules/pacing/pacing.lib obj/webrtc/voice_engine/voice_engine.lib obj/webrtc/modules/audio_coding/audio_coding.lib obj/webrtc/modules/audio_coding/neteq.lib obj/webrtc/modules/audio_coding/isac_fix.lib obj/webrtc/modules/audio_coding/rent_a_codec.lib obj/webrtc/voice_engine/audio_level.lib obj/webrtc/voice_engine/file_player.lib obj/webrtc/voice_engine/audio_coder.lib obj/webrtc/voice_engine/file_recorder.lib obj/webrtc/modules/audio_conference_mixer/audio_conference_mixer.lib obj/webrtc/logging/rtc_event_log_impl.lib obj/webrtc/logging/rtc_event_log_proto.lib obj/webrtc/video/video.lib obj/webrtc/modules/video_coding/video_coding.lib obj/webrtc/modules/video_coding/video_coding_utility.lib obj/webrtc/modules/video_coding/webrtc_h264.lib obj/webrtc/modules/video_coding/webrtc_i420.lib obj/webrtc/modules/video_coding/webrtc_vp8.lib obj/third_party/libvpx/libvpx.lib obj/third_party/libvpx/libvpx_yasm.lib obj/webrtc/modules/video_coding/webrtc_vp9.lib obj/webrtc/modules/video_processing/video_processing.lib obj/webrtc/modules/video_processing/video_processing_sse2.lib obj/webrtc/modules/audio_mixer/audio_mixer_impl.lib obj/webrtc/modules/audio_mixer/audio_frame_manipulator.lib obj/webrtc/pc/rtc_pc.lib obj/third_party/libsrtp/libsrtp.lib obj/webrtc/stats/rtc_stats.lib ) list(APPEND _WEBRTC_OBJ_NAMES - obj/third_party/jsoncpp/jsoncpp/json_reader.obj obj/third_party/jsoncpp/jsoncpp/json_value.obj obj/third_party/jsoncpp/jsoncpp/json_writer.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/controller.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/controller_manager.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.obj obj/webrtc/modules/audio_coding/audio_network_adaptor/smoothing_filter.obj obj/third_party/libvpx/libvpx_intrinsics_avx/vp9_diamond_search_sad_avx.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/vp9_error_intrin_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/fwd_txfm_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/loopfilter_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/sad4d_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/sad_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_impl_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/vpx_subpixel_8t_intrin_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_mmx/idct_blk_mmx.obj obj/third_party/libvpx/libvpx_intrinsics_mmx/vp8_enc_stubs_mmx.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/idct_blk_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/denoising_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_enc_stubs_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_quantize_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_idct_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_dct_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_denoiser_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_highbd_block_error_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_quantize_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/fwd_txfm_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_loopfilter_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_quantize_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_variance_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/inv_txfm_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/loopfilter_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/quantize_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/sum_squares_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/variance_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse4_1/quantize_sse4.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/quantize_ssse3.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_dct_ssse3.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/vpx_subpixel_8t_intrin_ssse3.obj + obj/webrtc/api/video_frame_api/i420_buffer.obj obj/webrtc/api/video_frame_api/video_frame.obj obj/webrtc/api/video_frame_api/video_frame_buffer.obj obj/webrtc/base/rtc_json/json.obj obj/webrtc/api/audio_codecs/audio_codecs_api/audio_decoder.obj obj/webrtc/api/audio_codecs/audio_codecs_api/audio_encoder.obj obj/webrtc/api/audio_codecs/audio_codecs_api/audio_format.obj obj/webrtc/common_audio/common_audio_c/fft4g.obj obj/webrtc/common_audio/common_audio_c/ring_buffer.obj obj/webrtc/common_audio/common_audio_c/auto_corr_to_refl_coef.obj obj/webrtc/common_audio/common_audio_c/auto_correlation.obj obj/webrtc/common_audio/common_audio_c/copy_set_operations.obj obj/webrtc/common_audio/common_audio_c/cross_correlation.obj obj/webrtc/common_audio/common_audio_c/division_operations.obj obj/webrtc/common_audio/common_audio_c/downsample_fast.obj obj/webrtc/common_audio/common_audio_c/energy.obj obj/webrtc/common_audio/common_audio_c/filter_ar.obj obj/webrtc/common_audio/common_audio_c/filter_ma_fast_q12.obj obj/webrtc/common_audio/common_audio_c/get_hanning_window.obj obj/webrtc/common_audio/common_audio_c/get_scaling_square.obj obj/webrtc/common_audio/common_audio_c/ilbc_specific_functions.obj obj/webrtc/common_audio/common_audio_c/levinson_durbin.obj obj/webrtc/common_audio/common_audio_c/lpc_to_refl_coef.obj obj/webrtc/common_audio/common_audio_c/min_max_operations.obj obj/webrtc/common_audio/common_audio_c/randomization_functions.obj obj/webrtc/common_audio/common_audio_c/real_fft.obj obj/webrtc/common_audio/common_audio_c/refl_coef_to_lpc.obj obj/webrtc/common_audio/common_audio_c/resample.obj obj/webrtc/common_audio/common_audio_c/resample_48khz.obj obj/webrtc/common_audio/common_audio_c/resample_by_2.obj obj/webrtc/common_audio/common_audio_c/resample_by_2_internal.obj obj/webrtc/common_audio/common_audio_c/resample_fractional.obj obj/webrtc/common_audio/common_audio_c/spl_init.obj obj/webrtc/common_audio/common_audio_c/spl_inl.obj obj/webrtc/common_audio/common_audio_c/spl_sqrt.obj obj/webrtc/common_audio/common_audio_c/splitting_filter.obj obj/webrtc/common_audio/common_audio_c/sqrt_of_one_minus_x_squared.obj obj/webrtc/common_audio/common_audio_c/vector_scaling_operations.obj obj/webrtc/common_audio/common_audio_c/vad_core.obj obj/webrtc/common_audio/common_audio_c/vad_filterbank.obj obj/webrtc/common_audio/common_audio_c/vad_gmm.obj obj/webrtc/common_audio/common_audio_c/vad_sp.obj obj/webrtc/common_audio/common_audio_c/webrtc_vad.obj obj/webrtc/common_audio/common_audio_c/complex_fft.obj obj/webrtc/common_audio/common_audio_c/complex_bit_reverse.obj obj/webrtc/common_audio/common_audio_c/filter_ar_fast_q12.obj obj/webrtc/common_audio/common_audio_c/spl_sqrt_floor.obj obj/webrtc/common_audio/common_audio_cc/dot_product_with_scale.obj obj/webrtc/modules/audio_coding/g711_c/g711.obj obj/webrtc/modules/audio_coding/g711_c/g711_interface.obj obj/webrtc/modules/audio_coding/pcm16b_c/pcm16b.obj obj/webrtc/modules/audio_coding/ilbc_c/abs_quant.obj obj/webrtc/modules/audio_coding/ilbc_c/abs_quant_loop.obj obj/webrtc/modules/audio_coding/ilbc_c/augmented_cb_corr.obj obj/webrtc/modules/audio_coding/ilbc_c/bw_expand.obj obj/webrtc/modules/audio_coding/ilbc_c/cb_construct.obj obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy.obj obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy_augmentation.obj obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy_calc.obj obj/webrtc/modules/audio_coding/ilbc_c/cb_search.obj obj/webrtc/modules/audio_coding/ilbc_c/cb_search_core.obj obj/webrtc/modules/audio_coding/ilbc_c/cb_update_best_index.obj obj/webrtc/modules/audio_coding/ilbc_c/chebyshev.obj obj/webrtc/modules/audio_coding/ilbc_c/comp_corr.obj obj/webrtc/modules/audio_coding/ilbc_c/constants.obj obj/webrtc/modules/audio_coding/ilbc_c/create_augmented_vec.obj obj/webrtc/modules/audio_coding/ilbc_c/decode.obj obj/webrtc/modules/audio_coding/ilbc_c/decode_residual.obj obj/webrtc/modules/audio_coding/ilbc_c/decoder_interpolate_lsf.obj obj/webrtc/modules/audio_coding/ilbc_c/do_plc.obj obj/webrtc/modules/audio_coding/ilbc_c/encode.obj obj/webrtc/modules/audio_coding/ilbc_c/energy_inverse.obj obj/webrtc/modules/audio_coding/ilbc_c/enh_upsample.obj obj/webrtc/modules/audio_coding/ilbc_c/enhancer.obj obj/webrtc/modules/audio_coding/ilbc_c/enhancer_interface.obj obj/webrtc/modules/audio_coding/ilbc_c/filtered_cb_vecs.obj obj/webrtc/modules/audio_coding/ilbc_c/frame_classify.obj obj/webrtc/modules/audio_coding/ilbc_c/gain_dequant.obj obj/webrtc/modules/audio_coding/ilbc_c/gain_quant.obj obj/webrtc/modules/audio_coding/ilbc_c/get_cd_vec.obj obj/webrtc/modules/audio_coding/ilbc_c/get_lsp_poly.obj obj/webrtc/modules/audio_coding/ilbc_c/get_sync_seq.obj obj/webrtc/modules/audio_coding/ilbc_c/hp_input.obj obj/webrtc/modules/audio_coding/ilbc_c/hp_output.obj obj/webrtc/modules/audio_coding/ilbc_c/ilbc.obj obj/webrtc/modules/audio_coding/ilbc_c/index_conv_dec.obj obj/webrtc/modules/audio_coding/ilbc_c/index_conv_enc.obj obj/webrtc/modules/audio_coding/ilbc_c/init_decode.obj obj/webrtc/modules/audio_coding/ilbc_c/init_encode.obj obj/webrtc/modules/audio_coding/ilbc_c/interpolate.obj obj/webrtc/modules/audio_coding/ilbc_c/interpolate_samples.obj obj/webrtc/modules/audio_coding/ilbc_c/lpc_encode.obj obj/webrtc/modules/audio_coding/ilbc_c/lsf_check.obj obj/webrtc/modules/audio_coding/ilbc_c/lsf_interpolate_to_poly_dec.obj obj/webrtc/modules/audio_coding/ilbc_c/lsf_interpolate_to_poly_enc.obj obj/webrtc/modules/audio_coding/ilbc_c/lsf_to_lsp.obj obj/webrtc/modules/audio_coding/ilbc_c/lsf_to_poly.obj obj/webrtc/modules/audio_coding/ilbc_c/lsp_to_lsf.obj obj/webrtc/modules/audio_coding/ilbc_c/my_corr.obj obj/webrtc/modules/audio_coding/ilbc_c/nearest_neighbor.obj obj/webrtc/modules/audio_coding/ilbc_c/pack_bits.obj obj/webrtc/modules/audio_coding/ilbc_c/poly_to_lsf.obj obj/webrtc/modules/audio_coding/ilbc_c/poly_to_lsp.obj obj/webrtc/modules/audio_coding/ilbc_c/refiner.obj obj/webrtc/modules/audio_coding/ilbc_c/simple_interpolate_lsf.obj obj/webrtc/modules/audio_coding/ilbc_c/simple_lpc_analysis.obj obj/webrtc/modules/audio_coding/ilbc_c/simple_lsf_dequant.obj obj/webrtc/modules/audio_coding/ilbc_c/simple_lsf_quant.obj obj/webrtc/modules/audio_coding/ilbc_c/smooth.obj obj/webrtc/modules/audio_coding/ilbc_c/smooth_out_data.obj obj/webrtc/modules/audio_coding/ilbc_c/sort_sq.obj obj/webrtc/modules/audio_coding/ilbc_c/split_vq.obj obj/webrtc/modules/audio_coding/ilbc_c/state_construct.obj obj/webrtc/modules/audio_coding/ilbc_c/state_search.obj obj/webrtc/modules/audio_coding/ilbc_c/swap_bytes.obj obj/webrtc/modules/audio_coding/ilbc_c/unpack_bits.obj obj/webrtc/modules/audio_coding/ilbc_c/vq3.obj obj/webrtc/modules/audio_coding/ilbc_c/vq4.obj obj/webrtc/modules/audio_coding/ilbc_c/window32_w32.obj obj/webrtc/modules/audio_coding/ilbc_c/xcorr_coef.obj obj/webrtc/modules/audio_coding/webrtc_opus_c/opus_interface.obj obj/webrtc/call/call_interfaces/audio_send_stream.obj obj/webrtc/call/call_interfaces/syncable.obj obj/webrtc/modules/audio_coding/g722_c/g722_decode.obj obj/webrtc/modules/audio_coding/g722_c/g722_encode.obj obj/webrtc/modules/audio_coding/g722_c/g722_interface.obj obj/webrtc/api/ortc_api/mediadescription.obj obj/webrtc/api/ortc_api/sessiondescription.obj obj/third_party/jsoncpp/jsoncpp/json_reader.obj obj/third_party/jsoncpp/jsoncpp/json_value.obj obj/third_party/jsoncpp/jsoncpp/json_writer.obj obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/aec_dump_impl.obj obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/capture_stream_info.obj obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/write_to_file_task.obj obj/webrtc/modules/audio_processing/aec_dump_interface/aec_dump.obj obj/webrtc/modules/audio_processing/audio_processing_c/analog_agc.obj obj/webrtc/modules/audio_processing/audio_processing_c/digital_agc.obj obj/webrtc/modules/audio_processing/audio_processing_c/noise_suppression.obj obj/webrtc/modules/audio_processing/audio_processing_c/ns_core.obj obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines.obj obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines_hist.obj obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines_logist.obj obj/webrtc/modules/audio_coding/isac_fix_c/bandwidth_estimator.obj obj/webrtc/modules/audio_coding/isac_fix_c/decode.obj obj/webrtc/modules/audio_coding/isac_fix_c/decode_bwe.obj obj/webrtc/modules/audio_coding/isac_fix_c/decode_plc.obj obj/webrtc/modules/audio_coding/isac_fix_c/encode.obj obj/webrtc/modules/audio_coding/isac_fix_c/entropy_coding.obj obj/webrtc/modules/audio_coding/isac_fix_c/filterbank_tables.obj obj/webrtc/modules/audio_coding/isac_fix_c/filterbanks.obj obj/webrtc/modules/audio_coding/isac_fix_c/filters.obj obj/webrtc/modules/audio_coding/isac_fix_c/initialize.obj obj/webrtc/modules/audio_coding/isac_fix_c/isacfix.obj obj/webrtc/modules/audio_coding/isac_fix_c/lattice.obj obj/webrtc/modules/audio_coding/isac_fix_c/lattice_c.obj obj/webrtc/modules/audio_coding/isac_fix_c/lpc_masking_model.obj obj/webrtc/modules/audio_coding/isac_fix_c/lpc_tables.obj obj/webrtc/modules/audio_coding/isac_fix_c/pitch_estimator.obj obj/webrtc/modules/audio_coding/isac_fix_c/pitch_estimator_c.obj obj/webrtc/modules/audio_coding/isac_fix_c/pitch_filter.obj obj/webrtc/modules/audio_coding/isac_fix_c/pitch_filter_c.obj obj/webrtc/modules/audio_coding/isac_fix_c/pitch_gain_tables.obj obj/webrtc/modules/audio_coding/isac_fix_c/pitch_lag_tables.obj obj/webrtc/modules/audio_coding/isac_fix_c/spectrum_ar_model_tables.obj obj/webrtc/modules/audio_coding/isac_fix_c/transform.obj obj/webrtc/modules/audio_coding/isac_fix_c/transform_tables.obj obj/webrtc/modules/audio_coding/isac_fix_common/fft.obj obj/webrtc/modules/audio_coding/neteq_decoder_enum/neteq_decoder_enum.obj obj/third_party/libvpx/libvpx_intrinsics_avx/vp9_diamond_search_sad_avx.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/vp9_error_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/fwd_txfm_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/highbd_convolve_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/loopfilter_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/sad4d_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/sad_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_impl_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_avx2/vpx_subpixel_8t_intrin_avx2.obj obj/third_party/libvpx/libvpx_intrinsics_mmx/idct_blk_mmx.obj obj/third_party/libvpx/libvpx_intrinsics_mmx/vp8_enc_stubs_mmx.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/idct_blk_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/denoising_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_enc_stubs_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_quantize_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_idct_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_dct_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_denoiser_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_highbd_block_error_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_quantize_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_pred_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/fwd_txfm_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct16x16_add_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct32x32_add_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct4x4_add_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct8x8_add_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_loopfilter_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_quantize_intrin_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_variance_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/inv_txfm_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/loopfilter_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/quantize_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/sum_squares_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse2/variance_sse2.obj obj/third_party/libvpx/libvpx_intrinsics_sse4_1/quantize_sse4.obj obj/third_party/libvpx/libvpx_intrinsics_sse4_1/temporal_filter_sse4.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/quantize_ssse3.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_dct_ssse3.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_frame_scale_ssse3.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/inv_txfm_ssse3.obj obj/third_party/libvpx/libvpx_intrinsics_ssse3/vpx_subpixel_8t_intrin_ssse3.obj ) elseif (APPLE) - # from api/peerconnection_unittests.ninja, WebRTC branch-heads/55 - # TODO: Remove unnecessary objects refer to peerconnection_client.ninja + # from api/peerconnection_client.ninja, WebRTC branch-heads/60 list(APPEND _WEBRTC_LIB_NAMES - obj/webrtc/api/libjingle_peerconnection.a obj/webrtc/libwebrtc_common.a obj/webrtc/pc/librtc_pc.a obj/webrtc/system_wrappers/libmetrics_default.a obj/testing/gmock/libgmock.a obj/webrtc/base/librtc_base_approved.a obj/webrtc/modules/audio_coding/libaudio_encoder_interface.a obj/webrtc/call/libcall.a obj/webrtc/audio/libaudio.a obj/webrtc/system_wrappers/libsystem_wrappers.a obj/webrtc/voice_engine/libvoice_engine.a obj/webrtc/modules/audio_coding/libaudio_coding.a obj/webrtc/modules/audio_coding/libwebrtc_opus.a obj/third_party/opus/libopus.a obj/webrtc/modules/audio_coding/libaudio_decoder_interface.a obj/webrtc/modules/audio_coding/libcng.a obj/webrtc/common_audio/libcommon_audio.a obj/third_party/openmax_dl/dl/libdl.a obj/webrtc/common_audio/libcommon_audio_sse2.a obj/webrtc/modules/audio_coding/libg711.a obj/webrtc/modules/audio_coding/libpcm16b.a obj/webrtc/modules/audio_coding/libilbc.a obj/webrtc/modules/audio_coding/libisac.a obj/webrtc/modules/audio_coding/libisac_common.a obj/webrtc/modules/audio_coding/libg722.a obj/webrtc/modules/audio_coding/libred.a obj/webrtc/modules/audio_coding/libana_config_proto.a obj/third_party/protobuf/libprotobuf_lite.a obj/webrtc/modules/audio_coding/libana_debug_dump_proto.a obj/webrtc/modules/audio_coding/libneteq.a obj/webrtc/modules/audio_coding/libbuiltin_audio_decoder_factory.a obj/webrtc/modules/audio_coding/libaudio_decoder_factory_interface.a obj/webrtc/modules/audio_coding/librent_a_codec.a obj/webrtc/voice_engine/liblevel_indicator.a obj/webrtc/modules/audio_conference_mixer/libaudio_conference_mixer.a obj/webrtc/modules/audio_processing/libaudio_processing.a obj/webrtc/modules/audio_processing/libaudioproc_debug_proto.a obj/webrtc/modules/audio_processing/libaudio_processing_sse2.a obj/webrtc/modules/utility/libutility.a obj/webrtc/base/librtc_task_queue.a obj/webrtc/modules/media_file/libmedia_file.a obj/webrtc/modules/audio_device/libaudio_device.a obj/webrtc/modules/bitrate_controller/libbitrate_controller.a obj/webrtc/modules/pacing/libpacing.a obj/webrtc/modules/rtp_rtcp/librtp_rtcp.a obj/webrtc/common_video/libcommon_video.a obj/third_party/libyuv/libyuv.a obj/third_party/libjpeg_turbo/libjpeg.a obj/third_party/libjpeg_turbo/libsimd.a obj/third_party/libjpeg_turbo/libsimd_asm.a obj/webrtc/modules/remote_bitrate_estimator/libremote_bitrate_estimator.a obj/webrtc/logging/librtc_event_log_impl.a obj/webrtc/logging/librtc_event_log_proto.a obj/webrtc/modules/congestion_controller/libcongestion_controller.a obj/webrtc/video/libvideo.a obj/webrtc/modules/video_capture/libvideo_capture_module.a obj/webrtc/modules/video_coding/libvideo_coding.a obj/webrtc/modules/video_coding/libvideo_coding_utility.a obj/webrtc/modules/video_coding/libwebrtc_h264.a obj/webrtc/modules/video_coding/libwebrtc_i420.a obj/webrtc/modules/video_coding/libwebrtc_vp8.a obj/third_party/libvpx/libvpx.a obj/third_party/libvpx/libvpx_yasm.a obj/webrtc/modules/video_coding/libwebrtc_vp9.a obj/webrtc/modules/video_processing/libvideo_processing.a obj/webrtc/modules/video_processing/libvideo_processing_sse2.a obj/webrtc/media/librtc_media.a obj/third_party/usrsctp/libusrsctp.a obj/third_party/boringssl/libboringssl.a obj/webrtc/modules/video_capture/libvideo_capture_internal_impl.a obj/webrtc/libjingle/xmllite/librtc_xmllite.a obj/third_party/expat/libexpat.a obj/webrtc/base/librtc_base.a obj/webrtc/libjingle/xmpp/librtc_xmpp.a obj/webrtc/p2p/librtc_p2p.a obj/third_party/libsrtp/libsrtp.a obj/webrtc/stats/librtc_stats.a obj/testing/gtest/libgtest.a obj/webrtc/system_wrappers/libfield_trial_default.a + obj/webrtc/base/librtc_base.a obj/webrtc/base/librtc_base_approved.a obj/webrtc/media/librtc_media.a obj/webrtc/modules/video_capture/libvideo_capture_module.a obj/webrtc/pc/libjingle_peerconnection.a obj/webrtc/system_wrappers/libfield_trial_default.a obj/webrtc/system_wrappers/libmetrics_default.a obj/third_party/libyuv/libyuv_internal.a obj/third_party/libjpeg_turbo/libjpeg.a obj/third_party/libjpeg_turbo/libsimd.a obj/third_party/libjpeg_turbo/libsimd_asm.a obj/webrtc/api/libjingle_peerconnection_api.a obj/webrtc/libwebrtc_common.a obj/third_party/boringssl/libboringssl.a obj/webrtc/system_wrappers/libsystem_wrappers.a obj/third_party/usrsctp/libusrsctp.a obj/webrtc/modules/video_capture/libvideo_capture_internal_impl.a obj/webrtc/common_video/libcommon_video.a obj/webrtc/base/librtc_task_queue.a obj/third_party/protobuf/libprotobuf_lite.a obj/webrtc/modules/audio_processing/libaudioproc_debug_proto.a obj/webrtc/media/librtc_media_base.a obj/webrtc/api/audio_codecs/libbuiltin_audio_encoder_factory.a obj/webrtc/modules/audio_coding/libbuiltin_audio_encoder_factory_internal.a obj/webrtc/modules/audio_coding/libcng.a obj/webrtc/common_audio/libcommon_audio.a obj/third_party/openmax_dl/dl/libdl.a obj/webrtc/common_audio/libcommon_audio_sse2.a obj/webrtc/modules/audio_coding/libg711.a obj/webrtc/modules/audio_coding/liblegacy_encoded_audio_frame.a obj/webrtc/modules/audio_coding/libpcm16b.a obj/webrtc/modules/audio_coding/libilbc.a obj/webrtc/modules/audio_coding/libwebrtc_opus.a obj/third_party/opus/libopus.a obj/webrtc/modules/audio_coding/libaudio_network_adaptor.a obj/webrtc/modules/audio_coding/libana_config_proto.a obj/webrtc/modules/audio_coding/libana_debug_dump_proto.a obj/webrtc/base/librtc_numerics.a obj/webrtc/modules/audio_coding/libisac.a obj/webrtc/modules/audio_coding/libisac_c.a obj/webrtc/modules/audio_coding/libisac_common.a obj/webrtc/modules/audio_coding/libg722.a obj/webrtc/modules/audio_coding/libred.a obj/webrtc/p2p/libstunprober.a obj/webrtc/p2p/librtc_p2p.a obj/webrtc/api/audio_codecs/libbuiltin_audio_decoder_factory.a obj/webrtc/modules/audio_coding/libbuiltin_audio_decoder_factory_internal.a obj/webrtc/call/libcall.a obj/webrtc/audio/libaudio.a obj/webrtc/modules/audio_device/libaudio_device.a obj/webrtc/modules/utility/libutility.a obj/webrtc/audio/utility/libaudio_frame_operations.a obj/webrtc/modules/audio_coding/libaudio_format_conversion.a obj/webrtc/modules/media_file/libmedia_file.a obj/webrtc/modules/audio_processing/libaudio_processing.a obj/webrtc/modules/audio_processing/libaudio_processing_sse2.a obj/webrtc/modules/bitrate_controller/libbitrate_controller.a obj/webrtc/modules/rtp_rtcp/librtp_rtcp.a obj/webrtc/modules/remote_bitrate_estimator/libremote_bitrate_estimator.a obj/webrtc/modules/congestion_controller/libcongestion_controller.a obj/webrtc/modules/pacing/libpacing.a obj/webrtc/voice_engine/libvoice_engine.a obj/webrtc/modules/audio_coding/libaudio_coding.a obj/webrtc/modules/audio_coding/libneteq.a obj/webrtc/modules/audio_coding/libisac_fix.a obj/webrtc/modules/audio_coding/librent_a_codec.a obj/webrtc/voice_engine/libaudio_level.a obj/webrtc/voice_engine/libfile_player.a obj/webrtc/voice_engine/libaudio_coder.a obj/webrtc/voice_engine/libfile_recorder.a obj/webrtc/modules/audio_conference_mixer/libaudio_conference_mixer.a obj/webrtc/logging/librtc_event_log_impl.a obj/webrtc/logging/librtc_event_log_proto.a obj/webrtc/video/libvideo.a obj/webrtc/modules/video_coding/libvideo_coding.a obj/webrtc/modules/video_coding/libvideo_coding_utility.a obj/webrtc/modules/video_coding/libwebrtc_h264.a obj/webrtc/modules/video_coding/libwebrtc_i420.a obj/webrtc/modules/video_coding/libwebrtc_vp8.a obj/third_party/libvpx/libvpx.a obj/third_party/libvpx/libvpx_yasm.a obj/webrtc/modules/video_coding/libwebrtc_vp9.a obj/webrtc/modules/video_processing/libvideo_processing.a obj/webrtc/modules/video_processing/libvideo_processing_sse2.a obj/webrtc/modules/audio_mixer/libaudio_mixer_impl.a obj/webrtc/modules/audio_mixer/libaudio_frame_manipulator.a obj/webrtc/pc/librtc_pc.a obj/third_party/libsrtp/libsrtp.a obj/webrtc/stats/librtc_stats.a ) list(APPEND _WEBRTC_OBJ_NAMES - obj/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.o obj/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.o obj/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/controller_manager.o obj/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.o obj/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/smoothing_filter.o obj/third_party/libvpx/libvpx_intrinsics_avx/vp9_diamond_search_sad_avx.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vp9_error_intrin_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/fwd_txfm_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/loopfilter_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad4d_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_impl_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vpx_subpixel_8t_intrin_avx2.o obj/third_party/libvpx/libvpx_intrinsics_mmx/idct_blk_mmx.o obj/third_party/libvpx/libvpx_intrinsics_mmx/vp8_enc_stubs_mmx.o obj/third_party/libvpx/libvpx_intrinsics_sse2/idct_blk_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/denoising_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_enc_stubs_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_idct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_dct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_denoiser_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_highbd_block_error_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/fwd_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_quantize_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/inv_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/sum_squares_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse4_1/quantize_sse4.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/quantize_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_dct_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vpx_subpixel_8t_intrin_ssse3.o obj/third_party/boringssl/boringssl_asm/aes-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-x86_64.o obj/third_party/boringssl/boringssl_asm/bsaes-x86_64.o obj/third_party/boringssl/boringssl_asm/vpaes-x86_64.o obj/third_party/boringssl/boringssl_asm/rsaz-avx2.o obj/third_party/boringssl/boringssl_asm/rsaz-x86_64.o obj/third_party/boringssl/boringssl_asm/x86_64-mont.o obj/third_party/boringssl/boringssl_asm/x86_64-mont5.o obj/third_party/boringssl/boringssl_asm/chacha-x86_64.o obj/third_party/boringssl/boringssl_asm/p256-x86_64-asm.o obj/third_party/boringssl/boringssl_asm/md5-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-gcm-x86_64.o obj/third_party/boringssl/boringssl_asm/ghash-x86_64.o obj/third_party/boringssl/boringssl_asm/rdrand-x86_64.o obj/third_party/boringssl/boringssl_asm/sha1-x86_64.o obj/third_party/boringssl/boringssl_asm/sha256-x86_64.o obj/third_party/boringssl/boringssl_asm/sha512-x86_64.o obj/third_party/boringssl/boringssl_asm/x25519-asm-x86_64.o obj/third_party/jsoncpp/jsoncpp/json_reader.o obj/third_party/jsoncpp/jsoncpp/json_value.o obj/third_party/jsoncpp/jsoncpp/json_writer.o + obj/webrtc/api/video_frame_api/i420_buffer.o obj/webrtc/api/video_frame_api/video_frame.o obj/webrtc/api/video_frame_api/video_frame_buffer.o obj/webrtc/base/rtc_json/json.o obj/third_party/boringssl/boringssl_asm/chacha-x86_64.o obj/third_party/boringssl/boringssl_asm/aes128gcmsiv-x86_64.o obj/third_party/boringssl/boringssl_asm/chacha20_poly1305_x86_64.o obj/third_party/boringssl/boringssl_asm/aes-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-gcm-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-x86_64.o obj/third_party/boringssl/boringssl_asm/bsaes-x86_64.o obj/third_party/boringssl/boringssl_asm/ghash-x86_64.o obj/third_party/boringssl/boringssl_asm/md5-x86_64.o obj/third_party/boringssl/boringssl_asm/p256-x86_64-asm.o obj/third_party/boringssl/boringssl_asm/rdrand-x86_64.o obj/third_party/boringssl/boringssl_asm/rsaz-avx2.o obj/third_party/boringssl/boringssl_asm/sha1-x86_64.o obj/third_party/boringssl/boringssl_asm/sha256-x86_64.o obj/third_party/boringssl/boringssl_asm/sha512-x86_64.o obj/third_party/boringssl/boringssl_asm/vpaes-x86_64.o obj/third_party/boringssl/boringssl_asm/x86_64-mont.o obj/third_party/boringssl/boringssl_asm/x86_64-mont5.o obj/third_party/boringssl/boringssl_asm/x25519-asm-x86_64.o obj/webrtc/api/audio_codecs/audio_codecs_api/audio_decoder.o obj/webrtc/api/audio_codecs/audio_codecs_api/audio_encoder.o obj/webrtc/api/audio_codecs/audio_codecs_api/audio_format.o obj/third_party/jsoncpp/jsoncpp/json_reader.o obj/third_party/jsoncpp/jsoncpp/json_value.o obj/third_party/jsoncpp/jsoncpp/json_writer.o obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/aec_dump_impl.o obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/capture_stream_info.o obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/write_to_file_task.o obj/webrtc/modules/audio_processing/aec_dump_interface/aec_dump.o obj/webrtc/common_audio/common_audio_c/fft4g.o obj/webrtc/common_audio/common_audio_c/ring_buffer.o obj/webrtc/common_audio/common_audio_c/auto_corr_to_refl_coef.o obj/webrtc/common_audio/common_audio_c/auto_correlation.o obj/webrtc/common_audio/common_audio_c/copy_set_operations.o obj/webrtc/common_audio/common_audio_c/cross_correlation.o obj/webrtc/common_audio/common_audio_c/division_operations.o obj/webrtc/common_audio/common_audio_c/downsample_fast.o obj/webrtc/common_audio/common_audio_c/energy.o obj/webrtc/common_audio/common_audio_c/filter_ar.o obj/webrtc/common_audio/common_audio_c/filter_ma_fast_q12.o obj/webrtc/common_audio/common_audio_c/get_hanning_window.o obj/webrtc/common_audio/common_audio_c/get_scaling_square.o obj/webrtc/common_audio/common_audio_c/ilbc_specific_functions.o obj/webrtc/common_audio/common_audio_c/levinson_durbin.o obj/webrtc/common_audio/common_audio_c/lpc_to_refl_coef.o obj/webrtc/common_audio/common_audio_c/min_max_operations.o obj/webrtc/common_audio/common_audio_c/randomization_functions.o obj/webrtc/common_audio/common_audio_c/real_fft.o obj/webrtc/common_audio/common_audio_c/refl_coef_to_lpc.o obj/webrtc/common_audio/common_audio_c/resample.o obj/webrtc/common_audio/common_audio_c/resample_48khz.o obj/webrtc/common_audio/common_audio_c/resample_by_2.o obj/webrtc/common_audio/common_audio_c/resample_by_2_internal.o obj/webrtc/common_audio/common_audio_c/resample_fractional.o obj/webrtc/common_audio/common_audio_c/spl_init.o obj/webrtc/common_audio/common_audio_c/spl_inl.o obj/webrtc/common_audio/common_audio_c/spl_sqrt.o obj/webrtc/common_audio/common_audio_c/splitting_filter.o obj/webrtc/common_audio/common_audio_c/sqrt_of_one_minus_x_squared.o obj/webrtc/common_audio/common_audio_c/vector_scaling_operations.o obj/webrtc/common_audio/common_audio_c/vad_core.o obj/webrtc/common_audio/common_audio_c/vad_filterbank.o obj/webrtc/common_audio/common_audio_c/vad_gmm.o obj/webrtc/common_audio/common_audio_c/vad_sp.o obj/webrtc/common_audio/common_audio_c/webrtc_vad.o obj/webrtc/common_audio/common_audio_c/complex_fft.o obj/webrtc/common_audio/common_audio_c/complex_bit_reverse.o obj/webrtc/common_audio/common_audio_c/filter_ar_fast_q12.o obj/webrtc/common_audio/common_audio_c/spl_sqrt_floor.o obj/webrtc/common_audio/common_audio_cc/dot_product_with_scale.o obj/webrtc/modules/audio_coding/g711_c/g711.o obj/webrtc/modules/audio_coding/g711_c/g711_interface.o obj/webrtc/modules/audio_coding/pcm16b_c/pcm16b.o obj/webrtc/modules/audio_coding/ilbc_c/abs_quant.o obj/webrtc/modules/audio_coding/ilbc_c/abs_quant_loop.o obj/webrtc/modules/audio_coding/ilbc_c/augmented_cb_corr.o obj/webrtc/modules/audio_coding/ilbc_c/bw_expand.o obj/webrtc/modules/audio_coding/ilbc_c/cb_construct.o obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy.o obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy_augmentation.o obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy_calc.o obj/webrtc/modules/audio_coding/ilbc_c/cb_search.o obj/webrtc/modules/audio_coding/ilbc_c/cb_search_core.o obj/webrtc/modules/audio_coding/ilbc_c/cb_update_best_index.o obj/webrtc/modules/audio_coding/ilbc_c/chebyshev.o obj/webrtc/modules/audio_coding/ilbc_c/comp_corr.o obj/webrtc/modules/audio_coding/ilbc_c/constants.o obj/webrtc/modules/audio_coding/ilbc_c/create_augmented_vec.o obj/webrtc/modules/audio_coding/ilbc_c/decode.o obj/webrtc/modules/audio_coding/ilbc_c/decode_residual.o obj/webrtc/modules/audio_coding/ilbc_c/decoder_interpolate_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/do_plc.o obj/webrtc/modules/audio_coding/ilbc_c/encode.o obj/webrtc/modules/audio_coding/ilbc_c/energy_inverse.o obj/webrtc/modules/audio_coding/ilbc_c/enh_upsample.o obj/webrtc/modules/audio_coding/ilbc_c/enhancer.o obj/webrtc/modules/audio_coding/ilbc_c/enhancer_interface.o obj/webrtc/modules/audio_coding/ilbc_c/filtered_cb_vecs.o obj/webrtc/modules/audio_coding/ilbc_c/frame_classify.o obj/webrtc/modules/audio_coding/ilbc_c/gain_dequant.o obj/webrtc/modules/audio_coding/ilbc_c/gain_quant.o obj/webrtc/modules/audio_coding/ilbc_c/get_cd_vec.o obj/webrtc/modules/audio_coding/ilbc_c/get_lsp_poly.o obj/webrtc/modules/audio_coding/ilbc_c/get_sync_seq.o obj/webrtc/modules/audio_coding/ilbc_c/hp_input.o obj/webrtc/modules/audio_coding/ilbc_c/hp_output.o obj/webrtc/modules/audio_coding/ilbc_c/ilbc.o obj/webrtc/modules/audio_coding/ilbc_c/index_conv_dec.o obj/webrtc/modules/audio_coding/ilbc_c/index_conv_enc.o obj/webrtc/modules/audio_coding/ilbc_c/init_decode.o obj/webrtc/modules/audio_coding/ilbc_c/init_encode.o obj/webrtc/modules/audio_coding/ilbc_c/interpolate.o obj/webrtc/modules/audio_coding/ilbc_c/interpolate_samples.o obj/webrtc/modules/audio_coding/ilbc_c/lpc_encode.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_check.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_interpolate_to_poly_dec.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_interpolate_to_poly_enc.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_to_lsp.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_to_poly.o obj/webrtc/modules/audio_coding/ilbc_c/lsp_to_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/my_corr.o obj/webrtc/modules/audio_coding/ilbc_c/nearest_neighbor.o obj/webrtc/modules/audio_coding/ilbc_c/pack_bits.o obj/webrtc/modules/audio_coding/ilbc_c/poly_to_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/poly_to_lsp.o obj/webrtc/modules/audio_coding/ilbc_c/refiner.o obj/webrtc/modules/audio_coding/ilbc_c/simple_interpolate_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/simple_lpc_analysis.o obj/webrtc/modules/audio_coding/ilbc_c/simple_lsf_dequant.o obj/webrtc/modules/audio_coding/ilbc_c/simple_lsf_quant.o obj/webrtc/modules/audio_coding/ilbc_c/smooth.o obj/webrtc/modules/audio_coding/ilbc_c/smooth_out_data.o obj/webrtc/modules/audio_coding/ilbc_c/sort_sq.o obj/webrtc/modules/audio_coding/ilbc_c/split_vq.o obj/webrtc/modules/audio_coding/ilbc_c/state_construct.o obj/webrtc/modules/audio_coding/ilbc_c/state_search.o obj/webrtc/modules/audio_coding/ilbc_c/swap_bytes.o obj/webrtc/modules/audio_coding/ilbc_c/unpack_bits.o obj/webrtc/modules/audio_coding/ilbc_c/vq3.o obj/webrtc/modules/audio_coding/ilbc_c/vq4.o obj/webrtc/modules/audio_coding/ilbc_c/window32_w32.o obj/webrtc/modules/audio_coding/ilbc_c/xcorr_coef.o obj/webrtc/modules/audio_coding/webrtc_opus_c/opus_interface.o obj/webrtc/call/call_interfaces/audio_send_stream.o obj/webrtc/call/call_interfaces/syncable.o obj/webrtc/modules/audio_coding/g722_c/g722_decode.o obj/webrtc/modules/audio_coding/g722_c/g722_encode.o obj/webrtc/modules/audio_coding/g722_c/g722_interface.o obj/webrtc/api/ortc_api/mediadescription.o obj/webrtc/api/ortc_api/sessiondescription.o obj/webrtc/modules/audio_device/mac_portaudio/pa_ringbuffer.o obj/webrtc/modules/audio_processing/audio_processing_c/analog_agc.o obj/webrtc/modules/audio_processing/audio_processing_c/digital_agc.o obj/webrtc/modules/audio_processing/audio_processing_c/noise_suppression.o obj/webrtc/modules/audio_processing/audio_processing_c/ns_core.o obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines.o obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines_hist.o obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines_logist.o obj/webrtc/modules/audio_coding/isac_fix_c/bandwidth_estimator.o obj/webrtc/modules/audio_coding/isac_fix_c/decode.o obj/webrtc/modules/audio_coding/isac_fix_c/decode_bwe.o obj/webrtc/modules/audio_coding/isac_fix_c/decode_plc.o obj/webrtc/modules/audio_coding/isac_fix_c/encode.o obj/webrtc/modules/audio_coding/isac_fix_c/entropy_coding.o obj/webrtc/modules/audio_coding/isac_fix_c/filterbank_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/filterbanks.o obj/webrtc/modules/audio_coding/isac_fix_c/filters.o obj/webrtc/modules/audio_coding/isac_fix_c/initialize.o obj/webrtc/modules/audio_coding/isac_fix_c/isacfix.o obj/webrtc/modules/audio_coding/isac_fix_c/lattice.o obj/webrtc/modules/audio_coding/isac_fix_c/lattice_c.o obj/webrtc/modules/audio_coding/isac_fix_c/lpc_masking_model.o obj/webrtc/modules/audio_coding/isac_fix_c/lpc_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_estimator.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_estimator_c.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_filter.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_filter_c.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_gain_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_lag_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/spectrum_ar_model_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/transform.o obj/webrtc/modules/audio_coding/isac_fix_c/transform_tables.o obj/webrtc/modules/audio_coding/isac_fix_common/fft.o obj/webrtc/modules/audio_coding/neteq_decoder_enum/neteq_decoder_enum.o obj/third_party/libvpx/libvpx_intrinsics_avx/vp9_diamond_search_sad_avx.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vp9_error_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/fwd_txfm_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/highbd_convolve_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/loopfilter_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad4d_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_impl_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vpx_subpixel_8t_intrin_avx2.o obj/third_party/libvpx/libvpx_intrinsics_mmx/idct_blk_mmx.o obj/third_party/libvpx/libvpx_intrinsics_mmx/vp8_enc_stubs_mmx.o obj/third_party/libvpx/libvpx_intrinsics_sse2/idct_blk_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/denoising_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_enc_stubs_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_idct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_dct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_denoiser_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_highbd_block_error_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_pred_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/fwd_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct16x16_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct32x32_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct4x4_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct8x8_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_quantize_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/inv_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/sum_squares_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse4_1/quantize_sse4.o obj/third_party/libvpx/libvpx_intrinsics_sse4_1/temporal_filter_sse4.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/quantize_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_dct_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_frame_scale_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/inv_txfm_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vpx_subpixel_8t_intrin_ssse3.o ) elseif (UNIX) - # from peerconnection_client.ninja, WebRTC branch-heads/55 + # from peerconnection_client.ninja, WebRTC branch-heads/60 list(APPEND _WEBRTC_LIB_NAMES - obj/third_party/libyuv/libyuv.a obj/webrtc/api/libjingle_peerconnection.a obj/webrtc/system_wrappers/libfield_trial_default.a obj/webrtc/system_wrappers/libmetrics_default.a obj/third_party/libjpeg_turbo/libjpeg.a obj/third_party/libjpeg_turbo/libsimd.a obj/third_party/libjpeg_turbo/libsimd_asm.a obj/webrtc/libwebrtc_common.a obj/webrtc/base/librtc_base_approved.a obj/webrtc/modules/audio_coding/libaudio_encoder_interface.a obj/webrtc/call/libcall.a obj/webrtc/audio/libaudio.a obj/webrtc/system_wrappers/libsystem_wrappers.a obj/webrtc/system_wrappers/libcpu_features_linux.a obj/webrtc/voice_engine/libvoice_engine.a obj/webrtc/modules/audio_coding/libaudio_coding.a obj/webrtc/modules/audio_coding/libwebrtc_opus.a obj/third_party/opus/libopus.a obj/webrtc/modules/audio_coding/libaudio_decoder_interface.a obj/webrtc/modules/audio_coding/libcng.a obj/webrtc/common_audio/libcommon_audio.a obj/third_party/openmax_dl/dl/libdl.a obj/webrtc/common_audio/libcommon_audio_sse2.a obj/webrtc/modules/audio_coding/libg711.a obj/webrtc/modules/audio_coding/libpcm16b.a obj/webrtc/modules/audio_coding/libilbc.a obj/webrtc/modules/audio_coding/libisac.a obj/webrtc/modules/audio_coding/libisac_common.a obj/webrtc/modules/audio_coding/libg722.a obj/webrtc/modules/audio_coding/libred.a obj/webrtc/modules/audio_coding/libana_config_proto.a obj/third_party/protobuf/libprotobuf_lite.a obj/webrtc/modules/audio_coding/libana_debug_dump_proto.a obj/webrtc/modules/audio_coding/libneteq.a obj/webrtc/modules/audio_coding/libbuiltin_audio_decoder_factory.a obj/webrtc/modules/audio_coding/libaudio_decoder_factory_interface.a obj/webrtc/modules/audio_coding/librent_a_codec.a obj/webrtc/voice_engine/liblevel_indicator.a obj/webrtc/modules/audio_conference_mixer/libaudio_conference_mixer.a obj/webrtc/modules/audio_processing/libaudio_processing.a obj/webrtc/modules/audio_processing/libaudioproc_debug_proto.a obj/webrtc/modules/audio_processing/libaudio_processing_sse2.a obj/webrtc/modules/utility/libutility.a obj/webrtc/base/librtc_task_queue.a obj/base/third_party/libevent/libevent.a obj/webrtc/modules/media_file/libmedia_file.a obj/webrtc/modules/audio_device/libaudio_device.a obj/webrtc/modules/bitrate_controller/libbitrate_controller.a obj/webrtc/modules/pacing/libpacing.a obj/webrtc/modules/rtp_rtcp/librtp_rtcp.a obj/webrtc/common_video/libcommon_video.a obj/webrtc/modules/remote_bitrate_estimator/libremote_bitrate_estimator.a obj/webrtc/logging/librtc_event_log_impl.a obj/webrtc/logging/librtc_event_log_proto.a obj/webrtc/modules/congestion_controller/libcongestion_controller.a obj/webrtc/video/libvideo.a obj/webrtc/modules/video_capture/libvideo_capture_module.a obj/webrtc/modules/video_coding/libvideo_coding.a obj/webrtc/modules/video_coding/libvideo_coding_utility.a obj/webrtc/modules/video_coding/libwebrtc_h264.a obj/webrtc/modules/video_coding/libwebrtc_i420.a obj/third_party/libvpx/libvpx_yasm.a obj/webrtc/modules/video_coding/libwebrtc_vp9.a obj/webrtc/modules/video_processing/libvideo_processing.a obj/webrtc/modules/video_processing/libvideo_processing_sse2.a obj/webrtc/media/librtc_media.a obj/third_party/usrsctp/libusrsctp.a obj/third_party/boringssl/libboringssl.a obj/webrtc/modules/video_capture/libvideo_capture_internal_impl.a obj/webrtc/libjingle/xmllite/librtc_xmllite.a obj/webrtc/base/librtc_base.a obj/webrtc/libjingle/xmpp/librtc_xmpp.a obj/webrtc/p2p/librtc_p2p.a obj/webrtc/pc/librtc_pc.a obj/third_party/libsrtp/libsrtp.a obj/webrtc/stats/librtc_stats.a - #obj/webrtc/modules/video_coding/libwebrtc_vp8.a obj/third_party/libvpx/libvpx.a + obj/webrtc/base/librtc_base.a obj/webrtc/base/librtc_base_approved.a obj/webrtc/media/librtc_media.a obj/webrtc/modules/video_capture/libvideo_capture_module.a obj/webrtc/pc/libjingle_peerconnection.a obj/webrtc/system_wrappers/libfield_trial_default.a obj/webrtc/system_wrappers/libmetrics_default.a obj/third_party/libyuv/libyuv_internal.a obj/third_party/libjpeg_turbo/libjpeg.a obj/third_party/libjpeg_turbo/libsimd.a obj/third_party/libjpeg_turbo/libsimd_asm.a obj/webrtc/api/libjingle_peerconnection_api.a obj/webrtc/libwebrtc_common.a obj/third_party/boringssl/libboringssl.a obj/webrtc/system_wrappers/libsystem_wrappers.a obj/webrtc/system_wrappers/libcpu_features_linux.a obj/third_party/usrsctp/libusrsctp.a obj/webrtc/modules/video_capture/libvideo_capture_internal_impl.a obj/webrtc/common_video/libcommon_video.a obj/webrtc/base/librtc_task_queue.a obj/base/third_party/libevent/libevent.a obj/third_party/protobuf/libprotobuf_lite.a obj/webrtc/modules/audio_processing/libaudioproc_debug_proto.a obj/webrtc/media/librtc_media_base.a obj/webrtc/api/audio_codecs/libbuiltin_audio_encoder_factory.a obj/webrtc/modules/audio_coding/libbuiltin_audio_encoder_factory_internal.a obj/webrtc/modules/audio_coding/libcng.a obj/webrtc/common_audio/libcommon_audio.a obj/third_party/openmax_dl/dl/libdl.a obj/webrtc/common_audio/libcommon_audio_sse2.a obj/webrtc/modules/audio_coding/libg711.a obj/webrtc/modules/audio_coding/liblegacy_encoded_audio_frame.a obj/webrtc/modules/audio_coding/libpcm16b.a obj/webrtc/modules/audio_coding/libilbc.a obj/webrtc/modules/audio_coding/libwebrtc_opus.a obj/third_party/opus/libopus.a obj/webrtc/modules/audio_coding/libaudio_network_adaptor.a obj/webrtc/modules/audio_coding/libana_config_proto.a obj/webrtc/modules/audio_coding/libana_debug_dump_proto.a obj/webrtc/base/librtc_numerics.a obj/webrtc/modules/audio_coding/libisac.a obj/webrtc/modules/audio_coding/libisac_c.a obj/webrtc/modules/audio_coding/libisac_common.a obj/webrtc/modules/audio_coding/libg722.a obj/webrtc/modules/audio_coding/libred.a obj/webrtc/p2p/libstunprober.a obj/webrtc/p2p/librtc_p2p.a obj/webrtc/api/audio_codecs/libbuiltin_audio_decoder_factory.a obj/webrtc/modules/audio_coding/libbuiltin_audio_decoder_factory_internal.a obj/webrtc/call/libcall.a obj/webrtc/audio/libaudio.a obj/webrtc/modules/audio_device/libaudio_device.a obj/webrtc/modules/utility/libutility.a obj/webrtc/audio/utility/libaudio_frame_operations.a obj/webrtc/modules/audio_coding/libaudio_format_conversion.a obj/webrtc/modules/media_file/libmedia_file.a obj/webrtc/modules/audio_processing/libaudio_processing.a obj/webrtc/modules/audio_processing/libaudio_processing_sse2.a obj/webrtc/modules/bitrate_controller/libbitrate_controller.a obj/webrtc/modules/rtp_rtcp/librtp_rtcp.a obj/webrtc/modules/remote_bitrate_estimator/libremote_bitrate_estimator.a obj/webrtc/modules/congestion_controller/libcongestion_controller.a obj/webrtc/modules/pacing/libpacing.a obj/webrtc/voice_engine/libvoice_engine.a obj/webrtc/modules/audio_coding/libaudio_coding.a obj/webrtc/modules/audio_coding/libneteq.a obj/webrtc/modules/audio_coding/libisac_fix.a obj/webrtc/modules/audio_coding/librent_a_codec.a obj/webrtc/voice_engine/libaudio_level.a obj/webrtc/voice_engine/libfile_player.a obj/webrtc/voice_engine/libaudio_coder.a obj/webrtc/voice_engine/libfile_recorder.a obj/webrtc/modules/audio_conference_mixer/libaudio_conference_mixer.a obj/webrtc/logging/librtc_event_log_impl.a obj/webrtc/logging/librtc_event_log_proto.a obj/webrtc/video/libvideo.a obj/webrtc/modules/video_coding/libvideo_coding.a obj/webrtc/modules/video_coding/libvideo_coding_utility.a obj/webrtc/modules/video_coding/libwebrtc_h264.a obj/webrtc/modules/video_coding/libwebrtc_i420.a obj/webrtc/modules/video_coding/libwebrtc_vp8.a obj/third_party/libvpx/libvpx.a obj/third_party/libvpx/libvpx_yasm.a obj/webrtc/modules/video_coding/libwebrtc_vp9.a obj/webrtc/modules/video_processing/libvideo_processing.a obj/webrtc/modules/video_processing/libvideo_processing_sse2.a obj/webrtc/modules/audio_mixer/libaudio_mixer_impl.a obj/webrtc/modules/audio_mixer/libaudio_frame_manipulator.a obj/webrtc/pc/librtc_pc.a obj/third_party/libsrtp/libsrtp.a obj/webrtc/stats/librtc_stats.a ) - + list(APPEND _WEBRTC_OBJ_NAMES - obj/third_party/jsoncpp/jsoncpp/json_reader.o obj/third_party/jsoncpp/jsoncpp/json_value.o obj/third_party/jsoncpp/jsoncpp/json_writer.o obj/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.o obj/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.o obj/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/controller_manager.o obj/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.o obj/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.o obj/webrtc/modules/audio_coding/audio_network_adaptor/smoothing_filter.o obj/third_party/libvpx/libvpx_intrinsics_avx/vp9_diamond_search_sad_avx.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vp9_error_intrin_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/fwd_txfm_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/loopfilter_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad4d_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_impl_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vpx_subpixel_8t_intrin_avx2.o obj/third_party/libvpx/libvpx_intrinsics_mmx/idct_blk_mmx.o obj/third_party/libvpx/libvpx_intrinsics_mmx/vp8_enc_stubs_mmx.o obj/third_party/libvpx/libvpx_intrinsics_sse2/idct_blk_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/denoising_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_enc_stubs_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_idct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_dct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_denoiser_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_highbd_block_error_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/fwd_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_quantize_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/inv_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/sum_squares_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse4_1/quantize_sse4.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/quantize_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_dct_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vpx_subpixel_8t_intrin_ssse3.o obj/third_party/boringssl/boringssl_asm/aes-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-x86_64.o obj/third_party/boringssl/boringssl_asm/bsaes-x86_64.o obj/third_party/boringssl/boringssl_asm/vpaes-x86_64.o obj/third_party/boringssl/boringssl_asm/rsaz-avx2.o obj/third_party/boringssl/boringssl_asm/rsaz-x86_64.o obj/third_party/boringssl/boringssl_asm/x86_64-mont.o obj/third_party/boringssl/boringssl_asm/x86_64-mont5.o obj/third_party/boringssl/boringssl_asm/chacha-x86_64.o obj/third_party/boringssl/boringssl_asm/p256-x86_64-asm.o obj/third_party/boringssl/boringssl_asm/md5-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-gcm-x86_64.o obj/third_party/boringssl/boringssl_asm/ghash-x86_64.o obj/third_party/boringssl/boringssl_asm/rdrand-x86_64.o obj/third_party/boringssl/boringssl_asm/sha1-x86_64.o obj/third_party/boringssl/boringssl_asm/sha256-x86_64.o obj/third_party/boringssl/boringssl_asm/sha512-x86_64.o obj/third_party/boringssl/boringssl_asm/x25519-asm-x86_64.o + obj/webrtc/api/video_frame_api/i420_buffer.o obj/webrtc/api/video_frame_api/video_frame.o obj/webrtc/api/video_frame_api/video_frame_buffer.o obj/webrtc/base/rtc_json/json.o obj/third_party/boringssl/boringssl_asm/chacha-x86_64.o obj/third_party/boringssl/boringssl_asm/aes128gcmsiv-x86_64.o obj/third_party/boringssl/boringssl_asm/chacha20_poly1305_x86_64.o obj/third_party/boringssl/boringssl_asm/aes-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-gcm-x86_64.o obj/third_party/boringssl/boringssl_asm/aesni-x86_64.o obj/third_party/boringssl/boringssl_asm/bsaes-x86_64.o obj/third_party/boringssl/boringssl_asm/ghash-x86_64.o obj/third_party/boringssl/boringssl_asm/md5-x86_64.o obj/third_party/boringssl/boringssl_asm/p256-x86_64-asm.o obj/third_party/boringssl/boringssl_asm/rdrand-x86_64.o obj/third_party/boringssl/boringssl_asm/rsaz-avx2.o obj/third_party/boringssl/boringssl_asm/sha1-x86_64.o obj/third_party/boringssl/boringssl_asm/sha256-x86_64.o obj/third_party/boringssl/boringssl_asm/sha512-x86_64.o obj/third_party/boringssl/boringssl_asm/vpaes-x86_64.o obj/third_party/boringssl/boringssl_asm/x86_64-mont.o obj/third_party/boringssl/boringssl_asm/x86_64-mont5.o obj/third_party/boringssl/boringssl_asm/x25519-asm-x86_64.o obj/webrtc/api/audio_codecs/audio_codecs_api/audio_decoder.o obj/webrtc/api/audio_codecs/audio_codecs_api/audio_encoder.o obj/webrtc/api/audio_codecs/audio_codecs_api/audio_format.o obj/third_party/jsoncpp/jsoncpp/json_reader.o obj/third_party/jsoncpp/jsoncpp/json_value.o obj/third_party/jsoncpp/jsoncpp/json_writer.o obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/aec_dump_impl.o obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/capture_stream_info.o obj/webrtc/modules/audio_processing/aec_dump/aec_dump_impl/write_to_file_task.o obj/webrtc/modules/audio_processing/aec_dump_interface/aec_dump.o obj/webrtc/common_audio/common_audio_c/fft4g.o obj/webrtc/common_audio/common_audio_c/ring_buffer.o obj/webrtc/common_audio/common_audio_c/auto_corr_to_refl_coef.o obj/webrtc/common_audio/common_audio_c/auto_correlation.o obj/webrtc/common_audio/common_audio_c/copy_set_operations.o obj/webrtc/common_audio/common_audio_c/cross_correlation.o obj/webrtc/common_audio/common_audio_c/division_operations.o obj/webrtc/common_audio/common_audio_c/downsample_fast.o obj/webrtc/common_audio/common_audio_c/energy.o obj/webrtc/common_audio/common_audio_c/filter_ar.o obj/webrtc/common_audio/common_audio_c/filter_ma_fast_q12.o obj/webrtc/common_audio/common_audio_c/get_hanning_window.o obj/webrtc/common_audio/common_audio_c/get_scaling_square.o obj/webrtc/common_audio/common_audio_c/ilbc_specific_functions.o obj/webrtc/common_audio/common_audio_c/levinson_durbin.o obj/webrtc/common_audio/common_audio_c/lpc_to_refl_coef.o obj/webrtc/common_audio/common_audio_c/min_max_operations.o obj/webrtc/common_audio/common_audio_c/randomization_functions.o obj/webrtc/common_audio/common_audio_c/real_fft.o obj/webrtc/common_audio/common_audio_c/refl_coef_to_lpc.o obj/webrtc/common_audio/common_audio_c/resample.o obj/webrtc/common_audio/common_audio_c/resample_48khz.o obj/webrtc/common_audio/common_audio_c/resample_by_2.o obj/webrtc/common_audio/common_audio_c/resample_by_2_internal.o obj/webrtc/common_audio/common_audio_c/resample_fractional.o obj/webrtc/common_audio/common_audio_c/spl_init.o obj/webrtc/common_audio/common_audio_c/spl_inl.o obj/webrtc/common_audio/common_audio_c/spl_sqrt.o obj/webrtc/common_audio/common_audio_c/splitting_filter.o obj/webrtc/common_audio/common_audio_c/sqrt_of_one_minus_x_squared.o obj/webrtc/common_audio/common_audio_c/vector_scaling_operations.o obj/webrtc/common_audio/common_audio_c/vad_core.o obj/webrtc/common_audio/common_audio_c/vad_filterbank.o obj/webrtc/common_audio/common_audio_c/vad_gmm.o obj/webrtc/common_audio/common_audio_c/vad_sp.o obj/webrtc/common_audio/common_audio_c/webrtc_vad.o obj/webrtc/common_audio/common_audio_c/complex_fft.o obj/webrtc/common_audio/common_audio_c/complex_bit_reverse.o obj/webrtc/common_audio/common_audio_c/filter_ar_fast_q12.o obj/webrtc/common_audio/common_audio_c/spl_sqrt_floor.o obj/webrtc/common_audio/common_audio_cc/dot_product_with_scale.o obj/webrtc/modules/audio_coding/g711_c/g711.o obj/webrtc/modules/audio_coding/g711_c/g711_interface.o obj/webrtc/modules/audio_coding/pcm16b_c/pcm16b.o obj/webrtc/modules/audio_coding/ilbc_c/abs_quant.o obj/webrtc/modules/audio_coding/ilbc_c/abs_quant_loop.o obj/webrtc/modules/audio_coding/ilbc_c/augmented_cb_corr.o obj/webrtc/modules/audio_coding/ilbc_c/bw_expand.o obj/webrtc/modules/audio_coding/ilbc_c/cb_construct.o obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy.o obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy_augmentation.o obj/webrtc/modules/audio_coding/ilbc_c/cb_mem_energy_calc.o obj/webrtc/modules/audio_coding/ilbc_c/cb_search.o obj/webrtc/modules/audio_coding/ilbc_c/cb_search_core.o obj/webrtc/modules/audio_coding/ilbc_c/cb_update_best_index.o obj/webrtc/modules/audio_coding/ilbc_c/chebyshev.o obj/webrtc/modules/audio_coding/ilbc_c/comp_corr.o obj/webrtc/modules/audio_coding/ilbc_c/constants.o obj/webrtc/modules/audio_coding/ilbc_c/create_augmented_vec.o obj/webrtc/modules/audio_coding/ilbc_c/decode.o obj/webrtc/modules/audio_coding/ilbc_c/decode_residual.o obj/webrtc/modules/audio_coding/ilbc_c/decoder_interpolate_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/do_plc.o obj/webrtc/modules/audio_coding/ilbc_c/encode.o obj/webrtc/modules/audio_coding/ilbc_c/energy_inverse.o obj/webrtc/modules/audio_coding/ilbc_c/enh_upsample.o obj/webrtc/modules/audio_coding/ilbc_c/enhancer.o obj/webrtc/modules/audio_coding/ilbc_c/enhancer_interface.o obj/webrtc/modules/audio_coding/ilbc_c/filtered_cb_vecs.o obj/webrtc/modules/audio_coding/ilbc_c/frame_classify.o obj/webrtc/modules/audio_coding/ilbc_c/gain_dequant.o obj/webrtc/modules/audio_coding/ilbc_c/gain_quant.o obj/webrtc/modules/audio_coding/ilbc_c/get_cd_vec.o obj/webrtc/modules/audio_coding/ilbc_c/get_lsp_poly.o obj/webrtc/modules/audio_coding/ilbc_c/get_sync_seq.o obj/webrtc/modules/audio_coding/ilbc_c/hp_input.o obj/webrtc/modules/audio_coding/ilbc_c/hp_output.o obj/webrtc/modules/audio_coding/ilbc_c/ilbc.o obj/webrtc/modules/audio_coding/ilbc_c/index_conv_dec.o obj/webrtc/modules/audio_coding/ilbc_c/index_conv_enc.o obj/webrtc/modules/audio_coding/ilbc_c/init_decode.o obj/webrtc/modules/audio_coding/ilbc_c/init_encode.o obj/webrtc/modules/audio_coding/ilbc_c/interpolate.o obj/webrtc/modules/audio_coding/ilbc_c/interpolate_samples.o obj/webrtc/modules/audio_coding/ilbc_c/lpc_encode.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_check.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_interpolate_to_poly_dec.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_interpolate_to_poly_enc.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_to_lsp.o obj/webrtc/modules/audio_coding/ilbc_c/lsf_to_poly.o obj/webrtc/modules/audio_coding/ilbc_c/lsp_to_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/my_corr.o obj/webrtc/modules/audio_coding/ilbc_c/nearest_neighbor.o obj/webrtc/modules/audio_coding/ilbc_c/pack_bits.o obj/webrtc/modules/audio_coding/ilbc_c/poly_to_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/poly_to_lsp.o obj/webrtc/modules/audio_coding/ilbc_c/refiner.o obj/webrtc/modules/audio_coding/ilbc_c/simple_interpolate_lsf.o obj/webrtc/modules/audio_coding/ilbc_c/simple_lpc_analysis.o obj/webrtc/modules/audio_coding/ilbc_c/simple_lsf_dequant.o obj/webrtc/modules/audio_coding/ilbc_c/simple_lsf_quant.o obj/webrtc/modules/audio_coding/ilbc_c/smooth.o obj/webrtc/modules/audio_coding/ilbc_c/smooth_out_data.o obj/webrtc/modules/audio_coding/ilbc_c/sort_sq.o obj/webrtc/modules/audio_coding/ilbc_c/split_vq.o obj/webrtc/modules/audio_coding/ilbc_c/state_construct.o obj/webrtc/modules/audio_coding/ilbc_c/state_search.o obj/webrtc/modules/audio_coding/ilbc_c/swap_bytes.o obj/webrtc/modules/audio_coding/ilbc_c/unpack_bits.o obj/webrtc/modules/audio_coding/ilbc_c/vq3.o obj/webrtc/modules/audio_coding/ilbc_c/vq4.o obj/webrtc/modules/audio_coding/ilbc_c/window32_w32.o obj/webrtc/modules/audio_coding/ilbc_c/xcorr_coef.o obj/webrtc/modules/audio_coding/webrtc_opus_c/opus_interface.o obj/webrtc/call/call_interfaces/audio_send_stream.o obj/webrtc/call/call_interfaces/syncable.o obj/webrtc/modules/audio_coding/g722_c/g722_decode.o obj/webrtc/modules/audio_coding/g722_c/g722_encode.o obj/webrtc/modules/audio_coding/g722_c/g722_interface.o obj/webrtc/api/ortc_api/mediadescription.o obj/webrtc/api/ortc_api/sessiondescription.o obj/webrtc/modules/audio_processing/audio_processing_c/analog_agc.o obj/webrtc/modules/audio_processing/audio_processing_c/digital_agc.o obj/webrtc/modules/audio_processing/audio_processing_c/noise_suppression.o obj/webrtc/modules/audio_processing/audio_processing_c/ns_core.o obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines.o obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines_hist.o obj/webrtc/modules/audio_coding/isac_fix_c/arith_routines_logist.o obj/webrtc/modules/audio_coding/isac_fix_c/bandwidth_estimator.o obj/webrtc/modules/audio_coding/isac_fix_c/decode.o obj/webrtc/modules/audio_coding/isac_fix_c/decode_bwe.o obj/webrtc/modules/audio_coding/isac_fix_c/decode_plc.o obj/webrtc/modules/audio_coding/isac_fix_c/encode.o obj/webrtc/modules/audio_coding/isac_fix_c/entropy_coding.o obj/webrtc/modules/audio_coding/isac_fix_c/filterbank_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/filterbanks.o obj/webrtc/modules/audio_coding/isac_fix_c/filters.o obj/webrtc/modules/audio_coding/isac_fix_c/initialize.o obj/webrtc/modules/audio_coding/isac_fix_c/isacfix.o obj/webrtc/modules/audio_coding/isac_fix_c/lattice.o obj/webrtc/modules/audio_coding/isac_fix_c/lattice_c.o obj/webrtc/modules/audio_coding/isac_fix_c/lpc_masking_model.o obj/webrtc/modules/audio_coding/isac_fix_c/lpc_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_estimator.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_estimator_c.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_filter.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_filter_c.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_gain_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/pitch_lag_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/spectrum_ar_model_tables.o obj/webrtc/modules/audio_coding/isac_fix_c/transform.o obj/webrtc/modules/audio_coding/isac_fix_c/transform_tables.o obj/webrtc/modules/audio_coding/isac_fix_common/fft.o obj/webrtc/modules/audio_coding/neteq_decoder_enum/neteq_decoder_enum.o obj/third_party/libvpx/libvpx_intrinsics_avx/vp9_diamond_search_sad_avx.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vp9_error_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/fwd_txfm_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/highbd_convolve_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/loopfilter_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad4d_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/sad_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/variance_impl_avx2.o obj/third_party/libvpx/libvpx_intrinsics_avx2/vpx_subpixel_8t_intrin_avx2.o obj/third_party/libvpx/libvpx_intrinsics_mmx/idct_blk_mmx.o obj/third_party/libvpx/libvpx_intrinsics_mmx/vp8_enc_stubs_mmx.o obj/third_party/libvpx/libvpx_intrinsics_sse2/idct_blk_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/denoising_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_enc_stubs_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp8_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_idct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_dct_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_denoiser_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_highbd_block_error_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/vp9_quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/avg_pred_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/fwd_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct16x16_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct32x32_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct4x4_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_idct8x8_add_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_quantize_intrin_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/highbd_variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/inv_txfm_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/loopfilter_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/quantize_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/sum_squares_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse2/variance_sse2.o obj/third_party/libvpx/libvpx_intrinsics_sse4_1/quantize_sse4.o obj/third_party/libvpx/libvpx_intrinsics_sse4_1/temporal_filter_sse4.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/quantize_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_dct_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vp9_frame_scale_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/inv_txfm_ssse3.o obj/third_party/libvpx/libvpx_intrinsics_ssse3/vpx_subpixel_8t_intrin_ssse3.o ) else (MSVC) message(FATAL_ERROR "Unknown environment. \n") @@ -226,62 +222,30 @@ endif() if (MSVC) set(WEBRTC_DEFINES - # from peerconnection_client.ninja - -DV8_DEPRECATION_WARNINGS -DENABLE_MDNS=1 -DENABLE_NOTIFICATIONS -DENABLE_PEPPER_CDMS - -DENABLE_PLUGINS=1 -DENABLE_PDF=1 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 - -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DUSE_AURA=1 -DUSE_DEFAULT_RENDER_THEME=1 - -DNO_TCMALLOC -DENABLE_WEBRTC=1 -DENABLE_EXTENSIONS=1 -DENABLE_TASK_MANAGER=1 - -DENABLE_THEMES=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_SESSION_SERVICE=1 - -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_SERVICE_DISCOVERY=1 - -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD - -DENABLE_MEDIA_ROUTER=1 -DFIELDTRIAL_TESTING_ENABLED -D__STD_C -D_CRT_RAND_S - -D_CRT_SECURE_NO_DEPRECATE -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_ATL_NO_OPENGL - -D_WINDOWS -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -DPSAPI_VERSION=1 -DWIN32 -D_SECURE_ATL - -DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_UNICODE -DUNICODE - -DNVALGRIND - -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DWEBRTC_WIN -D_CRT_SECURE_NO_WARNINGS + # from peerconnection_client.ninja, WebRTC branch-heads/60 - # Skipped from origianl peerconnection_client.ninja - # -D_USING_V110_SDK71_ -D_WIN32_WINNT=0x0A00 -DNTDDI_VERSION=0x0A000000 -DWINVER=0x0A00 -DNDEBUG - ) + -DV8_DEPRECATION_WARNINGS -DUSE_AURA=1 -DNO_TCMALLOC -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -D__STD_C -D_CRT_RAND_S -D_CRT_SECURE_NO_DEPRECATE -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_ATL_NO_OPENGL -D_WINDOWS -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -DPSAPI_VERSION=1 -DWIN32 -D_SECURE_ATL -DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_UNICODE -DUNICODE -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DWEBRTC_ENABLE_PROTOBUF=1 -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DEXPAT_RELATIVE_PATH -DHAVE_SCTP -DWEBRTC_WIN -D_CRT_SECURE_NO_WARNINGS -DHAVE_WEBRTC_VIDEO -DHAVE_WEBRTC_VOICE + + # Removed from origianl peerconnection_client.ninja + # -D_USING_V110_SDK71_ -DNTDDI_VERSION=0x0A000000 -D_WIN32_WINNT=0x0A00 -DWINVER=0x0A00 -DNDEBUG + ) elseif (APPLE) - # from api/peerconnection_unittests.ninja + # from peerconnection_client.ninja, WebRTC branch-heads/60 set(WEBRTC_DEFINES - -DHAVE_SCTP -DV8_DEPRECATION_WARNINGS -DENABLE_NOTIFICATIONS - -DENABLE_PEPPER_CDMS -DENABLE_PLUGINS=1 -DENABLE_PDF=1 - -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 - -DENABLE_SPELLCHECK=1 -DUSE_BROWSER_SPELLCHECKER=1 -DNO_TCMALLOC - -DUSE_EXTERNAL_POPUP_MENU=1 -DENABLE_WEBRTC=1 -DENABLE_EXTENSIONS=1 - -DENABLE_TASK_MANAGER=1 -DENABLE_THEMES=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 - -DENABLE_SESSION_SERVICE=1 -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_SUPERVISED_USERS=1 - -DENABLE_SERVICE_DISCOVERY=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD - -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1 - -DFIELDTRIAL_TESTING_ENABLED - -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 - -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0 -DNVALGRIND - -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DWEBRTC_RESTRICT_LOGGING - -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DEXPAT_RELATIVE_PATH -DWEBRTC_POSIX -DWEBRTC_MAC - -DSRTP_RELATIVE_PATH -DHAVE_SCTP -DHAVE_SRTP - ) + -DV8_DEPRECATION_WARNINGS -DNO_TCMALLOC -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0 -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DWEBRTC_ENABLE_PROTOBUF=1 -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DEXPAT_RELATIVE_PATH -DHAVE_SCTP -DWEBRTC_POSIX -DWEBRTC_MAC -DHAVE_WEBRTC_VIDEO -DHAVE_WEBRTC_VOICE + + # Removed from original peerconnection_client.ninja + # -DCR_CLANG_REVISION=\"303369-1\" -DCR_XCODE_VERSION=0833 -DNDEBUG + ) elseif (UNIX) + # from peerconnection_client.ninja, WebRTC branch-heads/60 set(WEBRTC_DEFINES - # from peerconnection_client.ninja - -DV8_DEPRECATION_WARNINGS -DENABLE_MDNS=1 -DENABLE_NOTIFICATIONS -DENABLE_PEPPER_CDMS - -DENABLE_PLUGINS=1 -DENABLE_PDF=1 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 - -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DUSE_UDEV -DUI_COMPOSITOR_IMAGE_TRANSPORT - -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_CLIPBOARD_AURAX11=1 -DUSE_DEFAULT_RENDER_THEME=1 - -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DENABLE_WEBRTC=1 -DENABLE_EXTENSIONS=1 - -DENABLE_TASK_MANAGER=1 -DENABLE_THEMES=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 - -DENABLE_SESSION_SERVICE=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_SERVICE_DISCOVERY=1 - -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD - -DENABLE_MEDIA_ROUTER=1 -DFIELDTRIAL_TESTING_ENABLED - -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS - -D__STDC_FORMAT_MACROS -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 - -DWEBRTC_BUILD_LIBEVENT -DWEBRTC_POSIX -DWEBRTC_LINUX - # Skipped from origianl peerconnection_client.ninja - # -DNDEBUG -DCR_CLANG_REVISION=277962-1 - ) + -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DWEBRTC_ENABLE_PROTOBUF=1 -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DEXPAT_RELATIVE_PATH -DHAVE_SCTP -DWEBRTC_POSIX -DWEBRTC_LINUX -DWEBRTC_BUILD_LIBEVENT -DHAVE_WEBRTC_VIDEO -DHAVE_WEBRTC_VOICE + + # Removed from original peerconnection_client.ninja + # -DCR_CLANG_REVISION=\"303369-1\" -DNDEBUG + ) endif (MSVC) diff --git a/cmake/Mergestaticlibs.cmake b/cmake/Mergestaticlibs.cmake index fe2abfb..73f4d03 100644 --- a/cmake/Mergestaticlibs.cmake +++ b/cmake/Mergestaticlibs.cmake @@ -39,7 +39,7 @@ macro (MERGE_STATIC_LIBRARIES TARGET_LIB LIBRARIES LIBRARIES_DEBUG OBJECTS OBJEC endif() set(outfile $) - set(target_temp_file "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${TARGET_LIB}_temp.a") + set(target_temp_file "${CMAKE_CURRENT_BINARY_DIR}/lib${TARGET_LIB}_temp.a") string(TOUPPER "${CMAKE_BUILD_TYPE}" _CMAKE_BUILD_TYPE) if (_CMAKE_BUILD_TYPE STREQUAL "DEBUG") @@ -74,8 +74,8 @@ macro (MERGE_STATIC_LIBRARIES TARGET_LIB LIBRARIES LIBRARIES_DEBUG OBJECTS OBJEC set(_OBJECTS ${OBJECTS}) endif() - get_target_property (outfile ${TARGET_LIB} LOCATION) - set(target_temp_file "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${TARGET_LIB}_temp.a") + set(outfile "libpeerconnect.a") + set(target_temp_file "${CMAKE_CURRENT_BINARY_DIR}/lib${TARGET_LIB}_temp.a") set(MRI_SCRIPT "create ${outfile}\n") foreach(lib ${_LIBRARIES}) @@ -89,13 +89,13 @@ macro (MERGE_STATIC_LIBRARIES TARGET_LIB LIBRARIES LIBRARIES_DEBUG OBJECTS OBJEC set(MRI_SCRIPT "${MRI_SCRIPT}save\n") set(MRI_SCRIPT "${MRI_SCRIPT}end\n") - file(WRITE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/peerconnect.mri" "${MRI_SCRIPT}") + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/peerconnect.mri" "${MRI_SCRIPT}") add_custom_command(TARGET ${TARGET_LIB} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${outfile}" "${target_temp_file}" COMMAND rm "${outfile}" - COMMAND ${CMAKE_AR} -M < "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/peerconnect.mri" + COMMAND ${CMAKE_AR} -M < "${CMAKE_CURRENT_BINARY_DIR}/peerconnect.mri" COMMAND rm "${target_temp_file}" ) endif (WIN32) diff --git a/src/control.cc b/src/control.cc index d25d3e5..10aff84 100644 --- a/src/control.cc +++ b/src/control.cc @@ -38,18 +38,18 @@ Control::Control(std::shared_ptr signal) signal_->SignalOnCommandReceived_.connect(this, &Control::OnSignalCommandReceived); signal_->SignalOnClosed_.connect(this, &Control::OnSignalConnectionClosed); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } Control::~Control() { - LOGP_F( INFO ) << "Starting"; + LOG_F( INFO ) << "Starting"; peers_.clear(); DeleteControl(); signal_->SignalOnCommandReceived_.disconnect(this); signal_->SignalOnClosed_.disconnect(this); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } @@ -59,29 +59,29 @@ Control::~Control() { bool Control::InitializeControl() { - ASSERT(peer_connection_factory_.get() == NULL); + RTC_DCHECK(peer_connection_factory_.get() == NULL); webrtc::MediaConstraintsInterface* constraints = NULL; if ( !CreatePeerFactory(constraints) ) { - LOGP_F(LERROR) << "CreatePeerFactory failed"; + LOG_F(LERROR) << "CreatePeerFactory failed"; DeleteControl(); return false; } webrtc_thread_ = rtc::Thread::Current(); - ASSERT( webrtc_thread_ != nullptr ); + RTC_DCHECK( webrtc_thread_ != nullptr ); return true; } void Control::DeleteControl() { - LOGP_F( INFO ) << "Starting"; + LOG_F( INFO ) << "Starting"; peer_connection_factory_ = NULL; fake_audio_capture_module_ = NULL; - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } @@ -95,7 +95,7 @@ void Control::Open(const string& user_id, const string& user_password, const str // 4. Generate 'open' event to PeerConnect if (signal_.get() == NULL) { - LOGP_F( LERROR ) << "Open failed, no signal server"; + LOG_F( LERROR ) << "Open failed, no signal server"; return; } @@ -105,7 +105,7 @@ void Control::Open(const string& user_id, const string& user_password, const str // Connect to signal server signal_->Open(user_id, user_password); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; return; } @@ -117,18 +117,18 @@ void Control::Connect(const string peer) { // 4. Connect datachannel if (signal_.get() == NULL) { - LOGP_F(LERROR) << "Join failed, no signal server"; + LOG_F(LERROR) << "Join failed, no signal server"; return; } - LOGP_F( INFO ) << "Joining channel " << peer; + LOG_F( INFO ) << "Joining channel " << peer; JoinChannel(peer); } void Control::Close(const CloseCode code, bool force_queuing) { - LOGP_F( INFO ) << "Call"; - + LOG_F( INFO ) << "Call"; + // // Verify current thread // @@ -136,7 +136,7 @@ void Control::Close(const CloseCode code, bool force_queuing) { if (force_queuing || webrtc_thread_ != rtc::Thread::Current()) { ControlMessageData *data = new ControlMessageData(code, ref_); webrtc_thread_->Post(RTC_FROM_HERE, this, MSG_CLOSE, data); - LOGP_F( INFO ) << "Queued"; + LOG_F( INFO ) << "Queued"; return; } @@ -150,10 +150,10 @@ void Control::Close(const CloseCode code, bool force_queuing) { peer_ids.push_back(peer.second->remote_id()); } - LOGP_F(INFO) << "Close(): peer count is " << peer_ids.size(); + LOG_F(INFO) << "Close(): peer count is " << peer_ids.size(); for (auto id : peer_ids) { - LOGP_F( INFO ) << "Try to close peer having id " << id; + LOG_F( INFO ) << "Try to close peer having id " << id; ClosePeer(id, code); } @@ -165,7 +165,7 @@ void Control::Close(const CloseCode code, bool force_queuing) { pc_->OnClose( peer_name_ ,code ); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void Control::ClosePeer( const string peer, const CloseCode code, bool force_queuing ) { @@ -188,7 +188,7 @@ void Control::ClosePeer( const string peer, const CloseCode code, bool force_que auto peer_found = peers_.find(peer); if ( peer_found == peers_.end() ) { - LOGP_F( WARNING ) << "peer not found, " << peer; + LOG_F( WARNING ) << "peer not found, " << peer; return; } @@ -199,7 +199,7 @@ void Control::ClosePeer( const string peer, const CloseCode code, bool force_que // 3. Leave channel on signal server LeaveChannel(peer); - LOGP_F( INFO ) << "Done, peer is " << peer; + LOG_F( INFO ) << "Done, peer is " << peer; } // @@ -239,12 +239,12 @@ void Control::SendCommand(const string& peer, const string& command, const Json: void Control::OnPeerConnect(const string peer) { if ( pc_ == nullptr ) { - LOGP_F( WARNING ) << "pc_ is null, peer is " << peer; + LOG_F( WARNING ) << "pc_ is null, peer is " << peer; return; } pc_->OnConnect(peer); - LOGP_F( INFO ) << "Done, peer is " << peer; + LOG_F( INFO ) << "Done, peer is " << peer; } void Control::OnPeerClose(const string peer, CloseCode code) { @@ -254,20 +254,20 @@ void Control::OnPeerClose(const string peer, CloseCode code) { // Call Control::OnPeerDisconnected() webrtc_thread_->Post(RTC_FROM_HERE, this, MSG_ON_PEER_CLOSE, data); - LOGP_F( INFO ) << "Queued, peer is " << peer; + LOG_F( INFO ) << "Queued, peer is " << peer; return; } - LOGP_F( INFO ) << "Enter, peer is " << peer; + LOG_F( INFO ) << "Enter, peer is " << peer; if ( pc_ == nullptr ) { - LOGP_F( WARNING ) << "pc_ is null, peer is " << peer; + LOG_F( WARNING ) << "pc_ is null, peer is " << peer; return; } pc_->OnClose( peer, code ); - LOGP_F( INFO ) << "Done, peer is " << peer; + LOG_F( INFO ) << "Done, peer is " << peer; } // @@ -276,7 +276,7 @@ void Control::OnPeerClose(const string peer, CloseCode code) { void Control::OnPeerMessage(const string& peer, const char* data, const size_t size) { if ( pc_ == nullptr ) { - LOGP_F( WARNING ) << "pc_ is null, peer is " << peer; + LOG_F( WARNING ) << "pc_ is null, peer is " << peer; return; } pc_->OnMessage(peer, data, size); @@ -284,7 +284,7 @@ void Control::OnPeerMessage(const string& peer, const char* data, const size_t s void Control::OnPeerWritable(const string& peer) { if ( pc_ == nullptr ) { - LOGP_F( WARNING ) << "pc_ is null, peer is " << peer; + LOG_F( WARNING ) << "pc_ is null, peer is " << peer; return; } pc_->OnWritable(peer); @@ -294,14 +294,14 @@ void Control::RegisterObserver(ControlObserver* observer, std::shared_ptrmessage_id) { case MSG_COMMAND_RECEIVED: - param = static_cast(msg->pdata); - OnCommandReceived(param->data_json_); + param = static_cast(msg->pdata); + OnCommandReceived(param->data_json_); break; case MSG_CLOSE: param = static_cast(msg->pdata); @@ -332,7 +332,7 @@ void Control::OnMessage(rtc::Message* msg) { Close((CloseCode)param->data_int32_); break; default: - LOGP_F( WARNING ) << "Unknown message"; + LOG_F( WARNING ) << "Unknown message"; break; } @@ -353,7 +353,7 @@ void Control::OnCommandReceived(const Json::Value& message) { if (!rtc::GetStringFromJsonObject(message, "command", &command) || !rtc::GetValueFromJsonObject(message, "data", &data)) { - LOGP_F(LERROR) << "Invalid message:" << message; + LOG_F(LERROR) << "Invalid message:" << message; return; } @@ -393,16 +393,16 @@ void Control::OnCommandReceived(const Json::Value& message) { void Control::OnSignalCommandReceived(const Json::Value& message) { ControlMessageData *data = new ControlMessageData(message, ref_); webrtc_thread_->Post(RTC_FROM_HERE, this, MSG_COMMAND_RECEIVED, data); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void Control::OnSignalConnectionClosed(websocketpp::close::status::value code) { - LOGP_F(INFO) << "Enter, code is " << code; + LOG_F(INFO) << "Enter, code is " << code; if (code != websocketpp::close::status::normal) { ControlMessageData *data = new ControlMessageData(CLOSE_SIGNAL_ERROR, ref_); webrtc_thread_->Post(RTC_FROM_HERE, this, MSG_ON_SIGLAL_CONNECTION_CLOSE, data); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } // @@ -410,26 +410,26 @@ void Control::OnSignalConnectionClosed(websocketpp::close::status::value code) { // void Control::CreateChannel(const string name) { - LOGP_F( INFO ) << "channel is " << name; - - Json::Value data; - data["name"] = name; - SendCommand(name, "createchannel", data); + LOG_F( INFO ) << "channel is " << name; + + Json::Value data; + data["name"] = name; + SendCommand(name, "createchannel", data); } void Control::JoinChannel(const string name) { - LOGP_F( INFO ) << "channel is " << name; + LOG_F( INFO ) << "channel is " << name; - Json::Value data; - data["name"] = name; + Json::Value data; + data["name"] = name; SendCommand(name, "joinchannel", data); } void Control::LeaveChannel(const string name) { - LOGP_F( INFO ) << "channel is " << name; + LOG_F( INFO ) << "channel is " << name; - Json::Value data; - data["name"] = name; + Json::Value data; + data["name"] = name; SendCommand(name, "leavechannel", data); } @@ -443,7 +443,7 @@ bool Control::CreatePeerFactory( fake_audio_capture_module_ = FakeAudioCaptureModule::Create(); if (fake_audio_capture_module_ == NULL) { - LOGP_F( LERROR ) << "Failed to create FakeAudioCaptureModule"; + LOG_F( LERROR ) << "Failed to create FakeAudioCaptureModule"; return false; } @@ -452,11 +452,11 @@ bool Control::CreatePeerFactory( fake_audio_capture_module_, NULL, NULL); if (!peer_connection_factory_.get()) { - LOGP_F( LERROR ) << "Failed to create CreatePeerConnectionFactory"; + LOG_F( LERROR ) << "Failed to create CreatePeerConnectionFactory"; return false; } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; return true; } @@ -472,28 +472,28 @@ void Control::AddIceCandidate(const string& peer_id, const Json::Value& data) { string candidate; if ( !rtc::GetStringFromJsonObject( data, "sdp_mid", &sdp_mid ) ) { - LOGP_F( LERROR ) << "sdp_mid not found, " << data.toStyledString(); + LOG_F( LERROR ) << "sdp_mid not found, " << data.toStyledString(); return; } if ( !rtc::GetIntFromJsonObject( data, "sdp_mline_index", &sdp_mline_index ) ) { - LOGP_F( LERROR ) << "sdp_mline_index not found, " << data.toStyledString(); + LOG_F( LERROR ) << "sdp_mline_index not found, " << data.toStyledString(); return; } if ( !rtc::GetStringFromJsonObject( data, "candidate", &candidate ) ) { - LOGP_F( LERROR ) << "candidate not found, " << data.toStyledString(); + LOG_F( LERROR ) << "candidate not found, " << data.toStyledString(); return; } if ( peers_.find( peer_id ) == peers_.end() ) { - LOGP_F( WARNING ) << "peer_id not found, peer_id is " << peer_id << " and " << + LOG_F( WARNING ) << "peer_id not found, peer_id is " << peer_id << " and " << "data is " << data.toStyledString(); return; } peers_[peer_id]->AddIceCandidate(sdp_mid, sdp_mline_index, candidate); - LOGP_F( INFO ) << "Done, peer_id is " << peer_id; + LOG_F( INFO ) << "Done, peer_id is " << peer_id; } @@ -503,94 +503,94 @@ void Control::AddIceCandidate(const string& peer_id, const Json::Value& data) { // void Control::OnOpen(const Json::Value& data) { - bool result; - if (!rtc::GetBoolFromJsonObject(data, "result", &result)) { - LOGP_F(WARNING) << "Unknown open response"; - return; - } - - if (!result) { - LOGP_F(LERROR) << "Open failed"; - return; - } - - string session_id; - if (!rtc::GetStringFromJsonObject(data, "session_id", &session_id)) { - LOGP_F(LERROR) << "Open failed - no session_id"; - return; - } - - session_id_ = session_id; - - // - // Create channel - // - - CreateChannel(peer_name_); - LOGP_F( INFO ) << "Done"; + bool result; + if (!rtc::GetBoolFromJsonObject(data, "result", &result)) { + LOG_F(WARNING) << "Unknown open response"; + return; + } + + if (!result) { + LOG_F(LERROR) << "Open failed"; + return; + } + + string session_id; + if (!rtc::GetStringFromJsonObject(data, "session_id", &session_id)) { + LOG_F(LERROR) << "Open failed - no session_id"; + return; + } + + session_id_ = session_id; + + // + // Create channel + // + + CreateChannel(peer_name_); + LOG_F( INFO ) << "Done"; } void Control::OnChannelCreate(const Json::Value& data) { - bool result; - if (!rtc::GetBoolFromJsonObject(data, "result", &result)) { - LOGP_F(WARNING) << "Unknown open response"; - pc_->OnClose(peer_name_, CLOSE_SIGNAL_ERROR); - return; - } - - string peer; - if (!rtc::GetStringFromJsonObject(data, "name", &peer)) { - pc_->OnClose(peer_name_, CLOSE_SIGNAL_ERROR); - LOGP_F(LERROR) << "Create channel failed - no channel name"; - return; - } - - if (!result) { - LOGP_F(LERROR) << "Create channel failed"; - string desc; - if (!rtc::GetStringFromJsonObject(data, "desc", &desc)) { - desc = "Unknown reason"; - } - - pc_->OnClose(peer, CLOSE_SIGNAL_ERROR, desc); - return; - } + bool result; + if (!rtc::GetBoolFromJsonObject(data, "result", &result)) { + LOG_F(WARNING) << "Unknown open response"; + pc_->OnClose(peer_name_, CLOSE_SIGNAL_ERROR); + return; + } + + string peer; + if (!rtc::GetStringFromJsonObject(data, "name", &peer)) { + pc_->OnClose(peer_name_, CLOSE_SIGNAL_ERROR); + LOG_F(LERROR) << "Create channel failed - no channel name"; + return; + } + + if (!result) { + LOG_F(LERROR) << "Create channel failed"; + string desc; + if (!rtc::GetStringFromJsonObject(data, "desc", &desc)) { + desc = "Unknown reason"; + } + + pc_->OnClose(peer, CLOSE_SIGNAL_ERROR, desc); + return; + } pc_->OnOpen(peer); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void Control::OnChannelJoin(const Json::Value& data) { - bool result; - - LOGP_F(INFO) << "OnChannelJoined(" << data.toStyledString() << ")"; - - if (!rtc::GetBoolFromJsonObject(data, "result", &result)) { - pc_->OnClose( "", CLOSE_SIGNAL_ERROR ); - LOGP_F(LERROR) << "Unknown channel join response"; - return; - } - - string peer; - if (!rtc::GetStringFromJsonObject(data, "name", &peer)) { - pc_->OnClose( "", CLOSE_SIGNAL_ERROR ); - LOGP_F(LERROR) << "Join channel failed - no channel name"; - return; - } - - if (!result) { - LOGP_F(LERROR) << "Join channel failed"; - string desc; - if (!rtc::GetStringFromJsonObject(data, "desc", &desc)) { - desc = "Unknown reason"; - } - - pc_->OnClose( peer, CLOSE_SIGNAL_ERROR, desc ); - return; - } - - LOGP_F( INFO ) << "Done"; + bool result; + + LOG_F(INFO) << "OnChannelJoined(" << data.toStyledString() << ")"; + + if (!rtc::GetBoolFromJsonObject(data, "result", &result)) { + pc_->OnClose( "", CLOSE_SIGNAL_ERROR ); + LOG_F(LERROR) << "Unknown channel join response"; + return; + } + + string peer; + if (!rtc::GetStringFromJsonObject(data, "name", &peer)) { + pc_->OnClose( "", CLOSE_SIGNAL_ERROR ); + LOG_F(LERROR) << "Join channel failed - no channel name"; + return; + } + + if (!result) { + LOG_F(LERROR) << "Join channel failed"; + string desc; + if (!rtc::GetStringFromJsonObject(data, "desc", &desc)) { + desc = "Unknown reason"; + } + + pc_->OnClose( peer, CLOSE_SIGNAL_ERROR, desc ); + return; + } + + LOG_F( INFO ) << "Done"; } @@ -604,7 +604,7 @@ void Control::OnChannelLeave(const Json::Value& data) { void Control::OnRemotePeerClose(const string& peer_id, const Json::Value& data) { - ClosePeer( peer_id, CLOSE_NORMAL ); + ClosePeer( peer_id, CLOSE_NORMAL ); } // @@ -612,32 +612,32 @@ void Control::OnRemotePeerClose(const string& peer_id, const Json::Value& data) // void Control::CreateOffer(const Json::Value& data) { - - Json::Value peers; - if (!rtc::GetValueFromJsonObject(data, "peers", &peers)) { - LOGP_F(LERROR) << "createoffer failed - no peers value"; - return; - } - - for (size_t i = 0; i < peers.size(); ++i) { - string remote_id; - if (!rtc::GetStringFromJsonArray(peers, i, &remote_id)) { - LOGP_F(LERROR) << "Peer handshake failed - invalid peer id"; - return; - } - + + Json::Value peers; + if (!rtc::GetValueFromJsonObject(data, "peers", &peers)) { + LOG_F(LERROR) << "createoffer failed - no peers value"; + return; + } + + for (size_t i = 0; i < peers.size(); ++i) { + string remote_id; + if (!rtc::GetStringFromJsonArray(peers, i, &remote_id)) { + LOG_F(LERROR) << "Peer handshake failed - invalid peer id"; + return; + } + Peer peer = new rtc::RefCountedObject(peer_name_, remote_id, this, peer_connection_factory_); if ( !peer->Initialize() ) { - LOGP_F( LERROR ) << "Peer initialization failed"; + LOG_F( LERROR ) << "Peer initialization failed"; OnPeerClose( remote_id, CLOSE_ABNORMAL ); return; } peers_.insert(std::pair(remote_id, peer)); peer->CreateOffer(NULL); - } - - LOGP_F( INFO ) << "Done"; + } + + LOG_F( INFO ) << "Done"; } // @@ -648,14 +648,14 @@ void Control::ReceiveOfferSdp(const string& peer_id, const Json::Value& data) { string sdp; if ( !rtc::GetStringFromJsonObject( data, "sdp", &sdp ) ) { - LOGP_F( LERROR ) << "sdp not found, peer_id is " << peer_id << " and " << + LOG_F( LERROR ) << "sdp not found, peer_id is " << peer_id << " and " << "data is " << data.toStyledString(); return; } Peer peer = new rtc::RefCountedObject(peer_name_, peer_id, this, peer_connection_factory_); if ( !peer->Initialize() ) { - LOGP_F( LERROR ) << "Peer initialization failed"; + LOG_F( LERROR ) << "Peer initialization failed"; OnPeerClose( peer_id, CLOSE_ABNORMAL ); return; } @@ -663,7 +663,7 @@ void Control::ReceiveOfferSdp(const string& peer_id, const Json::Value& data) { peers_.insert(std::pair(peer_id, peer)); peer->ReceiveOfferSdp(sdp); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } @@ -675,20 +675,20 @@ void Control::ReceiveAnswerSdp(const string& peer_id, const Json::Value& data) { string sdp; if ( !rtc::GetStringFromJsonObject( data, "sdp", &sdp ) ) { - LOGP_F( LERROR ) << "sdp not found, peer_id is " << peer_id << " and " << + LOG_F( LERROR ) << "sdp not found, peer_id is " << peer_id << " and " << "data is " << data.toStyledString(); return; } auto peer = peers_.find(peer_id); if ( peer == peers_.end() ) { - LOGP_F( LERROR ) << "peer_id not found, peer_id is " << peer_id << " and " << + LOG_F( LERROR ) << "peer_id not found, peer_id is " << peer_id << " and " << "data is " << data.toStyledString(); return; } peer->second->ReceiveAnswerSdp(sdp); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } } // namespace pc diff --git a/src/fakeaudiocapturemodule.cc b/src/fakeaudiocapturemodule.cc index d784f34..5c91ddf 100644 --- a/src/fakeaudiocapturemodule.cc +++ b/src/fakeaudiocapturemodule.cc @@ -8,9 +8,9 @@ * be found in the AUTHORS file in the root of the source tree. */ -#include "webrtc/api/test/fakeaudiocapturemodule.h" +#include "webrtc/pc/test/fakeaudiocapturemodule.h" -#include "webrtc/base/common.h" +#include "webrtc/base/checks.h" #include "webrtc/base/refcount.h" #include "webrtc/base/thread.h" #include "webrtc/base/timeutils.h" @@ -23,7 +23,7 @@ static const int kHighSampleValue = 10000; // Same value as src/modules/audio_device/main/source/audio_device_config.h in // https://code.google.com/p/webrtc/ -static const uint32_t kAdmMaxIdleTimeProcess = 1000; +static const int kAdmMaxIdleTimeProcess = 1000; // Constants here are derived by running VoE using a real ADM. // The constants correspond to 10ms of mono audio at 44kHz. @@ -73,12 +73,12 @@ int FakeAudioCaptureModule::frames_received() const { } int64_t FakeAudioCaptureModule::TimeUntilNextProcess() { - const uint32_t current_time = rtc::Time(); + const int64_t current_time = rtc::TimeMillis(); if (current_time < last_process_time_ms_) { // TODO: wraparound could be handled more gracefully. return 0; } - const uint32_t elapsed_time = current_time - last_process_time_ms_; + const int64_t elapsed_time = current_time - last_process_time_ms_; if (kAdmMaxIdleTimeProcess < elapsed_time) { return 0; } @@ -86,17 +86,17 @@ int64_t FakeAudioCaptureModule::TimeUntilNextProcess() { } void FakeAudioCaptureModule::Process() { - last_process_time_ms_ = rtc::Time(); + last_process_time_ms_ = rtc::TimeMillis(); } int32_t FakeAudioCaptureModule::ActiveAudioLayer( AudioLayer* /*audio_layer*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } webrtc::AudioDeviceModule::ErrorCode FakeAudioCaptureModule::LastError() const { - ASSERT(false); + RTC_NOTREACHED(); return webrtc::AudioDeviceModule::kAdmErrNone; } @@ -125,17 +125,17 @@ int32_t FakeAudioCaptureModule::Terminate() { } bool FakeAudioCaptureModule::Initialized() const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int16_t FakeAudioCaptureModule::PlayoutDevices() { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int16_t FakeAudioCaptureModule::RecordingDevices() { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -143,7 +143,7 @@ int32_t FakeAudioCaptureModule::PlayoutDeviceName( uint16_t /*index*/, char /*name*/[webrtc::kAdmMaxDeviceNameSize], char /*guid*/[webrtc::kAdmMaxGuidSize]) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -151,7 +151,7 @@ int32_t FakeAudioCaptureModule::RecordingDeviceName( uint16_t /*index*/, char /*name*/[webrtc::kAdmMaxDeviceNameSize], char /*guid*/[webrtc::kAdmMaxGuidSize]) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -181,7 +181,7 @@ int32_t FakeAudioCaptureModule::SetRecordingDevice( } int32_t FakeAudioCaptureModule::PlayoutIsAvailable(bool* /*available*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -195,7 +195,7 @@ bool FakeAudioCaptureModule::PlayoutIsInitialized() const { } int32_t FakeAudioCaptureModule::RecordingIsAvailable(bool* /*available*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -205,8 +205,7 @@ int32_t FakeAudioCaptureModule::InitRecording() { } bool FakeAudioCaptureModule::RecordingIsInitialized() const { - ASSERT(false); - return 0; + return rec_is_initialized_; } int32_t FakeAudioCaptureModule::StartPlayout() { @@ -273,20 +272,20 @@ int32_t FakeAudioCaptureModule::SetAGC(bool /*enable*/) { } bool FakeAudioCaptureModule::AGC() const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetWaveOutVolume(uint16_t /*volume_left*/, uint16_t /*volume_right*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::WaveOutVolume( uint16_t* /*volume_left*/, uint16_t* /*volume_right*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -296,7 +295,7 @@ int32_t FakeAudioCaptureModule::InitSpeaker() { } bool FakeAudioCaptureModule::SpeakerIsInitialized() const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -306,46 +305,46 @@ int32_t FakeAudioCaptureModule::InitMicrophone() { } bool FakeAudioCaptureModule::MicrophoneIsInitialized() const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SpeakerVolumeIsAvailable(bool* /*available*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetSpeakerVolume(uint32_t /*volume*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SpeakerVolume(uint32_t* /*volume*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MaxSpeakerVolume( uint32_t* /*max_volume*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MinSpeakerVolume( uint32_t* /*min_volume*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SpeakerVolumeStepSize( uint16_t* /*step_size*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MicrophoneVolumeIsAvailable( bool* /*available*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -369,59 +368,59 @@ int32_t FakeAudioCaptureModule::MaxMicrophoneVolume( int32_t FakeAudioCaptureModule::MinMicrophoneVolume( uint32_t* /*min_volume*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MicrophoneVolumeStepSize( uint16_t* /*step_size*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SpeakerMuteIsAvailable(bool* /*available*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetSpeakerMute(bool /*enable*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SpeakerMute(bool* /*enabled*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MicrophoneMuteIsAvailable(bool* /*available*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetMicrophoneMute(bool /*enable*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MicrophoneMute(bool* /*enabled*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MicrophoneBoostIsAvailable( bool* /*available*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetMicrophoneBoost(bool /*enable*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::MicrophoneBoost(bool* /*enabled*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -440,7 +439,7 @@ int32_t FakeAudioCaptureModule::SetStereoPlayout(bool /*enable*/) { } int32_t FakeAudioCaptureModule::StereoPlayout(bool* /*enabled*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -459,7 +458,7 @@ int32_t FakeAudioCaptureModule::SetStereoRecording(bool enable) { } int32_t FakeAudioCaptureModule::StereoRecording(bool* /*enabled*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -468,7 +467,7 @@ int32_t FakeAudioCaptureModule::SetRecordingChannel( if (channel != AudioDeviceModule::kChannelBoth) { // There is no right or left in mono. I.e. kChannelBoth should be used for // mono. - ASSERT(false); + RTC_NOTREACHED(); return -1; } return 0; @@ -483,13 +482,13 @@ int32_t FakeAudioCaptureModule::RecordingChannel(ChannelType* channel) const { int32_t FakeAudioCaptureModule::SetPlayoutBuffer(const BufferType /*type*/, uint16_t /*size_ms*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::PlayoutBuffer(BufferType* /*type*/, uint16_t* /*size_ms*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -500,73 +499,73 @@ int32_t FakeAudioCaptureModule::PlayoutDelay(uint16_t* delay_ms) const { } int32_t FakeAudioCaptureModule::RecordingDelay(uint16_t* /*delay_ms*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::CPULoad(uint16_t* /*load*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::StartRawOutputFileRecording( const char /*pcm_file_name_utf8*/[webrtc::kAdmMaxFileNameSize]) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::StopRawOutputFileRecording() { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::StartRawInputFileRecording( const char /*pcm_file_name_utf8*/[webrtc::kAdmMaxFileNameSize]) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::StopRawInputFileRecording() { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetRecordingSampleRate( const uint32_t /*samples_per_sec*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::RecordingSampleRate( uint32_t* /*samples_per_sec*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetPlayoutSampleRate( const uint32_t /*samples_per_sec*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::PlayoutSampleRate( uint32_t* /*samples_per_sec*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::ResetAudioDevice() { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::SetLoudspeakerStatus(bool /*enable*/) { - ASSERT(false); + RTC_NOTREACHED(); return 0; } int32_t FakeAudioCaptureModule::GetLoudspeakerStatus(bool* /*enabled*/) const { - ASSERT(false); + RTC_NOTREACHED(); return 0; } @@ -581,7 +580,7 @@ void FakeAudioCaptureModule::OnMessage(rtc::Message* msg) { default: // All existing messages should be caught. Getting here should never // happen. - ASSERT(false); + RTC_NOTREACHED(); } } @@ -591,7 +590,7 @@ bool FakeAudioCaptureModule::Initialize() { // sent to it. Note that the audio processing pipeline will likely distort the // original signal. SetSendBuffer(kHighSampleValue); - last_process_time_ms_ = rtc::Time(); + last_process_time_ms_ = rtc::TimeMillis(); return true; } @@ -639,7 +638,7 @@ void FakeAudioCaptureModule::UpdateProcessing(bool start) { } void FakeAudioCaptureModule::StartProcessP() { - ASSERT(process_thread_->IsCurrent()); + RTC_CHECK(process_thread_->IsCurrent()); if (started_) { // Already started. return; @@ -648,9 +647,9 @@ void FakeAudioCaptureModule::StartProcessP() { } void FakeAudioCaptureModule::ProcessFrameP() { - ASSERT(process_thread_->IsCurrent()); + RTC_CHECK(process_thread_->IsCurrent()); if (!started_) { - next_frame_time_ = rtc::Time(); + next_frame_time_ = rtc::TimeMillis(); started_ = true; } @@ -666,14 +665,14 @@ void FakeAudioCaptureModule::ProcessFrameP() { } next_frame_time_ += kTimePerFrameMs; - const uint32_t current_time = rtc::Time(); - const uint32_t wait_time = + const int64_t current_time = rtc::TimeMillis(); + const int64_t wait_time = (next_frame_time_ > current_time) ? next_frame_time_ - current_time : 0; process_thread_->PostDelayed(RTC_FROM_HERE, wait_time, this, MSG_RUN_PROCESS); } void FakeAudioCaptureModule::ReceiveFrameP() { - ASSERT(process_thread_->IsCurrent()); + RTC_CHECK(process_thread_->IsCurrent()); { rtc::CritScope cs(&crit_callback_); if (!audio_callback_) { @@ -687,9 +686,9 @@ void FakeAudioCaptureModule::ReceiveFrameP() { kNumberOfChannels, kSamplesPerSecond, rec_buffer_, nSamplesOut, &elapsed_time_ms, &ntp_time_ms) != 0) { - ASSERT(false); + RTC_NOTREACHED(); } - ASSERT(nSamplesOut == kNumberSamples); + RTC_CHECK(nSamplesOut == kNumberSamples); } // The SetBuffer() function ensures that after decoding, the audio buffer // should contain samples of similar magnitude (there is likely to be some @@ -704,7 +703,7 @@ void FakeAudioCaptureModule::ReceiveFrameP() { } void FakeAudioCaptureModule::SendFrameP() { - ASSERT(process_thread_->IsCurrent()); + RTC_CHECK(process_thread_->IsCurrent()); rtc::CritScope cs(&crit_callback_); if (!audio_callback_) { return; @@ -719,8 +718,7 @@ void FakeAudioCaptureModule::SendFrameP() { kClockDriftMs, current_mic_level, key_pressed, current_mic_level) != 0) { - ASSERT(false); + RTC_NOTREACHED(); } SetMicrophoneVolume(current_mic_level); } - diff --git a/src/fakeaudiocapturemodule.h b/src/fakeaudiocapturemodule.h index e110dfd..c26a5bb 100644 --- a/src/fakeaudiocapturemodule.h +++ b/src/fakeaudiocapturemodule.h @@ -17,10 +17,11 @@ // Note P postfix of a function indicates that it should only be called by the // processing thread. -#ifndef WEBRTC_API_TEST_FAKEAUDIOCAPTUREMODULE_H_ -#define WEBRTC_API_TEST_FAKEAUDIOCAPTUREMODULE_H_ +#ifndef _PEERCONNECT_PC_TEST_FAKEAUDIOCAPTUREMODULE_H_ +#define _PEERCONNECT_PC_TEST_FAKEAUDIOCAPTUREMODULE_H_ #include + #include "webrtc/base/basictypes.h" #include "webrtc/base/criticalsection.h" #include "webrtc/base/messagehandler.h" @@ -172,12 +173,22 @@ class FakeAudioCaptureModule int32_t ResetAudioDevice() override; int32_t SetLoudspeakerStatus(bool enable) override; int32_t GetLoudspeakerStatus(bool* enabled) const override; - virtual bool BuiltInAECIsAvailable() const override { return false; } - virtual int32_t EnableBuiltInAEC(bool enable) override { return -1; } - virtual bool BuiltInAGCIsAvailable() const override { return false; } - virtual int32_t EnableBuiltInAGC(bool enable) override { return -1; } - virtual bool BuiltInNSIsAvailable() const override { return false; } - virtual int32_t EnableBuiltInNS(bool enable) override { return -1; } + bool BuiltInAECIsAvailable() const override { return false; } + int32_t EnableBuiltInAEC(bool enable) override { return -1; } + bool BuiltInAGCIsAvailable() const override { return false; } + int32_t EnableBuiltInAGC(bool enable) override { return -1; } + bool BuiltInNSIsAvailable() const override { return false; } + int32_t EnableBuiltInNS(bool enable) override { return -1; } +#if defined(WEBRTC_IOS) + int GetPlayoutAudioParameters( + webrtc::AudioParameters* params) const override { + return -1; + } + int GetRecordAudioParameters(webrtc::AudioParameters* params) const override { + return -1; + } +#endif // WEBRTC_IOS + // End of functions inherited from webrtc::AudioDeviceModule. // The following function is inherited from rtc::MessageHandler. @@ -225,7 +236,7 @@ class FakeAudioCaptureModule // The time in milliseconds when Process() was last called or 0 if no call // has been made. - uint32_t last_process_time_ms_; + int64_t last_process_time_ms_; // Callback for playout and recording. webrtc::AudioTransport* audio_callback_; @@ -245,7 +256,7 @@ class FakeAudioCaptureModule // wall clock time the next frame should be generated and received. started_ // ensures that next_frame_time_ can be initialized properly on first call. bool started_; - uint32_t next_frame_time_; + int64_t next_frame_time_; std::unique_ptr process_thread_; @@ -267,4 +278,4 @@ class FakeAudioCaptureModule rtc::CriticalSection crit_callback_; }; -#endif // WEBRTC_API_TEST_FAKEAUDIOCAPTUREMODULE_H_ +#endif // _PEERCONNECT_PC_TEST_FAKEAUDIOCAPTUREMODULE_H_ diff --git a/src/logging.cc b/src/logging.cc index e74022d..79d0154 100644 --- a/src/logging.cc +++ b/src/logging.cc @@ -119,7 +119,7 @@ CriticalSection g_log_crit; // The list of logging streams currently configured. // Note: we explicitly do not clean this up, because of the uncertain ordering // of destructors at program exit. Let the person who sets the stream trigger -// cleanup by setting to NULL, or let it leak (safe at program exit). +// cleanup by setting to null, or let it leak (safe at program exit). LogMessage::StreamList LogMessage::streams_ GUARDED_BY(g_log_crit); // Boolean options default to false (0) @@ -133,7 +133,9 @@ LogMessage::LogMessage(const char* file, const char* module) : severity_(sev), tag_(kLibjingle) { if (timestamp_) { - int64_t time = TimeSince(LogStartTime()); + // Use SystemTimeMillis so that even if tests use fake clocks, the timestamp + // in log messages represents the real system time. + int64_t time = TimeDiff(SystemTimeMillis(), LogStartTime()); // Also ensure WallClockStartTime is initialized, so that it matches // LogStartTime. WallClockStartTime(); @@ -147,7 +149,7 @@ LogMessage::LogMessage(const char* file, print_stream_ << "[" << std::dec << id << "] "; } - if (file != NULL) + if (file != nullptr) print_stream_ << "(" << FilenameFromPath(file) << ":" << line << "): "; if (err_ctx != ERRCTX_NONE) { @@ -157,7 +159,7 @@ LogMessage::LogMessage(const char* file, case ERRCTX_ERRNO: tmp << " " << strerror(err); break; -#if WEBRTC_WIN +#ifdef WEBRTC_WIN case ERRCTX_HRESULT: { char msgbuf[256]; DWORD flags = FORMAT_MESSAGE_FROM_SYSTEM; @@ -165,9 +167,8 @@ LogMessage::LogMessage(const char* file, if (hmod) flags |= FORMAT_MESSAGE_FROM_HMODULE; if (DWORD len = FormatMessageA( - flags, hmod, err, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - msgbuf, sizeof(msgbuf) / sizeof(msgbuf[0]), NULL)) { + flags, hmod, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + msgbuf, sizeof(msgbuf) / sizeof(msgbuf[0]), nullptr)) { while ((len > 0) && isspace(static_cast(msgbuf[len-1]))) { msgbuf[--len] = 0; @@ -179,9 +180,8 @@ LogMessage::LogMessage(const char* file, #endif // WEBRTC_WIN #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) case ERRCTX_OSSTATUS: { - // PeerConnect don't need this. - // std::string desc(DescriptionFromOSStatus(err)); - // tmp << " " << (desc.empty() ? "Unknown error" : desc.c_str()); +// std::string desc(DescriptionFromOSStatus(err)); +// tmp << " " << (desc.empty() ? "Unknown error" : desc.c_str()); break; } #endif // WEBRTC_MAC && !defined(WEBRTC_IOS) @@ -196,7 +196,12 @@ LogMessage::LogMessage(const char* file, int line, LoggingSeverity sev, const std::string& tag) - : LogMessage(file, line, sev, ERRCTX_NONE, 0 /* err */, NULL /* module */) { + : LogMessage(file, + line, + sev, + ERRCTX_NONE, + 0 /* err */, + nullptr /* module */) { tag_ = tag; print_stream_ << tag << ": "; } @@ -220,12 +225,12 @@ LogMessage::~LogMessage() { } int64_t LogMessage::LogStartTime() { - static const int64_t g_start = TimeMillis(); + static const int64_t g_start = SystemTimeMillis(); return g_start; } uint32_t LogMessage::WallClockStartTime() { - static const uint32_t g_start_wallclock = time(NULL); + static const uint32_t g_start_wallclock = time(nullptr); return g_start_wallclock; } @@ -357,7 +362,7 @@ void LogMessage::OutputToDebug(const std::string& str, "logToStdErr", kCFStringEncodingUTF8); CFStringRef domain = CFBundleGetIdentifier(CFBundleGetMainBundle()); - if (key != NULL && domain != NULL) { + if (key != nullptr && domain != nullptr) { Boolean exists_and_is_valid; Boolean should_log = CFPreferencesGetAppBooleanValue(key, domain, &exists_and_is_valid); @@ -365,7 +370,7 @@ void LogMessage::OutputToDebug(const std::string& str, // stderr. log_to_stderr = exists_and_is_valid && should_log; } - if (key != NULL) { + if (key != nullptr) { CFRelease(key); } #endif @@ -446,15 +451,15 @@ void LogMessage::OutputToDebug(const std::string& str, void LogMultiline(LoggingSeverity level, const char* label, bool input, const void* data, size_t len, bool hex_mode, LogMultilineState* state) { - if (!LOGP_CHECK_LEVEL_V(level)) + if (!LOG_CHECK_LEVEL_V(level)) return; const char * direction = (input ? " << " : " >> "); - // NULL data means to flush our count of unprintable characters. + // null data means to flush our count of unprintable characters. if (!data) { if (state && state->unprintable_count_[input]) { - LOGP_V(level) << label << direction << "## " + LOG_V(level) << label << direction << "## " << state->unprintable_count_[input] << " consecutive unprintable ##"; state->unprintable_count_[input] = 0; @@ -480,7 +485,7 @@ void LogMultiline(LoggingSeverity level, const char* label, bool input, } asc_line[sizeof(asc_line)-1] = 0; hex_line[sizeof(hex_line)-1] = 0; - LOGP_V(level) << label << direction + LOG_V(level) << label << direction << asc_line << " " << hex_line << " "; udata += line_len; len -= line_len; @@ -534,7 +539,7 @@ void LogMultiline(LoggingSeverity level, const char* label, bool input, // Print out the current line, but prefix with a count of prior unprintable // characters. if (consecutive_unprintable) { - LOGP_V(level) << label << direction << "## " << consecutive_unprintable + LOG_V(level) << label << direction << "## " << consecutive_unprintable << " consecutive unprintable ##"; consecutive_unprintable = 0; } @@ -549,9 +554,9 @@ void LogMultiline(LoggingSeverity level, const char* label, bool input, pos_private = substr.find("Passwd"); } if (pos_private == std::string::npos) { - LOGP_V(level) << label << direction << substr; + LOG_V(level) << label << direction << substr; } else { - LOGP_V(level) << label << direction << "## omitted for privacy ##"; + LOG_V(level) << label << direction << "## omitted for privacy ##"; } } diff --git a/src/logging.h b/src/logging.h index c17fa06..34d5722 100644 --- a/src/logging.h +++ b/src/logging.h @@ -14,7 +14,7 @@ * be found in the AUTHORS file in the root of the source tree. */ -// LOGP(...) an ostream target that can be used to send formatted +// LOG(...) an ostream target that can be used to send formatted // output to a variety of logging targets, such as debugger console, stderr, // or any LogSink. // The severity level passed as the first argument to the LOGging @@ -24,30 +24,30 @@ // There are several variations on the LOG macro which facilitate logging // of common error conditions, detailed below. -// LOGP(sev) logs the given stream at severity "sev", which must be a +// LOG(sev) logs the given stream at severity "sev", which must be a // compile-time constant of the LoggingSeverity type, without the namespace // prefix. -// LOGP_V(sev) Like LOGP(), but sev is a run-time variable of the LoggingSeverity +// LOG_V(sev) Like LOG(), but sev is a run-time variable of the LoggingSeverity // type (basically, it just doesn't prepend the namespace). -// LOGP_F(sev) Like LOGP(), but includes the name of the current function. -// LOGP_T(sev) Like LOGP(), but includes the this pointer. -// LOGP_T_F(sev) Like LOGP_F(), but includes the this pointer. -// LOGP_GLE(M)(sev [, mod]) attempt to add a string description of the +// LOG_F(sev) Like LOG(), but includes the name of the current function. +// LOG_T(sev) Like LOG(), but includes the this pointer. +// LOG_T_F(sev) Like LOG_F(), but includes the this pointer. +// LOG_GLE(M)(sev [, mod]) attempt to add a string description of the // HRESULT returned by GetLastError. The "M" variant allows searching of a // DLL's string table for the error description. -// LOGP_ERRNO(sev) attempts to add a string description of an errno-derived +// LOG_ERRNO(sev) attempts to add a string description of an errno-derived // error. errno and associated facilities exist on both Windows and POSIX, // but on Windows they only apply to the C/C++ runtime. -// LOGP_ERR(sev) is an alias for the platform's normal error system, i.e. _GLE on +// LOG_ERR(sev) is an alias for the platform's normal error system, i.e. _GLE on // Windows and _ERRNO on POSIX. // (The above three also all have _EX versions that let you specify the error // code, rather than using the last one.) -// LOGP_E(sev, ctx, err, ...) logs a detailed error interpreted using the +// LOG_E(sev, ctx, err, ...) logs a detailed error interpreted using the // specified context. -// LOGP_CHECK_LEVEL(sev) (and LOGP_CHECK_LEVEL_V(sev)) can be used as a test +// LOG_CHECK_LEVEL(sev) (and LOG_CHECK_LEVEL_V(sev)) can be used as a test // before performing expensive or sensitive operations whose sole purpose is // to output logging data at the desired level. -// Lastly, PLOGP(sev, err) is an alias for LOGP_ERR_EX. +// Lastly, PLOG(sev, err) is an alias for LOG_ERR_EX. #ifndef __PEERCONNECT_LOGGING_H__ #define __PEERCONNECT_LOGGING_H__ @@ -81,16 +81,13 @@ namespace pc { // } // // int err = LibraryFunc(); -// LOGP(LS_ERROR) << "LibraryFunc returned: " +// LOG(LS_ERROR) << "LibraryFunc returned: " // << ErrorName(err, LIBRARY_ERRORS); struct ConstantLabel { int value; const char * label; }; - -#ifndef KLABEL #define KLABEL(x) { x, #x } #define TLABEL(x, y) { x, y } #define LASTLABEL { 0, 0 } -#endif const char* FindLabel(int value, const ConstantLabel entries[]); std::string ErrorName(int err, const ConstantLabel* err_table); @@ -148,9 +145,12 @@ class LogSink { class LogMessage { public: - LogMessage(const char* file, int line, LoggingSeverity sev, - LogErrorContext err_ctx = ERRCTX_NONE, int err = 0, - const char* module = NULL); + LogMessage(const char* file, + int line, + LoggingSeverity sev, + LogErrorContext err_ctx = ERRCTX_NONE, + int err = 0, + const char* module = nullptr); LogMessage(const char* file, int line, @@ -194,7 +194,7 @@ class LogMessage { // GetLogToStream gets the severity for the specified stream, of if none // is specified, the minimum stream severity. // RemoveLogToStream removes the specified stream, without destroying it. - static int GetLogToStream(LogSink* stream = NULL); + static int GetLogToStream(LogSink* stream = nullptr); static void AddLogToStream(LogSink* stream, LoggingSeverity min_sev); static void RemoveLogToStream(LogSink* stream); @@ -263,12 +263,12 @@ class LogMultilineState { }; // When possible, pass optional state variable to track various data across -// multiple calls to LogMultiline. Otherwise, pass NULL. +// multiple calls to LogMultiline. Otherwise, pass null. void LogMultiline(LoggingSeverity level, const char* label, bool input, const void* data, size_t len, bool hex_mode, LogMultilineState* state); -#ifndef LOGP +#ifndef LOG // The following non-obvious technique for implementation of a // conditional log stream was stolen from google3/base/logging.h. @@ -285,101 +285,91 @@ class LogMessageVoidify { void operator&(std::ostream&) { } }; -#define LOGP_SEVERITY_PRECONDITION(sev) \ +#define LOG_SEVERITY_PRECONDITION(sev) \ !(pc::LogMessage::Loggable(sev)) \ ? (void) 0 \ : pc::LogMessageVoidify() & -#define LOGP(sev) \ - LOGP_SEVERITY_PRECONDITION(pc::sev) \ +#define LOG(sev) \ + LOG_SEVERITY_PRECONDITION(pc::sev) \ pc::LogMessage(__FILE__, __LINE__, pc::sev).stream() -#define LOGP_IF(cond, sev) \ - !(cond) \ - ? (void) 0 \ - : LOGP(sev) - -#define LOGP_F_IF(cond, sev) \ - !(cond) \ - ? (void) 0 \ - : LOGP_F(sev) - // The _V version is for when a variable is passed in. It doesn't do the // namespace concatination. -#define LOGP_V(sev) \ - LOGP_SEVERITY_PRECONDITION(sev) \ +#define LOG_V(sev) \ + LOG_SEVERITY_PRECONDITION(sev) \ pc::LogMessage(__FILE__, __LINE__, sev).stream() // The _F version prefixes the message with the current function name. #if (defined(__GNUC__) && !defined(NDEBUG)) || defined(WANT_PRETTY_LOG_F) -#define LOGP_F(sev) LOGP(sev) << __PRETTY_FUNCTION__ << ": " -#define LOGP_T_F(sev) LOGP(sev) << this << ": " << __PRETTY_FUNCTION__ << ": " +#define LOG_F(sev) LOG(sev) << __PRETTY_FUNCTION__ << ": " +#define LOG_T_F(sev) LOG(sev) << this << ": " << __PRETTY_FUNCTION__ << ": " #else -#define LOGP_F(sev) LOGP(sev) << __FUNCTION__ << ": " -#define LOGP_T_F(sev) LOGP(sev) << this << ": " << __FUNCTION__ << ": " +#define LOG_F(sev) LOG(sev) << __FUNCTION__ << ": " +#define LOG_T_F(sev) LOG(sev) << this << ": " << __FUNCTION__ << ": " #endif -#define LOGP_CHECK_LEVEL(sev) \ +#define LOG_CHECK_LEVEL(sev) \ pc::LogCheckLevel(pc::sev) -#define LOGP_CHECK_LEVEL_V(sev) \ +#define LOG_CHECK_LEVEL_V(sev) \ pc::LogCheckLevel(sev) inline bool LogCheckLevel(LoggingSeverity sev) { return (LogMessage::GetMinLogSeverity() <= sev); } -#define LOGP_E(sev, ctx, err, ...) \ - LOGP_SEVERITY_PRECONDITION(pc::sev) \ +#define LOG_E(sev, ctx, err, ...) \ + LOG_SEVERITY_PRECONDITION(pc::sev) \ pc::LogMessage(__FILE__, __LINE__, pc::sev, \ pc::ERRCTX_ ## ctx, err , ##__VA_ARGS__) \ .stream() -#define LOGP_T(sev) LOGP(sev) << this << ": " +#define LOG_T(sev) LOG(sev) << this << ": " -#define LOGP_ERRNO_EX(sev, err) \ - LOGP_E(sev, ERRNO, err) -#define LOGP_ERRNO(sev) \ - LOGP_ERRNO_EX(sev, errno) +#define LOG_ERRNO_EX(sev, err) \ + LOG_E(sev, ERRNO, err) +#define LOG_ERRNO(sev) \ + LOG_ERRNO_EX(sev, errno) #if defined(WEBRTC_WIN) -#define LOGP_GLE_EX(sev, err) \ - LOGP_E(sev, HRESULT, err) -#define LOGP_GLE(sev) \ - LOGP_GLE_EX(sev, GetLastError()) -#define LOGP_GLEM(sev, mod) \ - LOGP_E(sev, HRESULT, GetLastError(), mod) -#define LOGP_ERR_EX(sev, err) \ - LOGP_GLE_EX(sev, err) -#define LOGP_ERR(sev) \ - LOGP_GLE(sev) +#define LOG_GLE_EX(sev, err) \ + LOG_E(sev, HRESULT, err) +#define LOG_GLE(sev) \ + LOG_GLE_EX(sev, GetLastError()) +#define LOG_GLEM(sev, mod) \ + LOG_E(sev, HRESULT, GetLastError(), mod) +#define LOG_ERR_EX(sev, err) \ + LOG_GLE_EX(sev, err) +#define LOG_ERR(sev) \ + LOG_GLE(sev) #define LAST_SYSTEM_ERROR \ (::GetLastError()) -#elif __native_client__ -#define LOGP_ERR_EX(sev, err) \ - LOGP(sev) -#define LOGP_ERR(sev) \ - LOGP(sev) +#elif defined(__native_client__) && __native_client__ +#define LOG_ERR_EX(sev, err) \ + LOG(sev) +#define LOG_ERR(sev) \ + LOG(sev) #define LAST_SYSTEM_ERROR \ (0) #elif defined(WEBRTC_POSIX) -#define LOGP_ERR_EX(sev, err) \ - LOGP_ERRNO_EX(sev, err) -#define LOGP_ERR(sev) \ - LOGP_ERRNO(sev) +#define LOG_ERR_EX(sev, err) \ + LOG_ERRNO_EX(sev, err) +#define LOG_ERR(sev) \ + LOG_ERRNO(sev) #define LAST_SYSTEM_ERROR \ (errno) #endif // WEBRTC_WIN -#define LOGP_TAG(sev, tag) \ - LOGP_SEVERITY_PRECONDITION(sev) \ - pc::LogMessage(NULL, 0, sev, tag).stream() +#define LOG_TAG(sev, tag) \ + LOG_SEVERITY_PRECONDITION(sev) \ + pc::LogMessage(nullptr, 0, sev, tag).stream() -#define PLOGP(sev, err) \ - LOGP_ERR_EX(sev, err) +#define PLOG(sev, err) \ + LOG_ERR_EX(sev, err) // TODO(?): Add an "assert" wrapper that logs in the same manner. -#endif // LOGP +#endif // LOG } // namespace pc diff --git a/src/peer.cc b/src/peer.cc index ce25c23..b5ea702 100644 --- a/src/peer.cc +++ b/src/peer.cc @@ -7,7 +7,7 @@ #include "control.h" #include "peer.h" #include "webrtc/api/test/fakeconstraints.h" -#include "webrtc/api/test/mockpeerconnectionobservers.h" +#include "webrtc/pc/test/mockpeerconnectionobservers.h" #include "logging.h" @@ -31,16 +31,16 @@ PeerControl::PeerControl(const string local_id, } PeerControl::~PeerControl() { - ASSERT(state_ == pClosed); + RTC_DCHECK(state_ == pClosed); DeletePeerConnection(); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } bool PeerControl::Initialize() { if (!CreatePeerConnection()) { - LOGP_F(LS_ERROR) << "CreatePeerConnection failed"; + LOG_F(LS_ERROR) << "CreatePeerConnection failed"; DeletePeerConnection(); return false; } @@ -48,20 +48,20 @@ bool PeerControl::Initialize() { webrtc::DataChannelInit init; const string data_channel_name = string("pc_data_") + remote_id_; if (!CreateDataChannel(data_channel_name, init)) { - LOGP_F(LS_ERROR) << "CreateDataChannel failed"; + LOG_F(LS_ERROR) << "CreateDataChannel failed"; DeletePeerConnection(); return false; } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; return true; } bool PeerControl::Send(const char* buffer, const size_t size) { - ASSERT( state_ == pOpen ); + RTC_DCHECK( state_ == pOpen ); if ( state_ != pOpen ) { - LOGP_F( WARNING ) << "Send data when a peer state is not opened"; + LOG_F( WARNING ) << "Send data when a peer state is not opened"; return false; } @@ -69,10 +69,10 @@ bool PeerControl::Send(const char* buffer, const size_t size) { } bool PeerControl::SyncSend(const char* buffer, const size_t size) { - ASSERT( state_ == pOpen ); + RTC_DCHECK( state_ == pOpen ); if ( state_ != pOpen ) { - LOGP_F( WARNING ) << "Send data when a peer state is not opened"; + LOG_F( WARNING ) << "Send data when a peer state is not opened"; return false; } @@ -82,7 +82,7 @@ bool PeerControl::SyncSend(const char* buffer, const size_t size) { bool PeerControl::IsWritable() { if ( state_ != pOpen ) { - LOGP_F( WARNING ) << "A function was called when a peer state is not opened"; + LOG_F( WARNING ) << "A function was called when a peer state is not opened"; return false; } @@ -90,16 +90,16 @@ bool PeerControl::IsWritable() { } void PeerControl::Close(const CloseCode code) { - LOGP_F_IF(state_ != pOpen, WARNING) << "Closing peer when it is not opened"; +// LOG_F_IF(state_ != pOpen, WARNING) << "Closing peer when it is not opened"; if ( state_ == pClosing || state_ == pClosed ) { - LOGP_F( WARNING ) << "Close peer when is closing or already closed"; + LOG_F( WARNING ) << "Close peer when is closing or already closed"; return; } state_ = pClosing; - LOGP_F( INFO ) << "Close data-channel of remote_id_ " << remote_id_; + LOG_F( INFO ) << "Close data-channel of remote_id_ " << remote_id_; if ( peer_connection_ ) { @@ -120,45 +120,45 @@ void PeerControl::Close(const CloseCode code) { void PeerControl::CreateOffer(const webrtc::MediaConstraintsInterface* constraints) { - ASSERT( state_ == pClosed ); + RTC_DCHECK( state_ == pClosed ); state_ = pConnecting; peer_connection_->CreateOffer(this, constraints); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::CreateAnswer(const webrtc::MediaConstraintsInterface* constraints) { - ASSERT( state_ == pClosed ); + RTC_DCHECK( state_ == pClosed ); state_ = pConnecting; peer_connection_->CreateAnswer(this, constraints); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::ReceiveOfferSdp(const string& sdp) { - ASSERT( state_ == pClosed); + RTC_DCHECK( state_ == pClosed); SetRemoteDescription(webrtc::SessionDescriptionInterface::kOffer, sdp); CreateAnswer(NULL); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::ReceiveAnswerSdp(const string& sdp) { - ASSERT( state_ == pConnecting ); + RTC_DCHECK( state_ == pConnecting ); SetRemoteDescription(webrtc::SessionDescriptionInterface::kAnswer, sdp); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } -void PeerControl::OnDataChannel(webrtc::DataChannelInterface* data_channel) { - LOGP_F( INFO ) << "remote_id_ is " << remote_id_; +void PeerControl::OnDataChannel(rtc::scoped_refptr channel) { + LOG_F( INFO ) << "remote_id_ is " << remote_id_; - PeerDataChannelObserver* Observer = new PeerDataChannelObserver(data_channel); + PeerDataChannelObserver* Observer = new PeerDataChannelObserver(channel); remote_data_channel_ = std::unique_ptr(Observer); Attach(remote_data_channel_.get()); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::OnSignalingChange(webrtc::PeerConnectionInterface::SignalingState new_state) { @@ -178,7 +178,7 @@ void PeerControl::OnIceConnectionChange(webrtc::PeerConnectionInterface::IceConn // Ice connection has been closed. // Notify it to Control so the Control will remove peer in peers_ // - LOGP_F( INFO ) << "new_state is " << "kIceConnectionClosed"; + LOG_F( INFO ) << "new_state is " << "kIceConnectionClosed"; OnPeerDisconnected(); break; @@ -186,23 +186,23 @@ void PeerControl::OnIceConnectionChange(webrtc::PeerConnectionInterface::IceConn // // Peer disconnected and notify it to control that makes control trigger closing // - LOGP_F( INFO ) << "new_state is " << "kIceConnectionDisconnected"; + LOG_F( INFO ) << "new_state is " << "kIceConnectionDisconnected"; OnPeerDisconnected(); break; case webrtc::PeerConnectionInterface::IceConnectionState::kIceConnectionNew: - LOGP_F( INFO ) << "new_state is " << "kIceConnectionNew"; + LOG_F( INFO ) << "new_state is " << "kIceConnectionNew"; break; case webrtc::PeerConnectionInterface::IceConnectionState::kIceConnectionChecking: - LOGP_F( INFO ) << "new_state is " << "kIceConnectionChecking"; + LOG_F( INFO ) << "new_state is " << "kIceConnectionChecking"; break; case webrtc::PeerConnectionInterface::IceConnectionState::kIceConnectionConnected: - LOGP_F( INFO ) << "new_state is " << "kIceConnectionConnected"; + LOG_F( INFO ) << "new_state is " << "kIceConnectionConnected"; break; case webrtc::PeerConnectionInterface::IceConnectionState::kIceConnectionCompleted: - LOGP_F( INFO ) << "new_state is " << "kIceConnectionCompleted"; + LOG_F( INFO ) << "new_state is " << "kIceConnectionCompleted"; break; case webrtc::PeerConnectionInterface::IceConnectionState::kIceConnectionFailed: - LOGP_F( INFO ) << "new_state is " << "kIceConnectionFailed"; + LOG_F( INFO ) << "new_state is " << "kIceConnectionFailed"; break; default: break; @@ -221,7 +221,7 @@ void PeerControl::OnIceCandidate(const webrtc::IceCandidateInterface* candidate) data["candidate"] = sdp; control_->SendCommand(remote_id_, "ice_candidate", data); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::OnSuccess(webrtc::SessionDescriptionInterface* desc) { @@ -233,7 +233,7 @@ void PeerControl::OnSuccess(webrtc::SessionDescriptionInterface* desc) { if (!desc->ToString(&sdp)) return; if ( state_ != pConnecting ) { - LOGP_F( WARNING ) << "Invalid state"; + LOG_F( WARNING ) << "Invalid state"; return; } @@ -252,7 +252,7 @@ void PeerControl::OnSuccess(webrtc::SessionDescriptionInterface* desc) { data["sdp"] = sdp; control_->SendCommand(remote_id_, "answersdp", data); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::OnPeerOpened() { @@ -263,7 +263,7 @@ void PeerControl::OnPeerOpened() { remote_data_channel_->state() == webrtc::DataChannelInterface::DataState::kOpen ) { LOG_F( INFO ) << "Peers are connected, " << remote_id_ << " and " << local_id_; - ASSERT( state_ == pConnecting ); + RTC_DCHECK( state_ == pConnecting ); // Fianlly, data-channel has been opened. state_ = pOpen; @@ -271,17 +271,17 @@ void PeerControl::OnPeerOpened() { control_->OnPeerWritable(local_id_); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::OnPeerDisconnected() { if ( state_ == pClosed ) { - LOGP_F( WARNING ) << "Already closed"; + LOG_F( WARNING ) << "Already closed"; return; } else if ( state_ == pClosing ) { - LOGP_F( INFO ) << "Already closing"; + LOG_F( INFO ) << "Already closing"; return; } @@ -302,7 +302,7 @@ void PeerControl::OnPeerMessage(const webrtc::DataBuffer& buffer) { void PeerControl::OnBufferedAmountChange(const uint64_t previous_amount) { if ( !local_data_channel_->IsWritable() ) { - LOGP_F( LERROR ) << "local_data_channel_ is not writable"; + LOG_F( LERROR ) << "local_data_channel_ is not writable"; return; } control_->OnPeerWritable( remote_id_ ); @@ -317,19 +317,19 @@ bool PeerControl::CreateDataChannel( data_channel = peer_connection_->CreateDataChannel(label, &init); if (data_channel.get() == nullptr) { - LOGP_F( LERROR ) << "data_channel is null"; + LOG_F( LERROR ) << "data_channel is null"; return false; } local_data_channel_.reset(new PeerDataChannelObserver(data_channel)); if (local_data_channel_.get() == NULL) { - LOGP_F( LERROR ) << "local_data_channel_ is null"; + LOG_F( LERROR ) << "local_data_channel_ is null"; return false; } Attach(local_data_channel_.get()); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; return true; } @@ -340,13 +340,13 @@ void PeerControl::AddIceCandidate(const string& sdp_mid, int sdp_mline_index, webrtc::CreateIceCandidate(sdp_mid, sdp_mline_index, candidate, NULL)); peer_connection_->AddIceCandidate(owned_candidate.get()); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } bool PeerControl::CreatePeerConnection() { - ASSERT(peer_connection_factory_.get() != NULL); - ASSERT(peer_connection_.get() == NULL); + RTC_DCHECK(peer_connection_factory_.get() != NULL); + RTC_DCHECK(peer_connection_.get() == NULL); // Enable DTLS webrtc::FakeConstraints constraints; @@ -362,7 +362,7 @@ bool PeerControl::CreatePeerConnection() { config, &constraints, NULL, NULL, this); if ( peer_connection_.get() == nullptr ) { - LOGP_F( LERROR ) << "peer_connection is null"; + LOG_F( LERROR ) << "peer_connection is null"; return false; } @@ -378,14 +378,14 @@ void PeerControl::DeletePeerConnection() { peer_connection_ = NULL; peer_connection_factory_ = NULL; - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::SetLocalDescription(const string& type, const string& sdp) { if ( peer_connection_ == nullptr ) { - LOGP_F( LERROR ) << "peer_connection_ is nullptr"; + LOG_F( LERROR ) << "peer_connection_ is nullptr"; return; } @@ -395,7 +395,7 @@ void PeerControl::SetLocalDescription(const string& type, peer_connection_->SetLocalDescription( observer, webrtc::CreateSessionDescription(type, sdp, NULL)); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::SetRemoteDescription(const string& type, @@ -407,12 +407,12 @@ void PeerControl::SetRemoteDescription(const string& type, peer_connection_->SetRemoteDescription( observer, webrtc::CreateSessionDescription(type, sdp, NULL)); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::Attach(PeerDataChannelObserver* datachannel) { if (datachannel == nullptr) { - LOGP_F(WARNING) << "Attach to nullptr"; + LOG_F(WARNING) << "Attach to nullptr"; return; } @@ -420,12 +420,12 @@ void PeerControl::Attach(PeerDataChannelObserver* datachannel) { datachannel->SignalOnDisconnected_.connect(this, &PeerControl::OnPeerDisconnected); datachannel->SignalOnMessage_.connect(this, &PeerControl::OnPeerMessage); datachannel->SignalOnBufferedAmountChange_.connect(this, &PeerControl::OnBufferedAmountChange); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerControl::Detach(PeerDataChannelObserver* datachannel) { if (datachannel == nullptr) { - LOGP_F(WARNING) << "Detach from nullptr"; + LOG_F(WARNING) << "Detach from nullptr"; return; } @@ -433,7 +433,7 @@ void PeerControl::Detach(PeerDataChannelObserver* datachannel) { datachannel->SignalOnDisconnected_.disconnect(this); datachannel->SignalOnMessage_.disconnect(this); datachannel->SignalOnBufferedAmountChange_.disconnect(this); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } @@ -446,14 +446,14 @@ PeerDataChannelObserver::PeerDataChannelObserver(webrtc::DataChannelInterface* c : channel_(channel) { channel_->RegisterObserver(this); state_ = channel_->state(); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } PeerDataChannelObserver::~PeerDataChannelObserver() { channel_->Close(); state_ = channel_->state(); channel_->UnregisterObserver(); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerDataChannelObserver::OnBufferedAmountChange(uint64_t previous_amount) { @@ -470,11 +470,11 @@ void PeerDataChannelObserver::OnBufferedAmountChange(uint64_t previous_amount) { void PeerDataChannelObserver::OnStateChange() { state_ = channel_->state(); if (state_ == webrtc::DataChannelInterface::DataState::kOpen) { - LOGP_F( INFO ) << "Data channel internal state is kOpen"; + LOG_F( INFO ) << "Data channel internal state is kOpen"; SignalOnOpen_(); } else if (state_ == webrtc::DataChannelInterface::DataState::kClosed) { - LOGP_F( INFO ) << "Data channel internal state is kClosed"; + LOG_F( INFO ) << "Data channel internal state is kClosed"; SignalOnDisconnected_(); } } @@ -488,7 +488,7 @@ bool PeerDataChannelObserver::Send(const char* buffer, const size_t size) { webrtc::DataBuffer databuffer(rtcbuffer, true); if ( channel_->buffered_amount() >= max_buffer_size_ ) { - LOGP_F( LERROR ) << "Buffer is full"; + LOG_F( LERROR ) << "Buffer is full"; return false; } @@ -504,7 +504,7 @@ bool PeerDataChannelObserver::SyncSend(const char* buffer, const size_t size) { if (!send_cv_.wait_for(lock, std::chrono::milliseconds(60*1000), [this] () { return channel_->buffered_amount() == 0; })) { - LOGP_F( LERROR ) << "Buffer is full"; + LOG_F( LERROR ) << "Buffer is full"; return false; } @@ -512,7 +512,7 @@ bool PeerDataChannelObserver::SyncSend(const char* buffer, const size_t size) { } void PeerDataChannelObserver::Close() { - LOGP_F(LS_INFO) << "Closing data channel"; + LOG_F(LS_INFO) << "Closing data channel"; if (channel_->state() != webrtc::DataChannelInterface::kClosing) { channel_->Close(); } @@ -529,17 +529,17 @@ uint64_t PeerDataChannelObserver::BufferedAmount() { bool PeerDataChannelObserver::IsWritable() { if ( channel_ == nullptr ) { - LOGP_F( LERROR ) << "channel_ is null"; + LOG_F( LERROR ) << "channel_ is null"; return false; } if ( !IsOpen() ) { - LOGP_F( LERROR ) << "data channel is not opened"; + LOG_F( LERROR ) << "data channel is not opened"; return false; } if ( channel_->buffered_amount() > 0 ) { - LOGP_F( LERROR ) << "buffer is full"; + LOG_F( LERROR ) << "buffer is full"; return false; } diff --git a/src/peer.h b/src/peer.h index 41de490..0f29937 100644 --- a/src/peer.h +++ b/src/peer.h @@ -94,9 +94,9 @@ public: // void OnSignalingChange(webrtc::PeerConnectionInterface::SignalingState new_state) override; - void OnAddStream(webrtc::MediaStreamInterface* stream) override {}; - void OnRemoveStream(webrtc::MediaStreamInterface* stream) override {} - void OnDataChannel(webrtc::DataChannelInterface* channel) override; + void OnAddStream(rtc::scoped_refptr stream) override {}; + void OnRemoveStream(rtc::scoped_refptr stream) override {} + void OnDataChannel(rtc::scoped_refptr channel) override; void OnRenegotiationNeeded() override {} void OnIceConnectionChange(webrtc::PeerConnectionInterface::IceConnectionState new_state) override; void OnIceGatheringChange(webrtc::PeerConnectionInterface::IceGatheringState new_state) override {} diff --git a/src/peerconnect.cc b/src/peerconnect.cc index d9c6c81..3b30e63 100644 --- a/src/peerconnect.cc +++ b/src/peerconnect.cc @@ -35,28 +35,28 @@ PeerConnect::PeerConnect( const string peer ) { peer_ = local_peer; close_once_ = false; - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } PeerConnect::~PeerConnect() { - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerConnect::Run() { rtc::ThreadManager::Instance()->CurrentThread()->Run(); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerConnect::Stop() { rtc::ThreadManager::Instance()->CurrentThread()->Quit(); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerConnect::Open() { if ( control_.get() != nullptr ) { - LOGP_F( WARNING ) << "Already open."; + LOG_F( WARNING ) << "Already open."; return; } @@ -76,7 +76,7 @@ void PeerConnect::Open() { control_->RegisterObserver( this, control_ ); if ( control_.get() == NULL ) { - LOGP_F( LERROR ) << "Failed to create class Control."; + LOG_F( LERROR ) << "Failed to create class Control."; return; } @@ -85,7 +85,7 @@ void PeerConnect::Open() { // if ( !control_->InitializeControl() ) { - LOGP_F( LERROR ) << "Failed to initialize Control."; + LOG_F( LERROR ) << "Failed to initialize Control."; control_.reset(); return; } @@ -95,7 +95,7 @@ void PeerConnect::Open() { // control_->Open( setting_.signal_id_, setting_.signal_password_, peer_ ); - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; return; } @@ -108,12 +108,12 @@ void PeerConnect::Close( const string peer ) { else { control_->ClosePeer( peer, CLOSE_NORMAL, FORCE_QUEUING_ON ); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerConnect::Connect( const string peer ) { control_->Connect( peer ); - LOGP_F( INFO ) << "Done, peer is " << peer; + LOG_F( INFO ) << "Done, peer is " << peer; return; } @@ -171,10 +171,10 @@ PeerConnect& PeerConnect::On( string event_id, std::function han if ( event_id == "open" || event_id == "connect" || event_id == "writable" ) { std::unique_ptr f( new EventHandler_2( handler ) ); event_handler_.insert( Events::value_type( event_id, std::move( f ) ) ); - LOGP_F( INFO ) << "An event handler '" << event_id << "' has been inserted"; + LOG_F( INFO ) << "An event handler '" << event_id << "' has been inserted"; } else { - LOGP_F( LERROR ) << "Unsupported event type: " << event_id; + LOG_F( LERROR ) << "Unsupported event type: " << event_id; } return *this; } @@ -183,7 +183,7 @@ PeerConnect& PeerConnect::On( string event_id, std::function f( new EventHandler_Close( handler ) ); event_handler_.insert( Events::value_type( event_id, std::move( f ) ) ); - LOGP_F( INFO ) << "An event handler '" << event_id << "' has been inserted"; + LOG_F( INFO ) << "An event handler '" << event_id << "' has been inserted"; } else { - LOGP_F( LERROR ) << "Unsupported event type: " << event_id; + LOG_F( LERROR ) << "Unsupported event type: " << event_id; } return *this; @@ -210,10 +210,10 @@ PeerConnect& PeerConnect::On( string event_id, std::function f( new EventHandler_Message( handler ) ); event_handler_.insert( Events::value_type( event_id, std::move( f ) ) ); - LOGP_F( INFO ) << "An event handler '" << event_id << "' has been inserted"; + LOG_F( INFO ) << "An event handler '" << event_id << "' has been inserted"; } else { - LOGP_F( LERROR ) << "Unsupported event type: " << event_id; + LOG_F( LERROR ) << "Unsupported event type: " << event_id; } return *this; @@ -230,7 +230,7 @@ void PeerConnect::OnOpen( const string peer ) { CallEventHandler( "open", peer ); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } void PeerConnect::OnClose( const string peer, const CloseCode code, const string desc ) { @@ -238,7 +238,7 @@ void PeerConnect::OnClose( const string peer, const CloseCode code, const string // This instance of PeerConnect and local peer is going to be closed if ( peer == peer_ ) { if ( close_once_ ) { - LOGP_F( WARNING ) << "close_ is false, peer is " << peer; + LOG_F( WARNING ) << "close_ is false, peer is " << peer; return; } @@ -258,7 +258,7 @@ void PeerConnect::OnClose( const string peer, const CloseCode code, const string } } - LOGP_F( INFO ) << "Done, peer is " << peer; + LOG_F( INFO ) << "Done, peer is " << peer; } void PeerConnect::OnConnect( const string peer ) { @@ -266,7 +266,7 @@ void PeerConnect::OnConnect( const string peer ) { CallEventHandler( "connect", peer ); } - LOGP_F( INFO ) << "Done, peer is " << peer; + LOG_F( INFO ) << "Done, peer is " << peer; } void PeerConnect::OnMessage( const string peer, const char* data, const size_t size ) { @@ -280,7 +280,7 @@ void PeerConnect::OnWritable( const string peer ) { CallEventHandler( "writable", peer ); } - LOGP_F( INFO ) << "Done, peer is " << peer; + LOG_F( INFO ) << "Done, peer is " << peer; } @@ -302,7 +302,7 @@ bool PeerConnect::ParseOptions( const string& options ) { string value; if ( !reader.parse( options, joptions ) ) { - LOGP_F( WARNING ) << "Invalid setting: " << options; + LOG_F( WARNING ) << "Invalid setting: " << options; return false; } diff --git a/src/signalconnection.cc b/src/signalconnection.cc index 4551c86..2bdcb9a 100644 --- a/src/signalconnection.cc +++ b/src/signalconnection.cc @@ -1,28 +1,28 @@ -/* - * Copyright 2016 The PeerConnect Project Authors. All rights reserved. - * - * Ryan Lee - */ - -#if defined(WEBRTC_WIN) -#pragma warning(disable:4503) -#endif - -#include -#include -#include "signalconnection.h" -#include "logging.h" - -namespace pc { - -Signal::Signal(const string url) : +/* + * Copyright 2016 The PeerConnect Project Authors. All rights reserved. + * + * Ryan Lee + */ + +#if defined(WEBRTC_WIN) +#pragma warning(disable:4503) +#endif + +#include +#include +#include "signalconnection.h" +#include "logging.h" + +namespace pc { + +Signal::Signal(const string url) : con_state_(con_closed), network_thread_(), reconn_attempts_(3), reconn_made_(0), reconn_delay_(5000), - reconn_delay_max_(25000), - url_(url) { + reconn_delay_max_(25000), + url_(url) { #if _DEBUG || DEBUG client_.clear_access_channels(websocketpp::log::alevel::all); @@ -32,10 +32,10 @@ Signal::Signal(const string url) : client_.clear_error_channels(websocketpp::log::alevel::all); #endif - // Default settings - if (url_.empty()) { - url_ = "wss://signal.peers.io/hello"; - } + // Default settings + if (url_.empty()) { + url_ = "wss://signal.peers.io/hello"; + } // Initialize ASIO client_.init_asio(); @@ -51,27 +51,27 @@ Signal::Signal(const string url) : client_.set_message_handler(bind(&Signal::OnMessage, this, _1, _2)); client_.set_tls_init_handler(bind(&Signal::OnTlsInit, this, _1)); - LOGP_F( INFO ) << "Done"; -} - -Signal::~Signal() { - Teardown(); - LOGP_F( INFO ) << "Done"; -} - -void Signal::Open(const string& id, const string& password) { - user_id_ = id; - user_password_ = password; - Connect(); + LOG_F( INFO ) << "Done"; +} - LOGP_F( INFO ) << "Done"; -} - -void Signal::Close() { - - if ( !opened() ) { - LOGP_F( WARNING ) << "It is not opened"; - return; +Signal::~Signal() { + Teardown(); + LOG_F( INFO ) << "Done"; +} + +void Signal::Open(const string& id, const string& password) { + user_id_ = id; + user_password_ = password; + Connect(); + + LOG_F( INFO ) << "Done"; +} + +void Signal::Close() { + + if ( !opened() ) { + LOG_F( WARNING ) << "It is not opened"; + return; } con_state_ = con_closing; @@ -79,14 +79,14 @@ void Signal::Close() { this, websocketpp::close::status::normal, "End by user")); - LOGP_F( INFO ) << "Done"; -} - + LOG_F( INFO ) << "Done"; +} + void Signal::SyncClose() { if ( !opened() ) { - LOGP_F( WARNING ) << "It is not opened"; + LOG_F( WARNING ) << "It is not opened"; return; } @@ -102,53 +102,53 @@ void Signal::SyncClose() network_thread_.reset(); } - LOGP_F( INFO ) << "Done"; -} - - -void Signal::SendCommand(const string channel, - const string commandname, - const Json::Value& data) { - - if (commandname.empty()) { - LOGP_F(WARNING) << "SendCommand with empty commandname"; - return; - } - - if (!opened()) { - LOGP_F(WARNING) << "Signal server is not opened"; - return; - } - - Json::Value message; - Json::FastWriter writer; - message["command"] = commandname; - message["data"] = data; - if (!channel.empty()) message["channel"] = channel; - - LOGP_F( LS_VERBOSE ) << "message is " << message.toStyledString(); - - try { - client_.send(con_hdl_, writer.write(message), websocketpp::frame::opcode::text); - } - catch (websocketpp::lib::error_code& ec) { - LOGP_F(LERROR) << "SendCommand Error: " << ec; - } - catch (std::exception& e) { - LOGP_F(LERROR) << "SendCommand Error: " << e.what(); - } - catch (...) { - LOGP_F(LERROR) << "SendCommand Error: "; - } - - LOGP_F( INFO ) << "Done"; -} - -void Signal::SendGlobalCommand(const string commandname, - const Json::Value& data) { - SendCommand("", commandname, data); -} - + LOG_F( INFO ) << "Done"; +} + + +void Signal::SendCommand(const string channel, + const string commandname, + const Json::Value& data) { + + if (commandname.empty()) { + LOG_F(WARNING) << "SendCommand with empty commandname"; + return; + } + + if (!opened()) { + LOG_F(WARNING) << "Signal server is not opened"; + return; + } + + Json::Value message; + Json::FastWriter writer; + message["command"] = commandname; + message["data"] = data; + if (!channel.empty()) message["channel"] = channel; + + LOG_F( LS_VERBOSE ) << "message is " << message.toStyledString(); + + try { + client_.send(con_hdl_, writer.write(message), websocketpp::frame::opcode::text); + } + catch (websocketpp::lib::error_code& ec) { + LOG_F(LERROR) << "SendCommand Error: " << ec; + } + catch (std::exception& e) { + LOG_F(LERROR) << "SendCommand Error: " << e.what(); + } + catch (...) { + LOG_F(LERROR) << "SendCommand Error: "; + } + + LOG_F( INFO ) << "Done"; +} + +void Signal::SendGlobalCommand(const string commandname, + const Json::Value& data) { + SendCommand("", commandname, data); +} + void Signal::Connect() { if (reconn_timer_) @@ -180,9 +180,9 @@ void Signal::Connect() this->ResetState(); client_.get_io_service().dispatch(websocketpp::lib::bind(&Signal::ConnectInternal, this)); network_thread_.reset(new websocketpp::lib::thread(websocketpp::lib::bind(&Signal::RunLoop, this))); - LOGP_F( INFO ) << "Done"; -} - + LOG_F( INFO ) << "Done"; +} + void Signal::Teardown() { @@ -190,17 +190,17 @@ void Signal::Teardown() network_thread_->detach(); network_thread_.reset(); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; } asio::io_service& Signal::GetIoService() { return client_.get_io_service(); -} - - - +} + + + void Signal::SendOpenCommand() { Json::Value data; @@ -209,19 +209,19 @@ void Signal::SendOpenCommand() { SendGlobalCommand("open", data); } - + void Signal::OnCommandReceived(Json::Value& message) { SignalOnCommandReceived_(message); return; } - + void Signal::RunLoop() { client_.run(); client_.reset(); client_.get_alog().write(websocketpp::log::alevel::devel, "run loop end"); -} +} void Signal::ConnectInternal() { @@ -235,13 +235,13 @@ void Signal::ConnectInternal() client_.connect(con); return; -} - - +} + + void Signal::CloseInternal(websocketpp::close::status::value const& code, string const& desc) { - LOGP_F(WARNING) << "Close by reason:" << desc; + LOG_F(WARNING) << "Close by reason:" << desc; if (reconn_timer_) { @@ -250,7 +250,7 @@ void Signal::CloseInternal(websocketpp::close::status::value const& code, string } if (con_hdl_.expired()) { - LOGP_F(LERROR) << "Error: No active session"; + LOG_F(LERROR) << "Error: No active session"; } else { @@ -258,7 +258,7 @@ void Signal::CloseInternal(websocketpp::close::status::value const& code, string client_.close(con_hdl_, code, desc, ec); } } - + void Signal::TimeoutReconnect(websocketpp::lib::asio::error_code const& ec) { if (ec) @@ -271,29 +271,29 @@ void Signal::TimeoutReconnect(websocketpp::lib::asio::error_code const& ec) con_state_ = con_opening; reconn_made_++; this->ResetState(); - LOGP_F(WARNING) << "Reconnecting.."; + LOG_F(WARNING) << "Reconnecting.."; client_.get_io_service().dispatch(websocketpp::lib::bind(&Signal::ConnectInternal, this)); } } - + unsigned Signal::NextDelay() const { //no jitter, fixed power root. unsigned reconn_made = std::min(reconn_made_, 32);//protect the pow result to be too big. return static_cast(std::min(reconn_delay_ * pow(1.5, reconn_made), reconn_delay_max_)); -} - - +} + + void Signal::OnOpen(websocketpp::connection_hdl con) { - LOGP_F(WARNING) << "Connected."; + LOG_F(WARNING) << "Connected."; con_state_ = con_opened; con_hdl_ = con; reconn_made_ = 0; SendOpenCommand(); -} - +} + void Signal::OnClose(websocketpp::connection_hdl con) { @@ -307,7 +307,7 @@ void Signal::OnClose(websocketpp::connection_hdl con) websocketpp::close::status::value code = websocketpp::close::status::normal; client_type::connection_ptr conn_ptr = client_.get_con_from_hdl(con, ec); if (ec) { - LOGP_F(LERROR) << "get conn failed" << ec; + LOG_F(LERROR) << "get conn failed" << ec; } else { code = conn_ptr->get_local_close_code(); @@ -328,7 +328,7 @@ void Signal::OnClose(websocketpp::connection_hdl con) //if (reconn_made_NextDelay(); // reconn_timer_.reset(new websocketpp::lib::asio::steady_timer(client_.get_io_service())); // websocketpp::lib::asio::error_code ec; @@ -340,10 +340,10 @@ void Signal::OnClose(websocketpp::connection_hdl con) SignalOnClosed_(code); } - LOGP_F( INFO ) << "Done"; + LOG_F( INFO ) << "Done"; + +} -} - void Signal::OnFail(websocketpp::connection_hdl con) { // @@ -355,7 +355,7 @@ void Signal::OnFail(websocketpp::connection_hdl con) websocketpp::close::status::value code = websocketpp::close::status::abnormal_close; client_type::connection_ptr conn_ptr = client_.get_con_from_hdl(con, ec); if (ec) { - LOGP_F(LERROR) << "get conn failed" << ec; + LOG_F(LERROR) << "get conn failed" << ec; } else { code = conn_ptr->get_local_close_code(); @@ -364,11 +364,11 @@ void Signal::OnFail(websocketpp::connection_hdl con) con_hdl_.reset(); con_state_ = con_closed; - LOGP_F(LERROR) << "Connection failed."; + LOG_F(LERROR) << "Connection failed."; if (reconn_made_NextDelay(); reconn_timer_.reset(new asio::steady_timer(client_.get_io_service())); websocketpp::lib::asio::error_code ec; @@ -379,19 +379,19 @@ void Signal::OnFail(websocketpp::connection_hdl con) SignalOnClosed_(code); } } - - + + void Signal::OnMessage(websocketpp::connection_hdl con, client_type::message_ptr msg) { - Json::Reader reader; - Json::Value jmessage; - - if (!reader.parse(msg->get_payload(), jmessage)) { - LOGP_F(WARNING) << "Received unknown message: " << msg->get_payload(); - return; + Json::Reader reader; + Json::Value jmessage; + + if (!reader.parse(msg->get_payload(), jmessage)) { + LOG_F(WARNING) << "Received unknown message: " << msg->get_payload(); + return; } - - LOGP_F( LS_VERBOSE ) << jmessage.toStyledString(); + + LOG_F( LS_VERBOSE ) << jmessage.toStyledString(); OnCommandReceived(jmessage); } @@ -410,11 +410,11 @@ Signal::context_ptr Signal::OnTlsInit(websocketpp::connection_hdl conn) asio::ssl::context::single_dh_use, ec); if (ec) { - LOGP_F(LERROR) << "Init tls failed,reason:" << ec.message(); + LOG_F(LERROR) << "Init tls failed,reason:" << ec.message(); } return ctx; } - - + + } // namespace pc \ No newline at end of file diff --git a/src/signalconnection.h b/src/signalconnection.h index 6fb8fd4..59fcb73 100644 --- a/src/signalconnection.h +++ b/src/signalconnection.h @@ -1,12 +1,12 @@ -/* - * Copyright 2016 The PeerConnect Project Authors. All rights reserved. - * - * Ryan Lee - */ - - /* - Reference: socket.io-client-cpp - +/* + * Copyright 2016 The PeerConnect Project Authors. All rights reserved. + * + * Ryan Lee + */ + + /* + Reference: socket.io-client-cpp + Copyright (c) 2015, Melo Yao All rights reserved. @@ -26,62 +26,62 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - */ - - -#ifndef __PEERCONNECT_SIGNAL_H__ -#define __PEERCONNECT_SIGNAL_H__ - -#include - + SOFTWARE. + */ + + +#ifndef __PEERCONNECT_SIGNAL_H__ +#define __PEERCONNECT_SIGNAL_H__ + +#include + #if _DEBUG || DEBUG #include #else #include -#endif //DEBUG - -#include "websocketpp/client.hpp" -#include "websocketpp/common/thread.hpp" - -#include "webrtc/base/sigslot.h" -#include "webrtc/base/json.h" - - -namespace pc { - -class SignalInterface { -public: - virtual void Open(const std::string& id, const std::string& password) = 0; - virtual void Close() = 0; - - virtual void SendCommand(const std::string id, - const std::string commandname, - const Json::Value& data) = 0; - virtual void SendGlobalCommand(const std::string commandname, - const Json::Value& data) = 0; - std::string session_id() { return session_id_; } - - // sigslots - sigslot::signal1 SignalOnCommandReceived_; - sigslot::signal1 SignalOnClosed_; - - -protected: - std::string session_id_; -}; - - -class Signal - : public SignalInterface { -public: +#endif //DEBUG + +#include "websocketpp/client.hpp" +#include "websocketpp/common/thread.hpp" + +#include "webrtc/base/sigslot.h" +#include "webrtc/base/json.h" + + +namespace pc { + +class SignalInterface { +public: + virtual void Open(const std::string& id, const std::string& password) = 0; + virtual void Close() = 0; + + virtual void SendCommand(const std::string id, + const std::string commandname, + const Json::Value& data) = 0; + virtual void SendGlobalCommand(const std::string commandname, + const Json::Value& data) = 0; + std::string session_id() { return session_id_; } + + // sigslots + sigslot::signal1 SignalOnCommandReceived_; + sigslot::signal1 SignalOnClosed_; + + +protected: + std::string session_id_; +}; + + +class Signal + : public SignalInterface { +public: enum con_state { con_opening, con_opened, con_closing, con_closed - }; + }; using string = std::string; @@ -89,22 +89,22 @@ public: typedef websocketpp::config::debug_asio_tls client_config; #else typedef websocketpp::config::asio_tls_client client_config; -#endif //DEBUG - typedef websocketpp::client client_type; +#endif //DEBUG + typedef websocketpp::client client_type; - Signal(const string url); - ~Signal(); - - void Open(const string& id, const string& password); - void Close(); + Signal(const string url); + ~Signal(); + + void Open(const string& id, const string& password); + void Close(); void SyncClose(); - - void SendCommand(const string channel, - const string commandname, - const Json::Value& data); - void SendGlobalCommand(const string commandname, - const Json::Value& data); - + + void SendCommand(const string channel, + const string commandname, + const Json::Value& data); + void SendGlobalCommand(const string commandname, + const Json::Value& data); + void Teardown(); bool opened() const { return con_state_ == con_opened;} @@ -149,15 +149,15 @@ private: unsigned reconn_delay_; unsigned reconn_delay_max_; unsigned reconn_attempts_; - unsigned reconn_made_; - - // Signal server - string url_; - string user_id_; - string user_password_; -}; // class Signal - - -} // namespace pc - + unsigned reconn_made_; + + // Signal server + string url_; + string user_id_; + string user_password_; +}; // class Signal + + +} // namespace pc + #endif // __PEERCONNECT_SIGNAL_H__ \ No newline at end of file diff --git a/webrtcbranch b/webrtcbranch index bfadfbb..6d574e4 100644 --- a/webrtcbranch +++ b/webrtcbranch @@ -1 +1 @@ -branch-heads/55 \ No newline at end of file +branch-heads/60 \ No newline at end of file