From 357f59655807bfc7081f66a028ec88dc06177b94 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Wed, 7 Nov 2018 05:21:08 -0800 Subject: [PATCH] Split a separate codecs target off of :video_jni MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow clients to include only the software codecs they need rather than being forced to bundle them all. - libjingle_peerconnection_jni keeps its allow_poison for now, until dependent targets bundle their own codecs explicitly. - native_api_codecs and native_api_video lose their allow_poison because dependent targets are already bundling codecs explicitly. - libjingle_peerconnection_metrics_default_jni and native_api_peerconnection lose their allow_poison because they were not actually poisoned. legacy_hwcodecs_jni and default_video_codec_factory_jni exist for clients that want to continue bundling the same codecs they get by default today. Bug: webrtc:7925 Change-Id: Idf853a6bc77f43decd35ad2a0f467937fec8f8b5 Reviewed-on: https://webrtc-review.googlesource.com/c/108221 Reviewed-by: Sami Kalliomäki Commit-Queue: Jonathan Yu Cr-Commit-Position: refs/heads/master@{#25564} --- sdk/android/BUILD.gn | 88 +++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index d5df5ad835..505070a34f 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -112,7 +112,9 @@ if (is_android) { ":audio_jni", ":base_jni", ":builtin_audio_codecs_jni", + ":default_video_codec_factory_jni", ":java_audio_device_module_jni", + ":legacy_hwcodecs_jni", ":media_jni", ":peerconnection_jni", ":video_jni", @@ -122,13 +124,9 @@ if (is_android) { rtc_static_library("libjingle_peerconnection_metrics_default_jni") { visibility = [ "*" ] - - allow_poison = [ "software_video_codecs" ] # TODO(bugs.webrtc.org/7925): Remove. - sources = [ "src/jni/androidmetrics.cc", ] - deps = [ ":base_jni", ":generated_metrics_jni", @@ -583,16 +581,41 @@ if (is_android) { ] } - rtc_static_library("video_jni") { - sources = [] - deps = [ - "../../system_wrappers:field_trial", - ] - - sources += [ + # Corresponds to MediaCodecVideoEncoder/Decoder in Java. + rtc_static_library("legacy_hwcodecs_jni") { + visibility = [ "*" ] + allow_poison = [ "software_video_codecs" ] + sources = [ "src/jni/androidmediacodeccommon.h", "src/jni/androidmediadecoder.cc", "src/jni/androidmediaencoder.cc", + ] + deps = [ + ":base_jni", + ":default_video_codec_factory_jni", + ":generated_video_jni", + ":native_api_jni", + ":video_jni", + ":videoframe_jni", + "../..:webrtc_common", + "../../api/video_codecs:video_codecs_api", + "../../common_video:common_video", + "../../media:rtc_internal_video_codecs", + "../../media:rtc_media_base", + "../../modules/video_coding:video_codec_interface", + "../../modules/video_coding:video_coding_utility", + "../../rtc_base:checks", + "../../rtc_base:rtc_base", + "../../rtc_base:rtc_task_queue_api", + "../../rtc_base:sequenced_task_checker", + "../../rtc_base:weak_ptr", + "../../system_wrappers:field_trial", + "//third_party/libyuv", + ] + } + + rtc_static_library("video_jni") { + sources = [ "src/jni/androidvideotracksource.cc", "src/jni/androidvideotracksource.h", "src/jni/encodedimage.cc", @@ -626,40 +649,25 @@ if (is_android) { "src/jni/yuvhelper.cc", ] - deps += [ + deps = [ ":base_jni", ":generated_video_jni", ":native_api_jni", - - # TODO(bugs.webrtc.org/7925): Remove. :swcodecs_jni isn't a true - # dependency of this target. It should be linked in explicitly where - # needed. - ":swcodecs_jni", ":videoframe_jni", "../..:webrtc_common", "../../api:libjingle_peerconnection_api", "../../api/video:encoded_image", "../../api/video:video_frame", - "../../api/video_codecs:builtin_video_decoder_factory", - "../../api/video_codecs:builtin_video_encoder_factory", "../../api/video_codecs:rtc_software_fallback_wrappers", "../../api/video_codecs:video_codecs_api", "../../common_video:common_video", - "../../media:rtc_audio_video", - "../../media:rtc_h264_profile_id", - "../../media:rtc_internal_video_codecs", "../../media:rtc_media_base", - "../../modules/utility:utility", "../../modules/video_coding:codec_globals_headers", "../../modules/video_coding:video_codec_interface", "../../modules/video_coding:video_coding_utility", "../../rtc_base:checks", "../../rtc_base:rtc_base", - "../../rtc_base:rtc_base_approved", - "../../rtc_base:rtc_task_queue", - "../../rtc_base:sequenced_task_checker", - "../../rtc_base:weak_ptr", - "../../rtc_base/memory:aligned_malloc", + "../../rtc_base:rtc_task_queue_api", "//third_party/libyuv", ] } @@ -760,6 +768,8 @@ if (is_android) { } rtc_static_library("default_video_codec_factory_jni") { + visibility = [ "*" ] + allow_poison = [ "software_video_codecs" ] deps = [ ":swcodecs_jni", ":video_jni", @@ -772,12 +782,10 @@ if (is_android) { sources = [ "src/jni/vp8codec.cc", ] - - # TODO(bugs.webrtc.org/7925): add a depenency on :video_jni once :video_jni - # does not depend on us. deps = [ ":base_jni", ":generated_libvpx_vp8_jni", + ":video_jni", "../../modules/video_coding:webrtc_vp8", ] } @@ -788,12 +796,10 @@ if (is_android) { sources = [ "src/jni/vp9codec.cc", ] - - # TODO(bugs.webrtc.org/7925): add a depenency on :video_jni once :video_jni - # does not depend on us. deps = [ ":base_jni", ":generated_libvpx_vp9_jni", + ":video_jni", "../../modules/video_coding:webrtc_vp9", ] } @@ -889,10 +895,7 @@ if (is_android) { # objects. rtc_static_library("native_api_codecs") { visibility = [ "*" ] - allow_poison = [ - "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. - "software_video_codecs", # TODO(bugs.webrtc.org/7925): Remove. - ] + allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. sources = [ "native_api/codecs/wrapper.cc", "native_api/codecs/wrapper.h", @@ -912,14 +915,10 @@ if (is_android) { # API for creating Java PeerConnectionFactory from C++ equivalents. rtc_static_library("native_api_peerconnection") { visibility = [ "*" ] - - allow_poison = [ "software_video_codecs" ] # TODO(bugs.webrtc.org/7925): Remove. - sources = [ "native_api/peerconnection/peerconnectionfactory.cc", "native_api/peerconnection/peerconnectionfactory.h", ] - deps = [ ":base_jni", ":peerconnection_jni", @@ -933,10 +932,7 @@ if (is_android) { # video interfaces from their Java equivalents. rtc_static_library("native_api_video") { visibility = [ "*" ] - allow_poison = [ - "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. - "software_video_codecs", # TODO(bugs.webrtc.org/7925): Remove. - ] + allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. sources = [ "native_api/video/videosource.cc", "native_api/video/videosource.h",