# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. # # Use of this source code is governed by a BSD-style license # that can be found in the LICENSE file in the root of the source # tree. An additional intellectual property rights grant can be found # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. import("../../webrtc.gni") # Note this target is missing an implementation for the video capture. # Targets must link with either 'video_capture' or # 'video_capture_internal_impl' depending on whether they want to # use the internal capturer. rtc_static_library("video_capture_module") { visibility = [ "*" ] sources = [ "device_info_impl.cc", "device_info_impl.h", "video_capture.h", "video_capture_config.h", "video_capture_defines.h", "video_capture_factory.cc", "video_capture_factory.h", "video_capture_impl.cc", "video_capture_impl.h", ] deps = [ "..:module_api", "../..:webrtc_common", "../../api:libjingle_peerconnection_api", "../../api/video:video_frame", "../../api/video:video_frame_i420", "../../common_video", "../../media:rtc_media_base", "../../rtc_base:rtc_base_approved", "../../rtc_base:stringutils", "../../rtc_base/synchronization:rw_lock_wrapper", "../../system_wrappers", "//third_party/libyuv", ] if (!build_with_chromium && is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] } } rtc_static_library("video_capture") { visibility = [ "*" ] sources = [ "external/device_info_external.cc", "external/video_capture_external.cc", ] deps = [ ":video_capture_module", "../../rtc_base:rtc_base_approved", "../../system_wrappers", ] if (!build_with_chromium && is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] } } if (!build_with_chromium) { config("video_capture_internal_impl_config") { if (is_ios || is_mac) { libs = [ "AVFoundation.framework", "CoreMedia.framework", "CoreVideo.framework", ] } } if (is_ios || is_mac) { rtc_source_set("video_capture_internal_impl_objc") { visibility = [ ":video_capture_internal_impl" ] deps = [ ":video_capture_module", "../../rtc_base:rtc_base_approved", "../../system_wrappers", ] sources = [ "objc/device_info.h", "objc/device_info.mm", "objc/device_info_objc.h", "objc/device_info_objc.mm", "objc/rtc_video_capture_objc.h", "objc/rtc_video_capture_objc.mm", "objc/video_capture.h", "objc/video_capture.mm", ] all_dependent_configs = [ ":video_capture_internal_impl_config" ] if (!build_with_chromium && is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] } } } rtc_source_set("video_capture_internal_impl") { deps = [ ":video_capture_module", "../../rtc_base:checks", "../../rtc_base:rtc_base_approved", "../../system_wrappers", ] if (is_linux) { sources = [ "linux/device_info_linux.cc", "linux/device_info_linux.h", "linux/video_capture_linux.cc", "linux/video_capture_linux.h", ] deps += [ "../..:webrtc_common", "../../media:rtc_media_base", ] } 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" ] if (build_with_mozilla) { sources += [ "windows/BaseFilter.cpp", "windows/BaseInputPin.cpp", "windows/BasePin.cpp", "windows/MediaType.cpp", ] } else { deps += [ "//third_party/winsdk_samples" ] } } if (is_ios || is_mac) { deps += [ ":video_capture_internal_impl_objc" ] } all_dependent_configs = [ ":video_capture_internal_impl_config" ] if (!build_with_chromium && is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] } if (build_with_mozilla && is_android) { include_dirs = [ "/config/external/nspr", "/nsprpub/lib/ds", "/nsprpub/pr/include", ] sources = [ "android/device_info_android.cc", "android/video_capture_android.cc", ] } } if (!is_android && rtc_include_tests) { rtc_test("video_capture_tests") { sources = [ "test/video_capture_unittest.cc", ] ldflags = [] if (is_linux || is_mac) { ldflags += [ "-lpthread", "-lm", ] } if (is_linux) { ldflags += [ "-lrt", "-lXext", "-lX11", ] } deps = [ ":video_capture_internal_impl", ":video_capture_module", "../../api/video:video_frame", "../../api/video:video_frame_i420", "../../common_video:common_video", "../../rtc_base:rtc_base_approved", "../../system_wrappers:system_wrappers", "../../system_wrappers:system_wrappers_default", "../../test:video_test_common", "../utility", "//testing/gtest", ] deps += [ "../../test:test_main" ] if (!build_with_chromium && is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] } } } }