xref: /aosp_15_r20/external/webrtc/modules/desktop_capture/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
2*d9f75844SAndroid Build Coastguard Worker#
3*d9f75844SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license
4*d9f75844SAndroid Build Coastguard Worker# that can be found in the LICENSE file in the root of the source
5*d9f75844SAndroid Build Coastguard Worker# tree. An additional intellectual property rights grant can be found
6*d9f75844SAndroid Build Coastguard Worker# in the file PATENTS.  All contributing project authors may
7*d9f75844SAndroid Build Coastguard Worker# be found in the AUTHORS file in the root of the source tree.
8*d9f75844SAndroid Build Coastguard Worker
9*d9f75844SAndroid Build Coastguard Workerimport("//build/config/linux/gtk/gtk.gni")
10*d9f75844SAndroid Build Coastguard Workerimport("//build/config/ui.gni")
11*d9f75844SAndroid Build Coastguard Workerimport("../../webrtc.gni")
12*d9f75844SAndroid Build Coastguard Worker
13*d9f75844SAndroid Build Coastguard Workeruse_desktop_capture_differ_sse2 = current_cpu == "x86" || current_cpu == "x64"
14*d9f75844SAndroid Build Coastguard Worker
15*d9f75844SAndroid Build Coastguard Workerconfig("x11_config") {
16*d9f75844SAndroid Build Coastguard Worker  if (rtc_use_x11_extensions) {
17*d9f75844SAndroid Build Coastguard Worker    defines = [ "WEBRTC_USE_X11" ]
18*d9f75844SAndroid Build Coastguard Worker  }
19*d9f75844SAndroid Build Coastguard Worker}
20*d9f75844SAndroid Build Coastguard Worker
21*d9f75844SAndroid Build Coastguard Workerrtc_library("primitives") {
22*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
23*d9f75844SAndroid Build Coastguard Worker  sources = [
24*d9f75844SAndroid Build Coastguard Worker    "desktop_capture_types.h",
25*d9f75844SAndroid Build Coastguard Worker    "desktop_frame.cc",
26*d9f75844SAndroid Build Coastguard Worker    "desktop_frame.h",
27*d9f75844SAndroid Build Coastguard Worker    "desktop_geometry.cc",
28*d9f75844SAndroid Build Coastguard Worker    "desktop_geometry.h",
29*d9f75844SAndroid Build Coastguard Worker    "desktop_region.cc",
30*d9f75844SAndroid Build Coastguard Worker    "desktop_region.h",
31*d9f75844SAndroid Build Coastguard Worker    "shared_desktop_frame.cc",
32*d9f75844SAndroid Build Coastguard Worker    "shared_desktop_frame.h",
33*d9f75844SAndroid Build Coastguard Worker    "shared_memory.cc",
34*d9f75844SAndroid Build Coastguard Worker    "shared_memory.h",
35*d9f75844SAndroid Build Coastguard Worker  ]
36*d9f75844SAndroid Build Coastguard Worker
37*d9f75844SAndroid Build Coastguard Worker  deps = [
38*d9f75844SAndroid Build Coastguard Worker    "../../api:scoped_refptr",
39*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:checks",
40*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:refcount",
41*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/system:rtc_export",
42*d9f75844SAndroid Build Coastguard Worker    "//third_party/libyuv",
43*d9f75844SAndroid Build Coastguard Worker  ]
44*d9f75844SAndroid Build Coastguard Worker
45*d9f75844SAndroid Build Coastguard Worker  if (!build_with_mozilla) {
46*d9f75844SAndroid Build Coastguard Worker    deps += [ "../../rtc_base" ]  # TODO(kjellander): Cleanup in
47*d9f75844SAndroid Build Coastguard Worker                                  # bugs.webrtc.org/3806.
48*d9f75844SAndroid Build Coastguard Worker  }
49*d9f75844SAndroid Build Coastguard Worker}
50*d9f75844SAndroid Build Coastguard Worker
51*d9f75844SAndroid Build Coastguard Workerif (rtc_include_tests) {
52*d9f75844SAndroid Build Coastguard Worker  rtc_library("desktop_capture_modules_tests") {
53*d9f75844SAndroid Build Coastguard Worker    testonly = true
54*d9f75844SAndroid Build Coastguard Worker
55*d9f75844SAndroid Build Coastguard Worker    defines = []
56*d9f75844SAndroid Build Coastguard Worker    sources = []
57*d9f75844SAndroid Build Coastguard Worker    deps = [
58*d9f75844SAndroid Build Coastguard Worker      ":desktop_capture",
59*d9f75844SAndroid Build Coastguard Worker      "../../api:function_view",
60*d9f75844SAndroid Build Coastguard Worker      "../../api:scoped_refptr",
61*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
62*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
63*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:platform_thread",
64*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:random",
65*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:timeutils",
66*d9f75844SAndroid Build Coastguard Worker    ]
67*d9f75844SAndroid Build Coastguard Worker    if (rtc_desktop_capture_supported) {
68*d9f75844SAndroid Build Coastguard Worker      deps += [
69*d9f75844SAndroid Build Coastguard Worker        ":desktop_capture_mock",
70*d9f75844SAndroid Build Coastguard Worker        ":primitives",
71*d9f75844SAndroid Build Coastguard Worker        ":screen_drawer",
72*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base",
73*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base/third_party/base64",
74*d9f75844SAndroid Build Coastguard Worker        "../../system_wrappers",
75*d9f75844SAndroid Build Coastguard Worker        "../../test:test_support",
76*d9f75844SAndroid Build Coastguard Worker        "../../test:video_test_support",
77*d9f75844SAndroid Build Coastguard Worker      ]
78*d9f75844SAndroid Build Coastguard Worker      sources += [
79*d9f75844SAndroid Build Coastguard Worker        "screen_capturer_integration_test.cc",
80*d9f75844SAndroid Build Coastguard Worker        "screen_drawer_unittest.cc",
81*d9f75844SAndroid Build Coastguard Worker        "window_finder_unittest.cc",
82*d9f75844SAndroid Build Coastguard Worker      ]
83*d9f75844SAndroid Build Coastguard Worker
84*d9f75844SAndroid Build Coastguard Worker      if ((is_linux || is_chromeos) && rtc_use_pipewire) {
85*d9f75844SAndroid Build Coastguard Worker        configs += [ "../portal:gio" ]
86*d9f75844SAndroid Build Coastguard Worker      }
87*d9f75844SAndroid Build Coastguard Worker
88*d9f75844SAndroid Build Coastguard Worker      public_configs = [ ":x11_config" ]
89*d9f75844SAndroid Build Coastguard Worker
90*d9f75844SAndroid Build Coastguard Worker      if (is_win) {
91*d9f75844SAndroid Build Coastguard Worker        deps += [ "../../rtc_base/win:windows_version" ]
92*d9f75844SAndroid Build Coastguard Worker      }
93*d9f75844SAndroid Build Coastguard Worker    }
94*d9f75844SAndroid Build Coastguard Worker  }
95*d9f75844SAndroid Build Coastguard Worker
96*d9f75844SAndroid Build Coastguard Worker  if ((is_linux || is_chromeos) && rtc_use_pipewire) {
97*d9f75844SAndroid Build Coastguard Worker    rtc_test("shared_screencast_stream_test") {
98*d9f75844SAndroid Build Coastguard Worker      testonly = true
99*d9f75844SAndroid Build Coastguard Worker
100*d9f75844SAndroid Build Coastguard Worker      sources = [
101*d9f75844SAndroid Build Coastguard Worker        "linux/wayland/shared_screencast_stream_unittest.cc",
102*d9f75844SAndroid Build Coastguard Worker        "linux/wayland/test/test_screencast_stream_provider.cc",
103*d9f75844SAndroid Build Coastguard Worker        "linux/wayland/test/test_screencast_stream_provider.h",
104*d9f75844SAndroid Build Coastguard Worker      ]
105*d9f75844SAndroid Build Coastguard Worker
106*d9f75844SAndroid Build Coastguard Worker      configs += [ "../portal:pipewire_all" ]
107*d9f75844SAndroid Build Coastguard Worker
108*d9f75844SAndroid Build Coastguard Worker      deps = [
109*d9f75844SAndroid Build Coastguard Worker        ":desktop_capture",
110*d9f75844SAndroid Build Coastguard Worker        ":desktop_capture_mock",
111*d9f75844SAndroid Build Coastguard Worker        ":primitives",
112*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base:checks",
113*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base:logging",
114*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base:random",
115*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base:timeutils",
116*d9f75844SAndroid Build Coastguard Worker        "../portal",
117*d9f75844SAndroid Build Coastguard Worker
118*d9f75844SAndroid Build Coastguard Worker        # TODO(bugs.webrtc.org/9987): Remove this dep on rtc_base:rtc_base once
119*d9f75844SAndroid Build Coastguard Worker        # rtc_base:threading is fully defined.
120*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base:rtc_base",
121*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base:task_queue_for_test",
122*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base:threading",
123*d9f75844SAndroid Build Coastguard Worker        "../../system_wrappers",
124*d9f75844SAndroid Build Coastguard Worker        "../../test:test_main",
125*d9f75844SAndroid Build Coastguard Worker        "../../test:test_support",
126*d9f75844SAndroid Build Coastguard Worker        "//api/units:time_delta",
127*d9f75844SAndroid Build Coastguard Worker        "//rtc_base:rtc_event",
128*d9f75844SAndroid Build Coastguard Worker      ]
129*d9f75844SAndroid Build Coastguard Worker
130*d9f75844SAndroid Build Coastguard Worker      data = [ "../../third_party/pipewire" ]
131*d9f75844SAndroid Build Coastguard Worker      public_configs = [ "../portal:pipewire_config" ]
132*d9f75844SAndroid Build Coastguard Worker    }
133*d9f75844SAndroid Build Coastguard Worker  }
134*d9f75844SAndroid Build Coastguard Worker
135*d9f75844SAndroid Build Coastguard Worker  rtc_library("desktop_capture_unittests") {
136*d9f75844SAndroid Build Coastguard Worker    testonly = true
137*d9f75844SAndroid Build Coastguard Worker
138*d9f75844SAndroid Build Coastguard Worker    defines = []
139*d9f75844SAndroid Build Coastguard Worker    sources = [
140*d9f75844SAndroid Build Coastguard Worker      "blank_detector_desktop_capturer_wrapper_unittest.cc",
141*d9f75844SAndroid Build Coastguard Worker      "cropped_desktop_frame_unittest.cc",
142*d9f75844SAndroid Build Coastguard Worker      "desktop_and_cursor_composer_unittest.cc",
143*d9f75844SAndroid Build Coastguard Worker      "desktop_capturer_differ_wrapper_unittest.cc",
144*d9f75844SAndroid Build Coastguard Worker      "desktop_frame_rotation_unittest.cc",
145*d9f75844SAndroid Build Coastguard Worker      "desktop_frame_unittest.cc",
146*d9f75844SAndroid Build Coastguard Worker      "desktop_geometry_unittest.cc",
147*d9f75844SAndroid Build Coastguard Worker      "desktop_region_unittest.cc",
148*d9f75844SAndroid Build Coastguard Worker      "differ_block_unittest.cc",
149*d9f75844SAndroid Build Coastguard Worker      "fallback_desktop_capturer_wrapper_unittest.cc",
150*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor_monitor_unittest.cc",
151*d9f75844SAndroid Build Coastguard Worker      "rgba_color_unittest.cc",
152*d9f75844SAndroid Build Coastguard Worker      "test_utils.cc",
153*d9f75844SAndroid Build Coastguard Worker      "test_utils.h",
154*d9f75844SAndroid Build Coastguard Worker      "test_utils_unittest.cc",
155*d9f75844SAndroid Build Coastguard Worker    ]
156*d9f75844SAndroid Build Coastguard Worker
157*d9f75844SAndroid Build Coastguard Worker    if ((is_linux || is_chromeos) && rtc_use_pipewire) {
158*d9f75844SAndroid Build Coastguard Worker      configs += [ "../portal:gio" ]
159*d9f75844SAndroid Build Coastguard Worker    }
160*d9f75844SAndroid Build Coastguard Worker
161*d9f75844SAndroid Build Coastguard Worker    deps = [
162*d9f75844SAndroid Build Coastguard Worker      ":desktop_capture",
163*d9f75844SAndroid Build Coastguard Worker      ":desktop_capture_mock",
164*d9f75844SAndroid Build Coastguard Worker      ":primitives",
165*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
166*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
167*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:macromagic",
168*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:random",
169*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:timeutils",
170*d9f75844SAndroid Build Coastguard Worker
171*d9f75844SAndroid Build Coastguard Worker      # TODO(bugs.webrtc.org/9987): Remove this dep on rtc_base:rtc_base once
172*d9f75844SAndroid Build Coastguard Worker      # rtc_base:threading is fully defined.
173*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:rtc_base",
174*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:task_queue_for_test",
175*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:threading",
176*d9f75844SAndroid Build Coastguard Worker      "../../system_wrappers",
177*d9f75844SAndroid Build Coastguard Worker      "../../test:test_support",
178*d9f75844SAndroid Build Coastguard Worker    ]
179*d9f75844SAndroid Build Coastguard Worker
180*d9f75844SAndroid Build Coastguard Worker    if (is_win) {
181*d9f75844SAndroid Build Coastguard Worker      sources += [
182*d9f75844SAndroid Build Coastguard Worker        "win/cursor_unittest.cc",
183*d9f75844SAndroid Build Coastguard Worker        "win/cursor_unittest_resources.h",
184*d9f75844SAndroid Build Coastguard Worker        "win/cursor_unittest_resources.rc",
185*d9f75844SAndroid Build Coastguard Worker        "win/screen_capture_utils_unittest.cc",
186*d9f75844SAndroid Build Coastguard Worker        "win/screen_capturer_win_directx_unittest.cc",
187*d9f75844SAndroid Build Coastguard Worker        "win/test_support/test_window.cc",
188*d9f75844SAndroid Build Coastguard Worker        "win/test_support/test_window.h",
189*d9f75844SAndroid Build Coastguard Worker        "win/window_capture_utils_unittest.cc",
190*d9f75844SAndroid Build Coastguard Worker      ]
191*d9f75844SAndroid Build Coastguard Worker      deps += [
192*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base/win:scoped_com_initializer",
193*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base/win:windows_version",
194*d9f75844SAndroid Build Coastguard Worker      ]
195*d9f75844SAndroid Build Coastguard Worker    }
196*d9f75844SAndroid Build Coastguard Worker
197*d9f75844SAndroid Build Coastguard Worker    if (rtc_desktop_capture_supported) {
198*d9f75844SAndroid Build Coastguard Worker      sources += [
199*d9f75844SAndroid Build Coastguard Worker        "screen_capturer_helper_unittest.cc",
200*d9f75844SAndroid Build Coastguard Worker        "screen_capturer_unittest.cc",
201*d9f75844SAndroid Build Coastguard Worker        "window_capturer_unittest.cc",
202*d9f75844SAndroid Build Coastguard Worker      ]
203*d9f75844SAndroid Build Coastguard Worker      if (is_mac) {
204*d9f75844SAndroid Build Coastguard Worker        sources += [ "screen_capturer_mac_unittest.cc" ]
205*d9f75844SAndroid Build Coastguard Worker      }
206*d9f75844SAndroid Build Coastguard Worker      if (rtc_enable_win_wgc) {
207*d9f75844SAndroid Build Coastguard Worker        sources += [
208*d9f75844SAndroid Build Coastguard Worker          "win/wgc_capture_source_unittest.cc",
209*d9f75844SAndroid Build Coastguard Worker          "win/wgc_capturer_win_unittest.cc",
210*d9f75844SAndroid Build Coastguard Worker        ]
211*d9f75844SAndroid Build Coastguard Worker      }
212*d9f75844SAndroid Build Coastguard Worker      deps += [
213*d9f75844SAndroid Build Coastguard Worker        ":desktop_capture_mock",
214*d9f75844SAndroid Build Coastguard Worker        "../../system_wrappers:metrics",
215*d9f75844SAndroid Build Coastguard Worker      ]
216*d9f75844SAndroid Build Coastguard Worker      public_configs = [ ":x11_config" ]
217*d9f75844SAndroid Build Coastguard Worker    }
218*d9f75844SAndroid Build Coastguard Worker  }
219*d9f75844SAndroid Build Coastguard Worker
220*d9f75844SAndroid Build Coastguard Worker  rtc_library("screen_drawer") {
221*d9f75844SAndroid Build Coastguard Worker    testonly = true
222*d9f75844SAndroid Build Coastguard Worker
223*d9f75844SAndroid Build Coastguard Worker    sources = [
224*d9f75844SAndroid Build Coastguard Worker      "screen_drawer.cc",
225*d9f75844SAndroid Build Coastguard Worker      "screen_drawer.h",
226*d9f75844SAndroid Build Coastguard Worker    ]
227*d9f75844SAndroid Build Coastguard Worker
228*d9f75844SAndroid Build Coastguard Worker    if (is_linux || is_chromeos) {
229*d9f75844SAndroid Build Coastguard Worker      sources += [ "screen_drawer_linux.cc" ]
230*d9f75844SAndroid Build Coastguard Worker      libs = [ "X11" ]
231*d9f75844SAndroid Build Coastguard Worker    }
232*d9f75844SAndroid Build Coastguard Worker
233*d9f75844SAndroid Build Coastguard Worker    if (is_mac) {
234*d9f75844SAndroid Build Coastguard Worker      sources += [ "screen_drawer_mac.cc" ]
235*d9f75844SAndroid Build Coastguard Worker    }
236*d9f75844SAndroid Build Coastguard Worker
237*d9f75844SAndroid Build Coastguard Worker    if (is_win) {
238*d9f75844SAndroid Build Coastguard Worker      sources += [ "screen_drawer_win.cc" ]
239*d9f75844SAndroid Build Coastguard Worker    }
240*d9f75844SAndroid Build Coastguard Worker
241*d9f75844SAndroid Build Coastguard Worker    deps = [
242*d9f75844SAndroid Build Coastguard Worker      ":desktop_capture",
243*d9f75844SAndroid Build Coastguard Worker      ":primitives",
244*d9f75844SAndroid Build Coastguard Worker      "../../api:scoped_refptr",
245*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
246*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
247*d9f75844SAndroid Build Coastguard Worker      "../../system_wrappers",
248*d9f75844SAndroid Build Coastguard Worker    ]
249*d9f75844SAndroid Build Coastguard Worker    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
250*d9f75844SAndroid Build Coastguard Worker
251*d9f75844SAndroid Build Coastguard Worker    if (is_posix || is_fuchsia) {
252*d9f75844SAndroid Build Coastguard Worker      sources += [
253*d9f75844SAndroid Build Coastguard Worker        "screen_drawer_lock_posix.cc",
254*d9f75844SAndroid Build Coastguard Worker        "screen_drawer_lock_posix.h",
255*d9f75844SAndroid Build Coastguard Worker      ]
256*d9f75844SAndroid Build Coastguard Worker    }
257*d9f75844SAndroid Build Coastguard Worker  }
258*d9f75844SAndroid Build Coastguard Worker
259*d9f75844SAndroid Build Coastguard Worker  rtc_library("desktop_capture_mock") {
260*d9f75844SAndroid Build Coastguard Worker    testonly = true
261*d9f75844SAndroid Build Coastguard Worker
262*d9f75844SAndroid Build Coastguard Worker    sources = [
263*d9f75844SAndroid Build Coastguard Worker      "mock_desktop_capturer_callback.cc",
264*d9f75844SAndroid Build Coastguard Worker      "mock_desktop_capturer_callback.h",
265*d9f75844SAndroid Build Coastguard Worker    ]
266*d9f75844SAndroid Build Coastguard Worker
267*d9f75844SAndroid Build Coastguard Worker    if ((is_linux || is_chromeos) && rtc_use_pipewire) {
268*d9f75844SAndroid Build Coastguard Worker      configs += [ "../portal:gio" ]
269*d9f75844SAndroid Build Coastguard Worker    }
270*d9f75844SAndroid Build Coastguard Worker
271*d9f75844SAndroid Build Coastguard Worker    deps = [
272*d9f75844SAndroid Build Coastguard Worker      ":desktop_capture",
273*d9f75844SAndroid Build Coastguard Worker      ":primitives",
274*d9f75844SAndroid Build Coastguard Worker      "../../test:test_support",
275*d9f75844SAndroid Build Coastguard Worker    ]
276*d9f75844SAndroid Build Coastguard Worker  }
277*d9f75844SAndroid Build Coastguard Worker}
278*d9f75844SAndroid Build Coastguard Worker
279*d9f75844SAndroid Build Coastguard Worker# TODO(bugs.webrtc.org/14187): remove when all users are gone
280*d9f75844SAndroid Build Coastguard Workerif ((is_linux || is_chromeos) && rtc_use_pipewire) {
281*d9f75844SAndroid Build Coastguard Worker  config("pipewire_config") {
282*d9f75844SAndroid Build Coastguard Worker    configs = [ "../portal:pipewire_config" ]
283*d9f75844SAndroid Build Coastguard Worker  }
284*d9f75844SAndroid Build Coastguard Worker}
285*d9f75844SAndroid Build Coastguard Worker
286*d9f75844SAndroid Build Coastguard Workerrtc_library("desktop_capture") {
287*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
288*d9f75844SAndroid Build Coastguard Worker  defines = []
289*d9f75844SAndroid Build Coastguard Worker  deps = []
290*d9f75844SAndroid Build Coastguard Worker  public_configs = [ ":x11_config" ]
291*d9f75844SAndroid Build Coastguard Worker  sources = [
292*d9f75844SAndroid Build Coastguard Worker    "blank_detector_desktop_capturer_wrapper.cc",
293*d9f75844SAndroid Build Coastguard Worker    "blank_detector_desktop_capturer_wrapper.h",
294*d9f75844SAndroid Build Coastguard Worker    "cropped_desktop_frame.cc",
295*d9f75844SAndroid Build Coastguard Worker    "cropped_desktop_frame.h",
296*d9f75844SAndroid Build Coastguard Worker    "cropping_window_capturer.cc",
297*d9f75844SAndroid Build Coastguard Worker    "cropping_window_capturer.h",
298*d9f75844SAndroid Build Coastguard Worker    "delegated_source_list_controller.h",
299*d9f75844SAndroid Build Coastguard Worker    "desktop_and_cursor_composer.cc",
300*d9f75844SAndroid Build Coastguard Worker    "desktop_and_cursor_composer.h",
301*d9f75844SAndroid Build Coastguard Worker    "desktop_capture_metrics_helper.cc",
302*d9f75844SAndroid Build Coastguard Worker    "desktop_capture_metrics_helper.h",
303*d9f75844SAndroid Build Coastguard Worker    "desktop_capture_options.cc",
304*d9f75844SAndroid Build Coastguard Worker    "desktop_capture_options.h",
305*d9f75844SAndroid Build Coastguard Worker    "desktop_capturer.cc",
306*d9f75844SAndroid Build Coastguard Worker    "desktop_capturer.h",
307*d9f75844SAndroid Build Coastguard Worker    "desktop_capturer_differ_wrapper.cc",
308*d9f75844SAndroid Build Coastguard Worker    "desktop_capturer_differ_wrapper.h",
309*d9f75844SAndroid Build Coastguard Worker    "desktop_capturer_wrapper.cc",
310*d9f75844SAndroid Build Coastguard Worker    "desktop_capturer_wrapper.h",
311*d9f75844SAndroid Build Coastguard Worker    "desktop_frame_generator.cc",
312*d9f75844SAndroid Build Coastguard Worker    "desktop_frame_generator.h",
313*d9f75844SAndroid Build Coastguard Worker    "desktop_frame_rotation.cc",
314*d9f75844SAndroid Build Coastguard Worker    "desktop_frame_rotation.h",
315*d9f75844SAndroid Build Coastguard Worker    "differ_block.cc",
316*d9f75844SAndroid Build Coastguard Worker    "differ_block.h",
317*d9f75844SAndroid Build Coastguard Worker    "fake_desktop_capturer.cc",
318*d9f75844SAndroid Build Coastguard Worker    "fake_desktop_capturer.h",
319*d9f75844SAndroid Build Coastguard Worker    "fallback_desktop_capturer_wrapper.cc",
320*d9f75844SAndroid Build Coastguard Worker    "fallback_desktop_capturer_wrapper.h",
321*d9f75844SAndroid Build Coastguard Worker    "full_screen_application_handler.cc",
322*d9f75844SAndroid Build Coastguard Worker    "full_screen_application_handler.h",
323*d9f75844SAndroid Build Coastguard Worker    "full_screen_window_detector.cc",
324*d9f75844SAndroid Build Coastguard Worker    "full_screen_window_detector.h",
325*d9f75844SAndroid Build Coastguard Worker    "mouse_cursor.cc",
326*d9f75844SAndroid Build Coastguard Worker    "mouse_cursor.h",
327*d9f75844SAndroid Build Coastguard Worker    "mouse_cursor_monitor.h",
328*d9f75844SAndroid Build Coastguard Worker    "resolution_tracker.cc",
329*d9f75844SAndroid Build Coastguard Worker    "resolution_tracker.h",
330*d9f75844SAndroid Build Coastguard Worker    "rgba_color.cc",
331*d9f75844SAndroid Build Coastguard Worker    "rgba_color.h",
332*d9f75844SAndroid Build Coastguard Worker    "screen_capture_frame_queue.h",
333*d9f75844SAndroid Build Coastguard Worker    "screen_capturer_helper.cc",
334*d9f75844SAndroid Build Coastguard Worker    "screen_capturer_helper.h",
335*d9f75844SAndroid Build Coastguard Worker    "window_finder.cc",
336*d9f75844SAndroid Build Coastguard Worker    "window_finder.h",
337*d9f75844SAndroid Build Coastguard Worker  ]
338*d9f75844SAndroid Build Coastguard Worker  if (is_linux && !is_castos && rtc_use_pipewire) {
339*d9f75844SAndroid Build Coastguard Worker    sources += [ "desktop_capture_metadata.h" ]
340*d9f75844SAndroid Build Coastguard Worker  }
341*d9f75844SAndroid Build Coastguard Worker  if (is_mac) {
342*d9f75844SAndroid Build Coastguard Worker    sources += [
343*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_configuration.h",
344*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_configuration_monitor.cc",
345*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_configuration_monitor.h",
346*d9f75844SAndroid Build Coastguard Worker      "mac/full_screen_mac_application_handler.cc",
347*d9f75844SAndroid Build Coastguard Worker      "mac/full_screen_mac_application_handler.h",
348*d9f75844SAndroid Build Coastguard Worker      "mac/window_list_utils.cc",
349*d9f75844SAndroid Build Coastguard Worker      "mac/window_list_utils.h",
350*d9f75844SAndroid Build Coastguard Worker    ]
351*d9f75844SAndroid Build Coastguard Worker    deps += [ ":desktop_capture_objc" ]
352*d9f75844SAndroid Build Coastguard Worker  }
353*d9f75844SAndroid Build Coastguard Worker
354*d9f75844SAndroid Build Coastguard Worker  if (build_with_mozilla) {
355*d9f75844SAndroid Build Coastguard Worker    sources += [
356*d9f75844SAndroid Build Coastguard Worker      "desktop_device_info.cc",
357*d9f75844SAndroid Build Coastguard Worker      "desktop_device_info.h",
358*d9f75844SAndroid Build Coastguard Worker    ]
359*d9f75844SAndroid Build Coastguard Worker    if (is_win) {
360*d9f75844SAndroid Build Coastguard Worker      sources += [
361*d9f75844SAndroid Build Coastguard Worker        "app_capturer_win.cc",
362*d9f75844SAndroid Build Coastguard Worker        "win/desktop_device_info_win.cc",
363*d9f75844SAndroid Build Coastguard Worker        "win/win_shared.cc",
364*d9f75844SAndroid Build Coastguard Worker      ]
365*d9f75844SAndroid Build Coastguard Worker    }
366*d9f75844SAndroid Build Coastguard Worker  }
367*d9f75844SAndroid Build Coastguard Worker  if (rtc_use_x11_extensions || rtc_use_pipewire) {
368*d9f75844SAndroid Build Coastguard Worker    sources += [
369*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor_monitor_linux.cc",
370*d9f75844SAndroid Build Coastguard Worker      "screen_capturer_linux.cc",
371*d9f75844SAndroid Build Coastguard Worker      "window_capturer_linux.cc",
372*d9f75844SAndroid Build Coastguard Worker    ]
373*d9f75844SAndroid Build Coastguard Worker
374*d9f75844SAndroid Build Coastguard Worker    if (build_with_mozilla && (is_linux || is_chromeos)) {
375*d9f75844SAndroid Build Coastguard Worker      sources += [
376*d9f75844SAndroid Build Coastguard Worker        "app_capturer_linux.cc",
377*d9f75844SAndroid Build Coastguard Worker        "linux/x11/app_capturer_x11.cc",
378*d9f75844SAndroid Build Coastguard Worker        "linux/x11/desktop_device_info_linux.cc",
379*d9f75844SAndroid Build Coastguard Worker        "linux/x11/desktop_device_info_linux.h",
380*d9f75844SAndroid Build Coastguard Worker        "linux/x11/shared_x_util.cc",
381*d9f75844SAndroid Build Coastguard Worker        "linux/x11/shared_x_util.h",
382*d9f75844SAndroid Build Coastguard Worker      ]
383*d9f75844SAndroid Build Coastguard Worker    }
384*d9f75844SAndroid Build Coastguard Worker  }
385*d9f75844SAndroid Build Coastguard Worker
386*d9f75844SAndroid Build Coastguard Worker  if (rtc_use_x11_extensions) {
387*d9f75844SAndroid Build Coastguard Worker    sources += [
388*d9f75844SAndroid Build Coastguard Worker      "linux/x11/mouse_cursor_monitor_x11.cc",
389*d9f75844SAndroid Build Coastguard Worker      "linux/x11/mouse_cursor_monitor_x11.h",
390*d9f75844SAndroid Build Coastguard Worker      "linux/x11/screen_capturer_x11.cc",
391*d9f75844SAndroid Build Coastguard Worker      "linux/x11/screen_capturer_x11.h",
392*d9f75844SAndroid Build Coastguard Worker      "linux/x11/shared_x_display.cc",
393*d9f75844SAndroid Build Coastguard Worker      "linux/x11/shared_x_display.h",
394*d9f75844SAndroid Build Coastguard Worker      "linux/x11/window_capturer_x11.cc",
395*d9f75844SAndroid Build Coastguard Worker      "linux/x11/window_capturer_x11.h",
396*d9f75844SAndroid Build Coastguard Worker      "linux/x11/window_finder_x11.cc",
397*d9f75844SAndroid Build Coastguard Worker      "linux/x11/window_finder_x11.h",
398*d9f75844SAndroid Build Coastguard Worker      "linux/x11/window_list_utils.cc",
399*d9f75844SAndroid Build Coastguard Worker      "linux/x11/window_list_utils.h",
400*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_atom_cache.cc",
401*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_atom_cache.h",
402*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_error_trap.cc",
403*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_error_trap.h",
404*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_server_pixel_buffer.cc",
405*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_server_pixel_buffer.h",
406*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_window_property.cc",
407*d9f75844SAndroid Build Coastguard Worker      "linux/x11/x_window_property.h",
408*d9f75844SAndroid Build Coastguard Worker    ]
409*d9f75844SAndroid Build Coastguard Worker    libs = [
410*d9f75844SAndroid Build Coastguard Worker      "X11",
411*d9f75844SAndroid Build Coastguard Worker      "Xcomposite",
412*d9f75844SAndroid Build Coastguard Worker      "Xdamage",
413*d9f75844SAndroid Build Coastguard Worker      "Xext",
414*d9f75844SAndroid Build Coastguard Worker      "Xfixes",
415*d9f75844SAndroid Build Coastguard Worker      "Xrender",
416*d9f75844SAndroid Build Coastguard Worker      "Xrandr",
417*d9f75844SAndroid Build Coastguard Worker      "Xtst",
418*d9f75844SAndroid Build Coastguard Worker    ]
419*d9f75844SAndroid Build Coastguard Worker  }
420*d9f75844SAndroid Build Coastguard Worker
421*d9f75844SAndroid Build Coastguard Worker  if (!is_win && !is_mac && !rtc_use_x11_extensions && !rtc_use_pipewire &&
422*d9f75844SAndroid Build Coastguard Worker      !is_fuchsia) {
423*d9f75844SAndroid Build Coastguard Worker    sources += [
424*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor_monitor_null.cc",
425*d9f75844SAndroid Build Coastguard Worker      "screen_capturer_null.cc",
426*d9f75844SAndroid Build Coastguard Worker      "window_capturer_null.cc",
427*d9f75844SAndroid Build Coastguard Worker    ]
428*d9f75844SAndroid Build Coastguard Worker  }
429*d9f75844SAndroid Build Coastguard Worker
430*d9f75844SAndroid Build Coastguard Worker  deps += [
431*d9f75844SAndroid Build Coastguard Worker    ":primitives",
432*d9f75844SAndroid Build Coastguard Worker    "../../api:function_view",
433*d9f75844SAndroid Build Coastguard Worker    "../../api:make_ref_counted",
434*d9f75844SAndroid Build Coastguard Worker    "../../api:refcountedbase",
435*d9f75844SAndroid Build Coastguard Worker    "../../api:scoped_refptr",
436*d9f75844SAndroid Build Coastguard Worker    "../../api:sequence_checker",
437*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:checks",
438*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:event_tracer",
439*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:logging",
440*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:macromagic",
441*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:random",
442*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:stringutils",
443*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:timeutils",
444*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/synchronization:mutex",
445*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/system:arch",
446*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/system:no_unique_address",
447*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/system:rtc_export",
448*d9f75844SAndroid Build Coastguard Worker    "../../system_wrappers",
449*d9f75844SAndroid Build Coastguard Worker    "../../system_wrappers:metrics",
450*d9f75844SAndroid Build Coastguard Worker  ]
451*d9f75844SAndroid Build Coastguard Worker
452*d9f75844SAndroid Build Coastguard Worker  if (is_fuchsia) {
453*d9f75844SAndroid Build Coastguard Worker    sources += [
454*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor_monitor_null.cc",
455*d9f75844SAndroid Build Coastguard Worker      "screen_capturer_fuchsia.cc",
456*d9f75844SAndroid Build Coastguard Worker      "screen_capturer_fuchsia.h",
457*d9f75844SAndroid Build Coastguard Worker      "window_capturer_null.cc",
458*d9f75844SAndroid Build Coastguard Worker    ]
459*d9f75844SAndroid Build Coastguard Worker    deps += [
460*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:divide_round",
461*d9f75844SAndroid Build Coastguard Worker      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sysmem",
462*d9f75844SAndroid Build Coastguard Worker      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.composition",
463*d9f75844SAndroid Build Coastguard Worker      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.scenic",
464*d9f75844SAndroid Build Coastguard Worker      "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp",
465*d9f75844SAndroid Build Coastguard Worker      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
466*d9f75844SAndroid Build Coastguard Worker    ]
467*d9f75844SAndroid Build Coastguard Worker  }
468*d9f75844SAndroid Build Coastguard Worker
469*d9f75844SAndroid Build Coastguard Worker  if (is_win) {
470*d9f75844SAndroid Build Coastguard Worker    sources += [
471*d9f75844SAndroid Build Coastguard Worker      "cropping_window_capturer_win.cc",
472*d9f75844SAndroid Build Coastguard Worker      "desktop_frame_win.cc",
473*d9f75844SAndroid Build Coastguard Worker      "desktop_frame_win.h",
474*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor_monitor_win.cc",
475*d9f75844SAndroid Build Coastguard Worker      "screen_capturer_win.cc",
476*d9f75844SAndroid Build Coastguard Worker      "win/cursor.cc",
477*d9f75844SAndroid Build Coastguard Worker      "win/cursor.h",
478*d9f75844SAndroid Build Coastguard Worker      "win/d3d_device.cc",
479*d9f75844SAndroid Build Coastguard Worker      "win/d3d_device.h",
480*d9f75844SAndroid Build Coastguard Worker      "win/desktop.cc",
481*d9f75844SAndroid Build Coastguard Worker      "win/desktop.h",
482*d9f75844SAndroid Build Coastguard Worker      "win/desktop_capture_utils.cc",
483*d9f75844SAndroid Build Coastguard Worker      "win/desktop_capture_utils.h",
484*d9f75844SAndroid Build Coastguard Worker      "win/display_configuration_monitor.cc",
485*d9f75844SAndroid Build Coastguard Worker      "win/display_configuration_monitor.h",
486*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_adapter_duplicator.cc",
487*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_adapter_duplicator.h",
488*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_context.cc",
489*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_context.h",
490*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_duplicator_controller.cc",
491*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_duplicator_controller.h",
492*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_frame.cc",
493*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_frame.h",
494*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_output_duplicator.cc",
495*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_output_duplicator.h",
496*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_texture.cc",
497*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_texture.h",
498*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_texture_mapping.cc",
499*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_texture_mapping.h",
500*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_texture_staging.cc",
501*d9f75844SAndroid Build Coastguard Worker      "win/dxgi_texture_staging.h",
502*d9f75844SAndroid Build Coastguard Worker      "win/full_screen_win_application_handler.cc",
503*d9f75844SAndroid Build Coastguard Worker      "win/full_screen_win_application_handler.h",
504*d9f75844SAndroid Build Coastguard Worker      "win/scoped_gdi_object.h",
505*d9f75844SAndroid Build Coastguard Worker      "win/scoped_thread_desktop.cc",
506*d9f75844SAndroid Build Coastguard Worker      "win/scoped_thread_desktop.h",
507*d9f75844SAndroid Build Coastguard Worker      "win/screen_capture_utils.cc",
508*d9f75844SAndroid Build Coastguard Worker      "win/screen_capture_utils.h",
509*d9f75844SAndroid Build Coastguard Worker      "win/screen_capturer_win_directx.cc",
510*d9f75844SAndroid Build Coastguard Worker      "win/screen_capturer_win_directx.h",
511*d9f75844SAndroid Build Coastguard Worker      "win/screen_capturer_win_gdi.cc",
512*d9f75844SAndroid Build Coastguard Worker      "win/screen_capturer_win_gdi.h",
513*d9f75844SAndroid Build Coastguard Worker      "win/screen_capturer_win_magnifier.cc",
514*d9f75844SAndroid Build Coastguard Worker      "win/screen_capturer_win_magnifier.h",
515*d9f75844SAndroid Build Coastguard Worker      "win/selected_window_context.cc",
516*d9f75844SAndroid Build Coastguard Worker      "win/selected_window_context.h",
517*d9f75844SAndroid Build Coastguard Worker      "win/window_capture_utils.cc",
518*d9f75844SAndroid Build Coastguard Worker      "win/window_capture_utils.h",
519*d9f75844SAndroid Build Coastguard Worker      "win/window_capturer_win_gdi.cc",
520*d9f75844SAndroid Build Coastguard Worker      "win/window_capturer_win_gdi.h",
521*d9f75844SAndroid Build Coastguard Worker      "window_capturer_win.cc",
522*d9f75844SAndroid Build Coastguard Worker      "window_finder_win.cc",
523*d9f75844SAndroid Build Coastguard Worker      "window_finder_win.h",
524*d9f75844SAndroid Build Coastguard Worker    ]
525*d9f75844SAndroid Build Coastguard Worker    libs = [
526*d9f75844SAndroid Build Coastguard Worker      "d3d11.lib",
527*d9f75844SAndroid Build Coastguard Worker      "dxgi.lib",
528*d9f75844SAndroid Build Coastguard Worker    ]
529*d9f75844SAndroid Build Coastguard Worker    deps += [
530*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:win32",
531*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/win:create_direct3d_device",
532*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/win:get_activation_factory",
533*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/win:windows_version",
534*d9f75844SAndroid Build Coastguard Worker    ]
535*d9f75844SAndroid Build Coastguard Worker  }
536*d9f75844SAndroid Build Coastguard Worker
537*d9f75844SAndroid Build Coastguard Worker  absl_deps = [
538*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/memory",
539*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/strings",
540*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/types:optional",
541*d9f75844SAndroid Build Coastguard Worker  ]
542*d9f75844SAndroid Build Coastguard Worker
543*d9f75844SAndroid Build Coastguard Worker  if (rtc_use_x11_extensions) {
544*d9f75844SAndroid Build Coastguard Worker    deps += [ "../../rtc_base:sanitizer" ]
545*d9f75844SAndroid Build Coastguard Worker  }
546*d9f75844SAndroid Build Coastguard Worker
547*d9f75844SAndroid Build Coastguard Worker  if (!build_with_mozilla) {
548*d9f75844SAndroid Build Coastguard Worker    deps += [ "//third_party/libyuv" ]
549*d9f75844SAndroid Build Coastguard Worker  }
550*d9f75844SAndroid Build Coastguard Worker
551*d9f75844SAndroid Build Coastguard Worker  if (use_desktop_capture_differ_sse2) {
552*d9f75844SAndroid Build Coastguard Worker    deps += [ ":desktop_capture_differ_sse2" ]
553*d9f75844SAndroid Build Coastguard Worker  }
554*d9f75844SAndroid Build Coastguard Worker
555*d9f75844SAndroid Build Coastguard Worker  if (rtc_use_pipewire) {
556*d9f75844SAndroid Build Coastguard Worker    sources += [
557*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/base_capturer_pipewire.cc",
558*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/base_capturer_pipewire.h",
559*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/egl_dmabuf.cc",
560*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/egl_dmabuf.h",
561*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/mouse_cursor_monitor_pipewire.cc",
562*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/mouse_cursor_monitor_pipewire.h",
563*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/portal_request_response.h",
564*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/restore_token_manager.cc",
565*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/restore_token_manager.h",
566*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/scoped_glib.h",
567*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/screen_capture_portal_interface.cc",
568*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/screen_capture_portal_interface.h",
569*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/screencast_portal.cc",
570*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/screencast_portal.h",
571*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/screencast_stream_utils.cc",
572*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/screencast_stream_utils.h",
573*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/shared_screencast_stream.cc",
574*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/shared_screencast_stream.h",
575*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/xdg_desktop_portal_utils.h",
576*d9f75844SAndroid Build Coastguard Worker      "linux/wayland/xdg_session_details.h",
577*d9f75844SAndroid Build Coastguard Worker    ]
578*d9f75844SAndroid Build Coastguard Worker
579*d9f75844SAndroid Build Coastguard Worker    configs += [ "../portal:pipewire_all" ]
580*d9f75844SAndroid Build Coastguard Worker
581*d9f75844SAndroid Build Coastguard Worker    public_configs += [ "../portal:pipewire_config" ]
582*d9f75844SAndroid Build Coastguard Worker
583*d9f75844SAndroid Build Coastguard Worker    deps += [
584*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:sanitizer",
585*d9f75844SAndroid Build Coastguard Worker      "../portal",
586*d9f75844SAndroid Build Coastguard Worker    ]
587*d9f75844SAndroid Build Coastguard Worker  }
588*d9f75844SAndroid Build Coastguard Worker
589*d9f75844SAndroid Build Coastguard Worker  if (rtc_enable_win_wgc) {
590*d9f75844SAndroid Build Coastguard Worker    sources += [
591*d9f75844SAndroid Build Coastguard Worker      "win/wgc_capture_session.cc",
592*d9f75844SAndroid Build Coastguard Worker      "win/wgc_capture_session.h",
593*d9f75844SAndroid Build Coastguard Worker      "win/wgc_capture_source.cc",
594*d9f75844SAndroid Build Coastguard Worker      "win/wgc_capture_source.h",
595*d9f75844SAndroid Build Coastguard Worker      "win/wgc_capturer_win.cc",
596*d9f75844SAndroid Build Coastguard Worker      "win/wgc_capturer_win.h",
597*d9f75844SAndroid Build Coastguard Worker      "win/wgc_desktop_frame.cc",
598*d9f75844SAndroid Build Coastguard Worker      "win/wgc_desktop_frame.h",
599*d9f75844SAndroid Build Coastguard Worker    ]
600*d9f75844SAndroid Build Coastguard Worker    libs += [ "dwmapi.lib" ]
601*d9f75844SAndroid Build Coastguard Worker    deps += [
602*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:rtc_event",
603*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/win:hstring",
604*d9f75844SAndroid Build Coastguard Worker    ]
605*d9f75844SAndroid Build Coastguard Worker  }
606*d9f75844SAndroid Build Coastguard Worker}
607*d9f75844SAndroid Build Coastguard Worker
608*d9f75844SAndroid Build Coastguard Workerif (is_mac) {
609*d9f75844SAndroid Build Coastguard Worker  rtc_library("desktop_capture_objc") {
610*d9f75844SAndroid Build Coastguard Worker    # This target, needs to be separated from ":desktop_capture" because
611*d9f75844SAndroid Build Coastguard Worker    # that is the C++ part of the target while this one is the Obj-C++ part.
612*d9f75844SAndroid Build Coastguard Worker    # Aside from this, both represent a "desktop_capture" target.
613*d9f75844SAndroid Build Coastguard Worker    # This target separation based on programming languages introduces a
614*d9f75844SAndroid Build Coastguard Worker    # dependency cycle between ":desktop_capture" and
615*d9f75844SAndroid Build Coastguard Worker    # ":desktop_capture_objc".
616*d9f75844SAndroid Build Coastguard Worker    # To break this, ":desktop_capture_objc" shares some .h files with
617*d9f75844SAndroid Build Coastguard Worker    # ":desktop_capture" but when external targets need one of these
618*d9f75844SAndroid Build Coastguard Worker    # headers, they should depend on ":desktop_capture" and consider
619*d9f75844SAndroid Build Coastguard Worker    # this target as private.
620*d9f75844SAndroid Build Coastguard Worker    visibility = [ ":desktop_capture" ]
621*d9f75844SAndroid Build Coastguard Worker    sources = [
622*d9f75844SAndroid Build Coastguard Worker      "delegated_source_list_controller.h",
623*d9f75844SAndroid Build Coastguard Worker      "desktop_capture_options.h",
624*d9f75844SAndroid Build Coastguard Worker      "desktop_capturer.h",
625*d9f75844SAndroid Build Coastguard Worker      "full_screen_application_handler.h",
626*d9f75844SAndroid Build Coastguard Worker      "full_screen_window_detector.h",
627*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_configuration.h",
628*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_configuration.mm",
629*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_configuration_monitor.h",
630*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_frame_cgimage.h",
631*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_frame_cgimage.mm",
632*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_frame_iosurface.h",
633*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_frame_iosurface.mm",
634*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_frame_provider.h",
635*d9f75844SAndroid Build Coastguard Worker      "mac/desktop_frame_provider.mm",
636*d9f75844SAndroid Build Coastguard Worker      "mac/screen_capturer_mac.h",
637*d9f75844SAndroid Build Coastguard Worker      "mac/screen_capturer_mac.mm",
638*d9f75844SAndroid Build Coastguard Worker      "mac/window_list_utils.h",
639*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor.h",
640*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor_monitor.h",
641*d9f75844SAndroid Build Coastguard Worker      "mouse_cursor_monitor_mac.mm",
642*d9f75844SAndroid Build Coastguard Worker      "screen_capture_frame_queue.h",
643*d9f75844SAndroid Build Coastguard Worker      "screen_capturer_darwin.mm",
644*d9f75844SAndroid Build Coastguard Worker      "screen_capturer_helper.h",
645*d9f75844SAndroid Build Coastguard Worker      "window_capturer_mac.mm",
646*d9f75844SAndroid Build Coastguard Worker      "window_finder.h",
647*d9f75844SAndroid Build Coastguard Worker      "window_finder_mac.h",
648*d9f75844SAndroid Build Coastguard Worker      "window_finder_mac.mm",
649*d9f75844SAndroid Build Coastguard Worker    ]
650*d9f75844SAndroid Build Coastguard Worker    deps = [
651*d9f75844SAndroid Build Coastguard Worker      ":primitives",
652*d9f75844SAndroid Build Coastguard Worker      "../../api:function_view",
653*d9f75844SAndroid Build Coastguard Worker      "../../api:refcountedbase",
654*d9f75844SAndroid Build Coastguard Worker      "../../api:scoped_refptr",
655*d9f75844SAndroid Build Coastguard Worker      "../../api:sequence_checker",
656*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base",
657*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
658*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:event_tracer",
659*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
660*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:macromagic",
661*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:timeutils",
662*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/synchronization:mutex",
663*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/system:rtc_export",
664*d9f75844SAndroid Build Coastguard Worker      "../../sdk:helpers_objc",
665*d9f75844SAndroid Build Coastguard Worker    ]
666*d9f75844SAndroid Build Coastguard Worker    frameworks = [
667*d9f75844SAndroid Build Coastguard Worker      "AppKit.framework",
668*d9f75844SAndroid Build Coastguard Worker      "IOKit.framework",
669*d9f75844SAndroid Build Coastguard Worker      "IOSurface.framework",
670*d9f75844SAndroid Build Coastguard Worker    ]
671*d9f75844SAndroid Build Coastguard Worker  }
672*d9f75844SAndroid Build Coastguard Worker}
673*d9f75844SAndroid Build Coastguard Worker
674*d9f75844SAndroid Build Coastguard Workerif (use_desktop_capture_differ_sse2) {
675*d9f75844SAndroid Build Coastguard Worker  # Have to be compiled as a separate target because it needs to be compiled
676*d9f75844SAndroid Build Coastguard Worker  # with SSE2 enabled.
677*d9f75844SAndroid Build Coastguard Worker  rtc_library("desktop_capture_differ_sse2") {
678*d9f75844SAndroid Build Coastguard Worker    visibility = [ ":*" ]
679*d9f75844SAndroid Build Coastguard Worker    sources = [
680*d9f75844SAndroid Build Coastguard Worker      "differ_vector_sse2.cc",
681*d9f75844SAndroid Build Coastguard Worker      "differ_vector_sse2.h",
682*d9f75844SAndroid Build Coastguard Worker    ]
683*d9f75844SAndroid Build Coastguard Worker
684*d9f75844SAndroid Build Coastguard Worker    if (is_posix || is_fuchsia) {
685*d9f75844SAndroid Build Coastguard Worker      cflags = [ "-msse2" ]
686*d9f75844SAndroid Build Coastguard Worker    }
687*d9f75844SAndroid Build Coastguard Worker  }
688*d9f75844SAndroid Build Coastguard Worker}
689