Mark built-in software video codecs as poisonous.

The goal is to make these injectable, and only VP8 and VP9 specific
targets should depend on them.

Bug: webrtc:7925
Change-Id: Ie9239a54d197fe70c93de0582797211fef6997a2
Reviewed-on: https://webrtc-review.googlesource.com/72082
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23021}
diff --git a/BUILD.gn b/BUILD.gn
index 99e2006..c1ccb5c 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -597,3 +597,6 @@
 #
 group("poison_audio_codecs") {
 }
+
+group("poison_software_video_codecs") {
+}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 94ed84e..3e604f0 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -268,7 +268,10 @@
 
 rtc_source_set("video_stream_decoder_create") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   sources = [
     "video/video_stream_decoder_create.cc",
     "video/video_stream_decoder_create.h",
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 67d6328..fe6b4c0 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -156,7 +156,10 @@
 
 rtc_static_library("rtc_internal_video_codecs") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",
+  ]
   defines = []
   libs = []
   deps = [
@@ -255,7 +258,10 @@
 
 rtc_static_library("rtc_audio_video") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   defines = []
   libs = []
   deps = [
@@ -423,7 +429,10 @@
 
 rtc_source_set("rtc_media") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   deps = [
     ":rtc_audio_video",
     ":rtc_data",
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 555a3b4..a880109 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -38,7 +38,10 @@
 
 rtc_static_library("video_coding") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   deps = []
 
   sources = [
@@ -406,6 +409,7 @@
 # This target includes the internal SW codec.
 rtc_static_library("webrtc_vp8") {
   visibility = [ "*" ]
+  poisonous = [ "software_video_codecs" ]
   sources = [
     "codecs/vp8/include/vp8.h",
     "codecs/vp8/include/vp8_common_types.h",
@@ -474,6 +478,7 @@
 
 rtc_static_library("webrtc_vp9") {
   visibility = [ "*" ]
+  poisonous = [ "software_video_codecs" ]
   if (rtc_libvpx_build_vp9) {
     sources = [
       "codecs/vp9/include/vp9.h",
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 9d3f147..23c5ef4 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -103,7 +103,10 @@
 
 rtc_source_set("rtc_pc") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   deps = [
     ":rtc_pc_base",
     "../media:rtc_audio_video",
@@ -253,7 +256,10 @@
 
 rtc_source_set("libjingle_peerconnection") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   deps = [
     ":create_pc_factory",
     ":peerconnection",
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 00f94a2..ec69c82 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -229,7 +229,10 @@
 
     rtc_static_library("ui_objc") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+      ]
       if (is_ios) {
         sources = [
           "objc/Framework/Classes/UI/RTCCameraPreviewView.m",
@@ -256,7 +259,10 @@
     if (rtc_use_metal_rendering) {
       rtc_static_library("metal_objc") {
         visibility = [ "*" ]
-        allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+        allow_poison = [
+          "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+          "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+        ]
         sources = [
           "objc/Framework/Classes/Metal/RTCMTLI420Renderer.h",
           "objc/Framework/Classes/Metal/RTCMTLI420Renderer.mm",
@@ -318,7 +324,10 @@
 
     rtc_static_library("videocapture_objc") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+      ]
       sources = [
         "objc/Framework/Classes/PeerConnection/RTCCameraVideoCapturer.m",
         "objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h",
@@ -402,7 +411,10 @@
 
     rtc_static_library("vp8") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",
+      ]
       sources = [
         "objc/Framework/Classes/PeerConnection/RTCVideoCodecVP8.mm",
         "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h",
@@ -424,7 +436,10 @@
 
     rtc_static_library("vp9") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",
+      ]
       sources = [
         "objc/Framework/Classes/PeerConnection/RTCVideoCodecVP9.mm",
         "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h",
@@ -453,7 +468,10 @@
     # The applications which only use WebRTC DataChannel can depend on this.
     rtc_static_library("peerconnectionfactory_no_media_objc") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+      ]
       defines = [ "HAVE_NO_MEDIA" ]
 
       sources = [
@@ -508,7 +526,10 @@
 
     rtc_static_library("videorendereradapter_objc") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+      ]
       sources = [
         "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h",
         "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h",
@@ -546,7 +567,10 @@
 
     rtc_static_library("peerconnectionfactory_base_objc") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+      ]
       sources = [
         "objc/Framework/Classes/PeerConnection/RTCAudioSource+Private.h",
         "objc/Framework/Classes/PeerConnection/RTCAudioSource.mm",
@@ -967,7 +991,10 @@
     # The native API is currently experimental and may change without notice.
     rtc_static_library("native_api") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+      ]
       sources = [
         "objc/Framework/Native/api/video_capturer.h",
         "objc/Framework/Native/api/video_capturer.mm",
@@ -1077,7 +1104,10 @@
 
     rtc_static_library("videotoolbox_objc") {
       visibility = [ "*" ]
-      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+      allow_poison = [
+        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+      ]
       sources = [
         "objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm",
         "objc/Framework/Classes/VideoToolbox/RTCVideoEncoderH264.mm",
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 1d9bb86..5717036 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -607,7 +607,10 @@
 
 rtc_static_library("libjingle_peerconnection_jni") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   public_deps = [
     ":audio_jni",
     ":base_jni",
@@ -1174,7 +1177,10 @@
 # objects.
 rtc_static_library("native_api_codecs") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   sources = [
     "native_api/codecs/wrapper.cc",
     "native_api/codecs/wrapper.h",
@@ -1219,7 +1225,10 @@
 # video interfaces from their Java equivalents.
 rtc_static_library("native_api_video") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   sources = [
     "native_api/video/wrapper.cc",
     "native_api/video/wrapper.h",
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 1030439..978d46e 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -109,7 +109,10 @@
 
 rtc_source_set("video_stream_decoder_impl") {
   visibility = [ "*" ]
-  allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
+  allow_poison = [
+    "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
+    "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
+  ]
   sources = [
     "video_stream_decoder_impl.cc",
     "video_stream_decoder_impl.h",
diff --git a/webrtc.gni b/webrtc.gni
index 20a5727..7740f84 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -309,6 +309,9 @@
 all_poison_types = [
   # Encoders and decoders for specific audio codecs such as Opus and iSAC.
   "audio_codecs",
+
+  # Software video codecs (VP8 and VP9 through libvpx).
+  "software_video_codecs",
 ]
 
 template("rtc_test") {