BUILD.gn 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. # Copyright 2016 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//build/config/chromeos/ui_mode.gni")
  5. import("//build/config/features.gni")
  6. import("//build/config/ui.gni")
  7. import("//media/media_options.gni")
  8. import("//testing/test.gni")
  9. group("capture") {
  10. public_deps = [
  11. ":capture_lib",
  12. "//media/capture/mojom:image_capture",
  13. "//media/capture/mojom:image_capture_types",
  14. "//media/capture/mojom:video_capture",
  15. "//services/service_manager/public/cpp",
  16. ]
  17. }
  18. component("capture_switches") {
  19. defines = [ "CAPTURE_IMPLEMENTATION" ]
  20. sources = [
  21. "capture_export.h",
  22. "capture_switches.cc",
  23. "capture_switches.h",
  24. ]
  25. deps = [ "//base" ]
  26. }
  27. # Things needed by //media/capture/mojom/video_capture_types.mojom.
  28. component("capture_base") {
  29. defines = [ "CAPTURE_IMPLEMENTATION" ]
  30. sources = [
  31. "capture_export.h",
  32. "video/video_capture_device_descriptor.cc",
  33. "video/video_capture_device_descriptor.h",
  34. "video/video_capture_device_info.cc",
  35. "video/video_capture_device_info.h",
  36. "video/video_capture_feedback.cc",
  37. "video/video_capture_feedback.h",
  38. "video_capture_types.cc",
  39. "video_capture_types.h",
  40. ]
  41. deps = [
  42. "//base",
  43. "//base:i18n",
  44. "//media:shared_memory_support",
  45. "//media/base:video_facing",
  46. "//ui/gfx",
  47. ]
  48. }
  49. # Target which allows breakout of Android BUILD.gn files.
  50. source_set("capture_device_specific") {
  51. visibility = [
  52. ":capture_lib",
  53. "//media/capture/content/android",
  54. "//media/capture/video/android",
  55. ]
  56. defines = [ "CAPTURE_IMPLEMENTATION" ]
  57. sources = [
  58. "content/animated_content_sampler.cc",
  59. "content/animated_content_sampler.h",
  60. "content/capture_resolution_chooser.cc",
  61. "content/capture_resolution_chooser.h",
  62. "content/screen_enumerator.h",
  63. "content/smooth_event_sampler.cc",
  64. "content/smooth_event_sampler.h",
  65. "content/video_capture_oracle.cc",
  66. "content/video_capture_oracle.h",
  67. "video/blob_utils.cc",
  68. "video/blob_utils.h",
  69. "video/fake_video_capture_device.cc",
  70. "video/fake_video_capture_device.h",
  71. "video/fake_video_capture_device_factory.cc",
  72. "video/fake_video_capture_device_factory.h",
  73. "video/file_video_capture_device.cc",
  74. "video/file_video_capture_device.h",
  75. "video/file_video_capture_device_factory.cc",
  76. "video/file_video_capture_device_factory.h",
  77. "video/gpu_memory_buffer_utils.cc",
  78. "video/gpu_memory_buffer_utils.h",
  79. "video/video_capture_buffer_handle.cc",
  80. "video/video_capture_buffer_handle.h",
  81. "video/video_capture_device.cc",
  82. "video/video_capture_device.h",
  83. "video/video_capture_device_factory.cc",
  84. "video/video_capture_device_factory.h",
  85. ]
  86. public_deps = [ ":capture_base" ]
  87. deps = [
  88. "//base",
  89. "//base:i18n",
  90. "//build:chromeos_buildflags",
  91. "//gpu/command_buffer/client",
  92. "//gpu/ipc/common:common",
  93. "//media",
  94. "//media/capture/mojom:image_capture",
  95. "//media/capture/mojom:image_capture_types",
  96. "//media/capture/mojom:video_capture",
  97. "//media/mojo/mojom",
  98. "//media/parsers",
  99. "//skia",
  100. "//third_party/libyuv",
  101. "//ui/gfx",
  102. ]
  103. if (is_win) {
  104. deps += [ "//media/base/win:media_foundation_util" ]
  105. }
  106. }
  107. component("capture_lib") {
  108. defines = [ "CAPTURE_IMPLEMENTATION" ]
  109. sources = [
  110. "video/create_video_capture_device_factory.cc",
  111. "video/create_video_capture_device_factory.h",
  112. "video/scoped_buffer_pool_reservation.h",
  113. "video/shared_memory_buffer_tracker.cc",
  114. "video/shared_memory_buffer_tracker.h",
  115. "video/video_capture_buffer_pool.h",
  116. "video/video_capture_buffer_pool_impl.cc",
  117. "video/video_capture_buffer_pool_impl.h",
  118. "video/video_capture_buffer_pool_util.cc",
  119. "video/video_capture_buffer_pool_util.h",
  120. "video/video_capture_buffer_tracker.cc",
  121. "video/video_capture_buffer_tracker.h",
  122. "video/video_capture_buffer_tracker_factory.h",
  123. "video/video_capture_buffer_tracker_factory_impl.cc",
  124. "video/video_capture_buffer_tracker_factory_impl.h",
  125. "video/video_capture_device_client.cc",
  126. "video/video_capture_device_client.h",
  127. "video/video_capture_metrics.cc",
  128. "video/video_capture_metrics.h",
  129. "video/video_capture_system.h",
  130. "video/video_capture_system_impl.cc",
  131. "video/video_capture_system_impl.h",
  132. "video/video_frame_receiver.cc",
  133. "video/video_frame_receiver.h",
  134. "video/video_frame_receiver_on_task_runner.cc",
  135. "video/video_frame_receiver_on_task_runner.h",
  136. ]
  137. public_deps = [
  138. ":capture_base",
  139. ":capture_device_specific",
  140. ":capture_switches",
  141. ]
  142. deps = [
  143. "//base",
  144. "//base:i18n",
  145. "//build:chromeos_buildflags",
  146. "//media",
  147. "//media/capture/mojom:image_capture",
  148. "//media/capture/mojom:image_capture_types",
  149. "//media/capture/mojom:video_capture",
  150. "//media/mojo/mojom",
  151. "//services/service_manager/public/cpp",
  152. "//third_party/libyuv",
  153. "//ui/display",
  154. "//ui/gfx",
  155. ]
  156. if (is_android) {
  157. public_deps += [
  158. "content/android",
  159. "video/android",
  160. ]
  161. deps += [
  162. "content/android:screen_capture_jni_headers",
  163. "video/android:capture_jni_headers",
  164. ]
  165. }
  166. if (is_mac) {
  167. sources += [
  168. "video/mac/gpu_memory_buffer_tracker_mac.cc",
  169. "video/mac/gpu_memory_buffer_tracker_mac.h",
  170. "video/mac/pixel_buffer_pool_mac.cc",
  171. "video/mac/pixel_buffer_pool_mac.h",
  172. "video/mac/pixel_buffer_transferer_mac.cc",
  173. "video/mac/pixel_buffer_transferer_mac.h",
  174. "video/mac/sample_buffer_transformer_mac.cc",
  175. "video/mac/sample_buffer_transformer_mac.h",
  176. "video/mac/video_capture_device_avfoundation_mac.h",
  177. "video/mac/video_capture_device_avfoundation_mac.mm",
  178. "video/mac/video_capture_device_avfoundation_utils_mac.h",
  179. "video/mac/video_capture_device_avfoundation_utils_mac.mm",
  180. "video/mac/video_capture_device_decklink_mac.h",
  181. "video/mac/video_capture_device_decklink_mac.mm",
  182. "video/mac/video_capture_device_factory_mac.h",
  183. "video/mac/video_capture_device_factory_mac.mm",
  184. "video/mac/video_capture_device_mac.h",
  185. "video/mac/video_capture_device_mac.mm",
  186. "video/mac/video_capture_metrics_mac.h",
  187. "video/mac/video_capture_metrics_mac.mm",
  188. ]
  189. deps += [
  190. "//components/crash/core/common:crash_key",
  191. "//services/video_capture/public/uma",
  192. "//third_party/decklink",
  193. ]
  194. frameworks = [
  195. "AVFoundation.framework",
  196. "CoreFoundation.framework",
  197. "CoreGraphics.framework",
  198. "CoreMedia.framework",
  199. "CoreVideo.framework",
  200. "Foundation.framework",
  201. "IOSurface.framework",
  202. "VideoToolbox.framework",
  203. ]
  204. }
  205. if (is_win) {
  206. sources += [
  207. "video/win/capability_list_win.cc",
  208. "video/win/capability_list_win.h",
  209. "video/win/filter_base_win.cc",
  210. "video/win/filter_base_win.h",
  211. "video/win/gpu_memory_buffer_tracker.cc",
  212. "video/win/gpu_memory_buffer_tracker.h",
  213. "video/win/metrics.cc",
  214. "video/win/metrics.h",
  215. "video/win/pin_base_win.cc",
  216. "video/win/pin_base_win.h",
  217. "video/win/sink_filter_observer_win.h",
  218. "video/win/sink_filter_win.cc",
  219. "video/win/sink_filter_win.h",
  220. "video/win/sink_input_pin_win.cc",
  221. "video/win/sink_input_pin_win.h",
  222. "video/win/video_capture_buffer_tracker_factory_win.cc",
  223. "video/win/video_capture_buffer_tracker_factory_win.h",
  224. "video/win/video_capture_device_factory_win.cc",
  225. "video/win/video_capture_device_factory_win.h",
  226. "video/win/video_capture_device_mf_win.cc",
  227. "video/win/video_capture_device_mf_win.h",
  228. "video/win/video_capture_device_utils_win.cc",
  229. "video/win/video_capture_device_utils_win.h",
  230. "video/win/video_capture_device_win.cc",
  231. "video/win/video_capture_device_win.h",
  232. ]
  233. deps += [ "//media/base/win:media_foundation_util" ]
  234. libs = [
  235. "mf.lib",
  236. "mfplat.lib",
  237. "mfreadwrite.lib",
  238. "mfuuid.lib",
  239. ]
  240. ldflags = [
  241. "/DELAYLOAD:mf.dll",
  242. "/DELAYLOAD:mfplat.dll",
  243. "/DELAYLOAD:mfreadwrite.dll",
  244. ]
  245. }
  246. if (is_linux || is_chromeos) {
  247. sources += [
  248. "video/linux/scoped_v4l2_device_fd.cc",
  249. "video/linux/scoped_v4l2_device_fd.h",
  250. "video/linux/v4l2_capture_delegate.cc",
  251. "video/linux/v4l2_capture_delegate.h",
  252. "video/linux/v4l2_capture_device.h",
  253. "video/linux/v4l2_capture_device_impl.cc",
  254. "video/linux/v4l2_capture_device_impl.h",
  255. "video/linux/video_capture_device_factory_linux.cc",
  256. "video/linux/video_capture_device_factory_linux.h",
  257. "video/linux/video_capture_device_linux.cc",
  258. "video/linux/video_capture_device_linux.h",
  259. ]
  260. }
  261. if (is_chromeos_ash) {
  262. sources += [
  263. "video/chromeos/camera_3a_controller.cc",
  264. "video/chromeos/camera_3a_controller.h",
  265. "video/chromeos/camera_app_device_bridge_impl.cc",
  266. "video/chromeos/camera_app_device_bridge_impl.h",
  267. "video/chromeos/camera_app_device_impl.cc",
  268. "video/chromeos/camera_app_device_impl.h",
  269. "video/chromeos/camera_app_device_provider_impl.cc",
  270. "video/chromeos/camera_app_device_provider_impl.h",
  271. "video/chromeos/camera_buffer_factory.cc",
  272. "video/chromeos/camera_buffer_factory.h",
  273. "video/chromeos/camera_device_context.cc",
  274. "video/chromeos/camera_device_context.h",
  275. "video/chromeos/camera_device_delegate.cc",
  276. "video/chromeos/camera_device_delegate.h",
  277. "video/chromeos/camera_hal_delegate.cc",
  278. "video/chromeos/camera_hal_delegate.h",
  279. "video/chromeos/camera_hal_dispatcher_impl.cc",
  280. "video/chromeos/camera_hal_dispatcher_impl.h",
  281. "video/chromeos/camera_metadata_utils.cc",
  282. "video/chromeos/camera_metadata_utils.h",
  283. "video/chromeos/camera_trace_utils.cc",
  284. "video/chromeos/camera_trace_utils.h",
  285. "video/chromeos/capture_metadata_dispatcher.h",
  286. "video/chromeos/display_rotation_observer.cc",
  287. "video/chromeos/display_rotation_observer.h",
  288. "video/chromeos/gpu_memory_buffer_tracker.cc",
  289. "video/chromeos/gpu_memory_buffer_tracker.h",
  290. "video/chromeos/pixel_format_utils.cc",
  291. "video/chromeos/pixel_format_utils.h",
  292. "video/chromeos/request_builder.cc",
  293. "video/chromeos/request_builder.h",
  294. "video/chromeos/request_manager.cc",
  295. "video/chromeos/request_manager.h",
  296. "video/chromeos/scoped_video_capture_jpeg_decoder.cc",
  297. "video/chromeos/scoped_video_capture_jpeg_decoder.h",
  298. "video/chromeos/stream_buffer_manager.cc",
  299. "video/chromeos/stream_buffer_manager.h",
  300. "video/chromeos/token_manager.cc",
  301. "video/chromeos/token_manager.h",
  302. "video/chromeos/vendor_tag_ops_delegate.cc",
  303. "video/chromeos/vendor_tag_ops_delegate.h",
  304. "video/chromeos/video_capture_device_chromeos_delegate.cc",
  305. "video/chromeos/video_capture_device_chromeos_delegate.h",
  306. "video/chromeos/video_capture_device_chromeos_halv3.cc",
  307. "video/chromeos/video_capture_device_chromeos_halv3.h",
  308. "video/chromeos/video_capture_device_factory_chromeos.cc",
  309. "video/chromeos/video_capture_device_factory_chromeos.h",
  310. "video/chromeos/video_capture_features_chromeos.cc",
  311. "video/chromeos/video_capture_features_chromeos.h",
  312. "video/chromeos/video_capture_jpeg_decoder.h",
  313. "video/chromeos/video_capture_jpeg_decoder_impl.cc",
  314. "video/chromeos/video_capture_jpeg_decoder_impl.h",
  315. ]
  316. public_deps += [
  317. "//ash/webui/camera_app_ui:document_scanning",
  318. "//media/capture/video/chromeos/public",
  319. ]
  320. deps += [
  321. "//ash/constants",
  322. "//build/config/linux/libdrm",
  323. "//chromeos/components/sensors:sensors",
  324. "//chromeos/dbus/power",
  325. "//components/chromeos_camera:mojo_mjpeg_decode_accelerator",
  326. "//components/chromeos_camera/common",
  327. "//components/device_event_log",
  328. "//gpu/ipc/common:common",
  329. "//media/capture/video/chromeos/mojom:cros_camera",
  330. "//third_party/libsync",
  331. ]
  332. }
  333. if (is_fuchsia) {
  334. sources += [
  335. "video/fuchsia/video_capture_device_factory_fuchsia.cc",
  336. "video/fuchsia/video_capture_device_factory_fuchsia.h",
  337. "video/fuchsia/video_capture_device_fuchsia.cc",
  338. "video/fuchsia/video_capture_device_fuchsia.h",
  339. ]
  340. deps += [
  341. "//media/fuchsia/common",
  342. "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.camera3",
  343. "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
  344. "//third_party/libyuv",
  345. ]
  346. }
  347. }
  348. source_set("test_support") {
  349. testonly = true
  350. sources = [
  351. "video/mock_device.cc",
  352. "video/mock_device.h",
  353. "video/mock_device_factory.cc",
  354. "video/mock_device_factory.h",
  355. "video/mock_gpu_memory_buffer_manager.cc",
  356. "video/mock_gpu_memory_buffer_manager.h",
  357. "video/mock_video_capture_device_client.cc",
  358. "video/mock_video_capture_device_client.h",
  359. "video/mock_video_frame_receiver.cc",
  360. "video/mock_video_frame_receiver.h",
  361. ]
  362. deps = [
  363. ":capture_lib",
  364. "//base/test:test_support",
  365. "//build:chromeos_buildflags",
  366. "//gpu/command_buffer/client",
  367. "//gpu/command_buffer/common:common",
  368. "//media:test_support",
  369. "//media/capture/mojom:image_capture",
  370. "//media/capture/mojom:image_capture_types",
  371. "//testing/gmock",
  372. "//ui/gfx:test_support",
  373. ]
  374. if (is_linux || is_chromeos_lacros) {
  375. sources += [
  376. "video/linux/fake_device_provider.cc",
  377. "video/linux/fake_device_provider.h",
  378. "video/linux/fake_v4l2_impl.cc",
  379. "video/linux/fake_v4l2_impl.h",
  380. ]
  381. }
  382. if (is_chromeos_ash) {
  383. sources += [
  384. "video/chromeos/mock_camera_module.cc",
  385. "video/chromeos/mock_camera_module.h",
  386. "video/chromeos/mock_vendor_tag_ops.cc",
  387. "video/chromeos/mock_vendor_tag_ops.h",
  388. "video/chromeos/mock_video_capture_client.cc",
  389. "video/chromeos/mock_video_capture_client.h",
  390. ]
  391. deps += [
  392. "//media/capture/video/chromeos/mojom:cros_camera",
  393. "//media/capture/video/chromeos/public",
  394. ]
  395. }
  396. testonly = true
  397. }
  398. test("capture_unittests") {
  399. use_xvfb = use_xvfb_in_this_config
  400. sources = [
  401. "content/animated_content_sampler_unittest.cc",
  402. "content/capture_resolution_chooser_unittest.cc",
  403. "content/smooth_event_sampler_unittest.cc",
  404. "content/video_capture_oracle_unittest.cc",
  405. "run_all_unittests.cc",
  406. "video/fake_video_capture_device_unittest.cc",
  407. "video/file_video_capture_device_unittest.cc",
  408. "video/video_capture_device_client_unittest.cc",
  409. "video/video_capture_device_unittest.cc",
  410. "video/video_capture_metrics_unittest.cc",
  411. "video_capture_types_unittest.cc",
  412. ]
  413. data = [ "//media/test/data/bear.mjpeg" ]
  414. deps = [
  415. ":capture",
  416. ":test_support",
  417. "//base/test:test_support",
  418. "//build:chromeos_buildflags",
  419. "//gpu/command_buffer/client",
  420. "//media:test_support",
  421. "//media/capture/mojom:image_capture",
  422. "//media/capture/mojom:image_capture_types",
  423. "//mojo/core/embedder",
  424. "//testing/gmock",
  425. "//testing/gtest",
  426. "//third_party/libyuv:libyuv",
  427. "//ui/gfx:test_support",
  428. ]
  429. if (is_linux || is_chromeos_lacros) {
  430. sources += [
  431. "video/linux/v4l2_capture_delegate_unittest.cc",
  432. "video/linux/video_capture_device_factory_linux_unittest.cc",
  433. ]
  434. }
  435. if (is_android) {
  436. deps += [
  437. "//media/capture/video/android",
  438. "//media/capture/video/android:capture_java",
  439. ]
  440. }
  441. if (is_fuchsia) {
  442. deps += [
  443. "//media/fuchsia/camera:test_support",
  444. "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.camera3",
  445. "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sysmem",
  446. "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
  447. ]
  448. sources += [
  449. "video/fuchsia/video_capture_device_factory_fuchsia_test.cc",
  450. "video/fuchsia/video_capture_device_fuchsia_test.cc",
  451. ]
  452. use_cfv1 = false
  453. additional_manifest_fragments =
  454. [ "//media/fuchsia/test_support.shard.test-cml" ]
  455. }
  456. if (is_mac) {
  457. sources += [
  458. "video/mac/pixel_buffer_pool_mac_unittest.mm",
  459. "video/mac/pixel_buffer_transferer_mac_unittest.mm",
  460. "video/mac/sample_buffer_transformer_mac_unittest.mm",
  461. "video/mac/test/fake_av_capture_device_format.h",
  462. "video/mac/test/fake_av_capture_device_format.mm",
  463. "video/mac/test/mock_video_capture_device_avfoundation_frame_receiver_mac.h",
  464. "video/mac/test/mock_video_capture_device_avfoundation_frame_receiver_mac.mm",
  465. "video/mac/test/pixel_buffer_test_utils_mac.cc",
  466. "video/mac/test/pixel_buffer_test_utils_mac.h",
  467. "video/mac/test/video_capture_test_utils_mac.h",
  468. "video/mac/test/video_capture_test_utils_mac.mm",
  469. "video/mac/video_capture_device_avfoundation_mac_unittest.mm",
  470. "video/mac/video_capture_device_factory_mac_unittest.mm",
  471. "video/mac/video_capture_device_mac_unittest.mm",
  472. "video/mac/video_capture_metrics_mac_unittest.mm",
  473. ]
  474. frameworks = [
  475. "AVFoundation.framework",
  476. "CoreMedia.framework",
  477. "CoreVideo.framework",
  478. "IOSurface.framework",
  479. ]
  480. deps += [ "//third_party/ocmock" ]
  481. }
  482. if (is_win) {
  483. sources += [
  484. "video/win/d3d_capture_test_utils.cc",
  485. "video/win/d3d_capture_test_utils.h",
  486. "video/win/gpu_memory_buffer_tracker_unittest.cc",
  487. "video/win/video_capture_device_factory_win_unittest.cc",
  488. "video/win/video_capture_device_mf_win_unittest.cc",
  489. ]
  490. libs = [
  491. "mf.lib",
  492. "mfplat.lib",
  493. "mfreadwrite.lib",
  494. "mfuuid.lib",
  495. "dxguid.lib",
  496. ]
  497. ldflags = [
  498. "/DELAYLOAD:mf.dll",
  499. "/DELAYLOAD:mfplat.dll",
  500. "/DELAYLOAD:mfreadwrite.dll",
  501. ]
  502. deps += [ "//media/base/win:media_foundation_util" ]
  503. }
  504. if (is_chromeos) {
  505. deps += [ "//chromeos/dbus/power" ]
  506. }
  507. # TODO(https://crbug.com/1043007): use is_linux.
  508. if (is_chromeos_ash) {
  509. deps += [ "//media/gpu/test:local_gpu_memory_buffer_manager" ]
  510. }
  511. if (is_chromeos_ash) {
  512. sources += [
  513. "video/chromeos/camera_3a_controller_unittest.cc",
  514. "video/chromeos/camera_device_delegate_unittest.cc",
  515. "video/chromeos/camera_hal_delegate_unittest.cc",
  516. "video/chromeos/camera_hal_dispatcher_impl_unittest.cc",
  517. "video/chromeos/request_manager_unittest.cc",
  518. "video/chromeos/token_manager_unittest.cc",
  519. ]
  520. deps += [
  521. "//build/config/linux/libdrm",
  522. "//media/capture/video/chromeos/mojom:cros_camera",
  523. "//media/capture/video/chromeos/public",
  524. "//mojo/core/embedder",
  525. "//third_party/libsync",
  526. "//third_party/minigbm",
  527. ]
  528. }
  529. }