diff --git a/webrtc/build/webrtc.gni b/webrtc/build/webrtc.gni index fcbf04f778..5b3fe18344 100644 --- a/webrtc/build/webrtc.gni +++ b/webrtc/build/webrtc.gni @@ -12,14 +12,6 @@ declare_args() { build_with_chromium = true build_with_libjingle = true - if (build_with_libjingle) { - include_tests = false - restrict_webrtc_logging = true - } else { - include_tests = true - restrict_webrtc_logging = false - } - # Adds video support to dependencies shared by voice and video engine. # This should normally be enabled; the intended use is to disable only # when building voice engine exclusively. @@ -59,6 +51,41 @@ declare_args() { enable_android_opensl = true + if (build_with_chromium) { + # Exclude pulse audio on Chromium since its prerequisites don't require + # pulse audio. + include_pulse_audio = false + + # Exclude internal ADM since Chromium uses its own IO handling. + include_internal_audio_device = false + + # Exclude internal VCM in Chromium build. + include_internal_video_capture = false + + # Exclude internal video render module in Chromium build. + include_internal_video_render = false + } else { + # Settings for the standalone (not-in-Chromium) build. + + # TODO(andrew): For now, disable the Chrome plugins, which causes a + # flood of chromium-style warnings. Investigate enabling them: + # http://code.google.com/p/webrtc/issues/detail?id=163 + clang_use_chrome_plugins = false + + include_pulse_audio = true + include_internal_audio_device = true + include_internal_video_capture = true + include_internal_video_render = true + } + + if (build_with_libjingle) { + include_tests = false + restrict_webrtc_logging = true + } else { + include_tests = true + restrict_webrtc_logging = false + } + if (is_ios) { build_libjpeg = false enable_protobuf = false diff --git a/webrtc/modules/video_capture/BUILD.gn b/webrtc/modules/video_capture/BUILD.gn index fd3fe574d7..9c314aec15 100644 --- a/webrtc/modules/video_capture/BUILD.gn +++ b/webrtc/modules/video_capture/BUILD.gn @@ -8,6 +8,132 @@ import("../../build/webrtc.gni") +config("video_capture_config") { + if (is_ios) { + libs = [ + "AVFoundation.framework", + "CoreMedia.framework", + "CoreVideo.framework", + ] + } +} + source_set("video_capture") { - # TODO(glaznev): Implement. + sources = [ + "device_info_impl.cc", + "device_info_impl.h", + "include/video_capture.h", + "include/video_capture_defines.h", + "include/video_capture_factory.h", + "video_capture_config.h", + "video_capture_delay.h", + "video_capture_factory.cc", + "video_capture_impl.cc", + "video_capture_impl.h", + ] + + libs = [] + deps = [] + + if (include_internal_video_capture) { + if (is_linux) { + sources += [ + "linux/device_info_linux.cc", + "linux/device_info_linux.h", + "linux/video_capture_linux.cc", + "linux/video_capture_linux.h", + ] + } + if (is_mac) { + sources += [ + "mac/qtkit/video_capture_qtkit.h", + "mac/qtkit/video_capture_qtkit.mm", + "mac/qtkit/video_capture_qtkit_info.h", + "mac/qtkit/video_capture_qtkit_info.mm", + "mac/qtkit/video_capture_qtkit_info_objc.h", + "mac/qtkit/video_capture_qtkit_info_objc.mm", + "mac/qtkit/video_capture_qtkit_objc.h", + "mac/qtkit/video_capture_qtkit_objc.mm", + "mac/qtkit/video_capture_qtkit_utility.h", + "mac/video_capture_mac.mm", + ] + + libs += [ + "CoreVideo.framework", + "QTKit.framework", + ] + } + if (is_win) { + sources += [ + "windows/device_info_ds.cc", + "windows/device_info_ds.h", + "windows/device_info_mf.cc", + "windows/device_info_mf.h", + "windows/help_functions_ds.cc", + "windows/help_functions_ds.h", + "windows/sink_filter_ds.cc", + "windows/sink_filter_ds.h", + "windows/video_capture_ds.cc", + "windows/video_capture_ds.h", + "windows/video_capture_factory_windows.cc", + "windows/video_capture_mf.cc", + "windows/video_capture_mf.h", + ] + + libs += [ "Strmiids.lib" ] + deps += [ "//third_party/winsdk_samples"] + } + if (is_android) { + sources += [ + "android/device_info_android.cc", + "android/device_info_android.h", + "android/video_capture_android.cc", + "android/video_capture_android.h", + ] + + deps += [ + "//third_party/icu:icuuc", + "//third_party/jsoncpp", + ] + } + if (is_ios) { + sources += [ + "ios/device_info_ios.h", + "ios/device_info_ios.mm", + "ios/device_info_ios_objc.h", + "ios/device_info_ios_objc.mm", + "ios/rtc_video_capture_ios_objc.h", + "ios/rtc_video_capture_ios_objc.mm", + "ios/video_capture_ios.h", + "ios/video_capture_ios.mm", + ] + + cflags += [ + "-fobjc-arc", # CLANG_ENABLE_OBJC_ARC = YES. + # To avoid warnings for deprecated videoMinFrameDuration and + # videoMaxFrameDuration properties in iOS 7.0. + # See webrtc:3705 for more details. + "-Wno-deprecated-declarations", + ] + } + } else { + sources += [ + "external/device_info_external.cc", + "external/video_capture_external.cc", + ] + } + + all_dependent_configs = [ ":video_capture_config"] + + if (is_clang) { + # Suppress warnings from Chrome's Clang plugins. + # See http://code.google.com/p/webrtc/issues/detail?id=163 for details. + configs -= [ "//build/config/clang:find_bad_constructs" ] + } + + deps += [ + "../../common_video", + "../../system_wrappers", + "../utility", + ] } diff --git a/webrtc/modules/video_render/BUILD.gn b/webrtc/modules/video_render/BUILD.gn index c569b7fac2..fe9259c2ec 100644 --- a/webrtc/modules/video_render/BUILD.gn +++ b/webrtc/modules/video_render/BUILD.gn @@ -8,6 +8,136 @@ import("../../build/webrtc.gni") +config("video_render_config") { + if (is_ios) { + libs = [ + "OpenGLES.framework", + "QuartzCore.framework", + ] + } +} + source_set("video_render") { - # TODO(wuchengli): Implement. + sources = [ + "external/video_render_external_impl.cc", + "external/video_render_external_impl.h", + "i_video_render.h", + "include/video_render.h", + "include/video_render_defines.h", + "incoming_video_stream.cc", + "incoming_video_stream.h", + "video_render_frames.cc", + "video_render_frames.h", + "video_render_impl.cc", + "video_render_impl.h", + ] + + libs = [] + deps = [] + + if (include_internal_video_render) { + defines += [ "WEBRTC_INCLUDE_INTERNAL_VIDEO_RENDER" ] + + if (is_linux) { + sources += [ + "linux/video_render_linux_impl.cc", + "linux/video_render_linux_impl.h", + "linux/video_x11_channel.cc", + "linux/video_x11_channel.h", + "linux/video_x11_render.cc", + "linux/video_x11_render.h", + ] + + libs += [ "Xext" ] + } + if (is_mac) { + sources += [ + "mac/cocoa_full_screen_window.h", + "mac/cocoa_full_screen_window.mm", + "mac/cocoa_render_view.h", + "mac/cocoa_render_view.mm", + "mac/video_render_agl.cc", + "mac/video_render_agl.h", + "mac/video_render_mac_carbon_impl.cc", + "mac/video_render_mac_carbon_impl.h", + "mac/video_render_mac_cocoa_impl.h", + "mac/video_render_mac_cocoa_impl.mm", + "mac/video_render_nsopengl.h", + "mac/video_render_nsopengl.mm", + ] + + libs += [ + "CoreVideo.framework", + "QTKit.framework", + ] + } + if (is_win) { + sources += [ + "windows/i_video_render_win.h", + "windows/video_render_direct3d9.cc", + "windows/video_render_direct3d9.h", + "windows/video_render_windows_impl.cc", + "windows/video_render_windows_impl.h", + ] + + directxsdk_exists = + (exec_script("//build/dir_exists.py", + [ rebase_path("//third_party/directxsdk/files", + root_build_dir) ], + "trim string") == "True") + if (directxsdk_exists) { + directxsdk_path = "//third_party/directxsdk/files" + } else { + directxsdk_path = getenv("DXSDK_DIR") + } + include_dirs = [ directxsdk_path + "/Include" ] + + } + if (is_android) { + sources += [ + "android/video_render_android_impl.cc", + "android/video_render_android_impl.h", + "android/video_render_android_native_opengl2.cc", + "android/video_render_android_native_opengl2.h", + "android/video_render_android_surface_view.cc", + "android/video_render_android_surface_view.h", + "android/video_render_opengles20.cc", + "android/video_render_opengles20.h", + ] + + libs += [ "GLESv2" ] + } + if (is_ios) { + sources += [ + "ios/open_gles20.h", + "ios/open_gles20.mm", + "ios/video_render_ios_channel.h", + "ios/video_render_ios_channel.mm", + "ios/video_render_ios_gles20.h", + "ios/video_render_ios_gles20.mm", + "ios/video_render_ios_impl.h", + "ios/video_render_ios_impl.mm", + "ios/video_render_ios_view.h", + "ios/video_render_ios_view.mm", + ] + } + } + + all_dependent_configs = [ ":video_render_config"] + + if (is_ios) { + cflags += [ "-fobjc-arc" ] # CLANG_ENABLE_OBJC_ARC = YES. + } + + if (is_clang) { + # Suppress warnings from Chrome's Clang plugins. + # See http://code.google.com/p/webrtc/issues/detail?id=163 for details. + configs -= [ "//build/config/clang:find_bad_constructs" ] + } + + deps += [ + "../../common_video", + "../../system_wrappers", + "../utility", + ] } diff --git a/webrtc/video/BUILD.gn b/webrtc/video/BUILD.gn index 18c43f91c6..121e7540d2 100644 --- a/webrtc/video/BUILD.gn +++ b/webrtc/video/BUILD.gn @@ -9,6 +9,28 @@ import("../build/webrtc.gni") source_set("video") { - # TODO(pbos): Implement when video_engine_core is done. + sources = [ + "call.cc", + "encoded_frame_callback_adapter.cc", + "encoded_frame_callback_adapter.h", + "receive_statistics_proxy.cc", + "receive_statistics_proxy.h", + "send_statistics_proxy.cc", + "send_statistics_proxy.h", + "transport_adapter.cc", + "transport_adapter.h", + "video_receive_stream.cc", + "video_receive_stream.h", + "video_send_stream.cc", + "video_send_stream.h", + ] + + if (is_clang) { + # Suppress warnings from Chrome's Clang plugins. + # See http://code.google.com/p/webrtc/issues/detail?id=163 for details. + configs -= [ "//build/config/clang:find_bad_constructs" ] + } + + deps = [ "../video_engine:video_engine_core" ] } diff --git a/webrtc/video_engine/BUILD.gn b/webrtc/video_engine/BUILD.gn index c93833aa6c..1b767769dc 100644 --- a/webrtc/video_engine/BUILD.gn +++ b/webrtc/video_engine/BUILD.gn @@ -13,5 +13,102 @@ source_set("video_engine") { } source_set("video_engine_core") { - # TODO(pbos): Implement. + sources = [ + "include/vie_base.h", + "include/vie_capture.h", + "include/vie_codec.h", + "include/vie_errors.h", + "include/vie_external_codec.h", + "include/vie_image_process.h", + "include/vie_network.h", + "include/vie_render.h", + "include/vie_rtp_rtcp.h", + "call_stats.cc", + "call_stats.h", + "encoder_state_feedback.cc", + "encoder_state_feedback.h", + "overuse_frame_detector.cc", + "overuse_frame_detector.h", + "stream_synchronization.cc", + "stream_synchronization.h", + "vie_base_impl.cc", + "vie_base_impl.h", + "vie_capture_impl.cc", + "vie_capture_impl.h", + "vie_capturer.cc", + "vie_capturer.h", + "vie_channel.cc", + "vie_channel_group.cc", + "vie_channel_group.h", + "vie_channel.h", + "vie_channel_manager.cc", + "vie_channel_manager.h", + "vie_codec_impl.cc", + "vie_codec_impl.h", + "vie_defines.h", + "vie_encoder.cc", + "vie_encoder.h", + "vie_external_codec_impl.cc", + "vie_external_codec_impl.h", + "vie_file_image.cc", + "vie_file_image.h", + "vie_frame_provider_base.cc", + "vie_frame_provider_base.h", + "vie_image_process_impl.cc", + "vie_image_process_impl.h", + "vie_impl.cc", + "vie_impl.h", + "vie_input_manager.cc", + "vie_input_manager.h", + "vie_manager_base.cc", + "vie_manager_base.h", + "vie_network_impl.cc", + "vie_network_impl.h", + "vie_receiver.cc", + "vie_receiver.h", + "vie_ref_count.cc", + "vie_ref_count.h", + "vie_remb.cc", + "vie_remb.h", + "vie_renderer.cc", + "vie_renderer.h", + "vie_render_impl.cc", + "vie_render_impl.h", + "vie_render_manager.cc", + "vie_render_manager.h", + "vie_rtp_rtcp_impl.cc", + "vie_rtp_rtcp_impl.h", + "vie_sender.cc", + "vie_sender.h", + "vie_shared_data.cc", + "vie_shared_data.h", + "vie_sync_module.cc", + "vie_sync_module.h", + ] + + if (is_clang) { + # Suppress warnings from Chrome's Clang plugins. + # See http://code.google.com/p/webrtc/issues/detail?id=163 for details. + configs -= [ "//build/config/clang:find_bad_constructs" ] + } + + if (is_win) { + cflags = [ + # TODO(jschuh): Bug 1348: fix size_t to int truncations. + "/wd4267", # size_t to int truncation. + ] + } + + deps = [ + "../common_video", + "../modules/bitrate_controller", + "../modules/rtp_rtcp", + "../modules/utility", + "../modules/video_capture", + "../modules/video_coding", + "../modules/video_processing", + "../modules/video_render", + "../voice_engine", + "../system_wrappers", + ] }