Enable building WebRTC without built-in software codecs
This CL adds a GN build flag to include builtin software codecs (enabled by default). When setting the flag to false, libvpx can also be excluded. The benefit is that the resulting binary is smaller. Replaces https://webrtc-review.googlesource.com/c/src/+/29203 Bug: webrtc:7925 Change-Id: Id330ea8a43169e449ee139eca18e4557cc932e10 Reviewed-on: https://webrtc-review.googlesource.com/36340 Commit-Queue: Anders Carlsson <andersc@webrtc.org> Reviewed-by: Patrik Höglund <phoglund@webrtc.org> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21818}
This commit is contained in:
committed by
Commit Bot
parent
70294c8eab
commit
dd8c16574e
4
BUILD.gn
4
BUILD.gn
@ -212,6 +212,10 @@ config("common_config") {
|
|||||||
defines += [ "ENABLE_EXTERNAL_AUTH" ]
|
defines += [ "ENABLE_EXTERNAL_AUTH" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
defines += [ "USE_BUILTIN_SW_CODECS" ]
|
||||||
|
}
|
||||||
|
|
||||||
if (build_with_chromium) {
|
if (build_with_chromium) {
|
||||||
defines += [
|
defines += [
|
||||||
# NOTICE: Since common_inherited_config is used in public_configs for our
|
# NOTICE: Since common_inherited_config is used in public_configs for our
|
||||||
|
|||||||
@ -695,7 +695,6 @@ if (is_win || is_android) {
|
|||||||
"../api:video_frame_api",
|
"../api:video_frame_api",
|
||||||
"../api/audio_codecs:builtin_audio_decoder_factory",
|
"../api/audio_codecs:builtin_audio_decoder_factory",
|
||||||
"../api/audio_codecs:builtin_audio_encoder_factory",
|
"../api/audio_codecs:builtin_audio_encoder_factory",
|
||||||
"../common_video",
|
|
||||||
"../media:rtc_audio_video",
|
"../media:rtc_audio_video",
|
||||||
"../media:rtc_internal_video_codecs",
|
"../media:rtc_internal_video_codecs",
|
||||||
"../media:rtc_media",
|
"../media:rtc_media",
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
#include "api/videosourceproxy.h"
|
#include "api/videosourceproxy.h"
|
||||||
#include "media/engine/internaldecoderfactory.h"
|
#include "media/engine/internaldecoderfactory.h"
|
||||||
#include "media/engine/internalencoderfactory.h"
|
#include "media/engine/internalencoderfactory.h"
|
||||||
#include "media/engine/stereocodecfactory.h"
|
#include "media/engine/multiplexcodecfactory.h"
|
||||||
#include "media/engine/webrtcvideocapturerfactory.h"
|
#include "media/engine/webrtcvideocapturerfactory.h"
|
||||||
#include "media/engine/webrtcvideodecoderfactory.h"
|
#include "media/engine/webrtcvideodecoderfactory.h"
|
||||||
#include "media/engine/webrtcvideoencoderfactory.h"
|
#include "media/engine/webrtcvideoencoderfactory.h"
|
||||||
@ -104,10 +104,10 @@ bool SimplePeerConnection::InitializePeerConnection(const char** turn_urls,
|
|||||||
nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
|
nullptr, webrtc::CreateBuiltinAudioEncoderFactory(),
|
||||||
webrtc::CreateBuiltinAudioDecoderFactory(),
|
webrtc::CreateBuiltinAudioDecoderFactory(),
|
||||||
std::unique_ptr<webrtc::VideoEncoderFactory>(
|
std::unique_ptr<webrtc::VideoEncoderFactory>(
|
||||||
new webrtc::StereoEncoderFactory(
|
new webrtc::MultiplexEncoderFactory(
|
||||||
rtc::MakeUnique<webrtc::InternalEncoderFactory>())),
|
rtc::MakeUnique<webrtc::InternalEncoderFactory>())),
|
||||||
std::unique_ptr<webrtc::VideoDecoderFactory>(
|
std::unique_ptr<webrtc::VideoDecoderFactory>(
|
||||||
new webrtc::StereoDecoderFactory(
|
new webrtc::MultiplexDecoderFactory(
|
||||||
rtc::MakeUnique<webrtc::InternalDecoderFactory>())),
|
rtc::MakeUnique<webrtc::InternalDecoderFactory>())),
|
||||||
nullptr, nullptr);
|
nullptr, nullptr);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -170,19 +170,11 @@ rtc_static_library("rtc_internal_video_codecs") {
|
|||||||
"engine/scopedvideodecoder.h",
|
"engine/scopedvideodecoder.h",
|
||||||
"engine/scopedvideoencoder.cc",
|
"engine/scopedvideoencoder.cc",
|
||||||
"engine/scopedvideoencoder.h",
|
"engine/scopedvideoencoder.h",
|
||||||
"engine/simulcast.cc",
|
|
||||||
"engine/simulcast.h",
|
|
||||||
"engine/simulcast_encoder_adapter.cc",
|
"engine/simulcast_encoder_adapter.cc",
|
||||||
"engine/simulcast_encoder_adapter.h",
|
"engine/simulcast_encoder_adapter.h",
|
||||||
"engine/videodecodersoftwarefallbackwrapper.cc",
|
|
||||||
"engine/videodecodersoftwarefallbackwrapper.h",
|
|
||||||
"engine/videoencodersoftwarefallbackwrapper.cc",
|
|
||||||
"engine/videoencodersoftwarefallbackwrapper.h",
|
|
||||||
"engine/vp8_encoder_simulcast_proxy.cc",
|
"engine/vp8_encoder_simulcast_proxy.cc",
|
||||||
"engine/vp8_encoder_simulcast_proxy.h",
|
"engine/vp8_encoder_simulcast_proxy.h",
|
||||||
"engine/webrtcvideodecoderfactory.cc",
|
|
||||||
"engine/webrtcvideodecoderfactory.h",
|
"engine/webrtcvideodecoderfactory.h",
|
||||||
"engine/webrtcvideoencoderfactory.cc",
|
|
||||||
"engine/webrtcvideoencoderfactory.h",
|
"engine/webrtcvideoencoderfactory.h",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -207,6 +199,7 @@ rtc_static_library("rtc_internal_video_codecs") {
|
|||||||
deps += [
|
deps += [
|
||||||
":rtc_constants",
|
":rtc_constants",
|
||||||
":rtc_media_base",
|
":rtc_media_base",
|
||||||
|
":rtc_software_fallback_wrappers",
|
||||||
"..:webrtc_common",
|
"..:webrtc_common",
|
||||||
"../api:video_frame_api_i420",
|
"../api:video_frame_api_i420",
|
||||||
"../api/video_codecs:video_codecs_api",
|
"../api/video_codecs:video_codecs_api",
|
||||||
@ -227,6 +220,32 @@ rtc_static_library("rtc_internal_video_codecs") {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtc_static_library("rtc_software_fallback_wrappers") {
|
||||||
|
sources = [
|
||||||
|
"engine/videodecodersoftwarefallbackwrapper.cc",
|
||||||
|
"engine/videodecodersoftwarefallbackwrapper.h",
|
||||||
|
"engine/videoencodersoftwarefallbackwrapper.cc",
|
||||||
|
"engine/videoencodersoftwarefallbackwrapper.h",
|
||||||
|
]
|
||||||
|
|
||||||
|
configs += [ ":rtc_media_warnings_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" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":rtc_h264_profile_id",
|
||||||
|
":rtc_media_base",
|
||||||
|
"../api/video_codecs:video_codecs_api",
|
||||||
|
"../modules/video_coding:video_codec_interface",
|
||||||
|
"../rtc_base:checks",
|
||||||
|
"../rtc_base:rtc_base_approved",
|
||||||
|
"../system_wrappers:field_trial_api",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
rtc_static_library("rtc_audio_video") {
|
rtc_static_library("rtc_audio_video") {
|
||||||
visibility = [ "*" ]
|
visibility = [ "*" ]
|
||||||
defines = []
|
defines = []
|
||||||
@ -246,12 +265,18 @@ rtc_static_library("rtc_audio_video") {
|
|||||||
"engine/nullwebrtcvideoengine.h",
|
"engine/nullwebrtcvideoengine.h",
|
||||||
"engine/payload_type_mapper.cc",
|
"engine/payload_type_mapper.cc",
|
||||||
"engine/payload_type_mapper.h",
|
"engine/payload_type_mapper.h",
|
||||||
|
"engine/simulcast.cc",
|
||||||
|
"engine/simulcast.h",
|
||||||
"engine/webrtcmediaengine.cc",
|
"engine/webrtcmediaengine.cc",
|
||||||
"engine/webrtcmediaengine.h",
|
"engine/webrtcmediaengine.h",
|
||||||
"engine/webrtcvideocapturer.cc",
|
"engine/webrtcvideocapturer.cc",
|
||||||
"engine/webrtcvideocapturer.h",
|
"engine/webrtcvideocapturer.h",
|
||||||
"engine/webrtcvideocapturerfactory.cc",
|
"engine/webrtcvideocapturerfactory.cc",
|
||||||
"engine/webrtcvideocapturerfactory.h",
|
"engine/webrtcvideocapturerfactory.h",
|
||||||
|
"engine/webrtcvideodecoderfactory.cc",
|
||||||
|
"engine/webrtcvideodecoderfactory.h",
|
||||||
|
"engine/webrtcvideoencoderfactory.cc",
|
||||||
|
"engine/webrtcvideoencoderfactory.h",
|
||||||
"engine/webrtcvideoengine.cc",
|
"engine/webrtcvideoengine.cc",
|
||||||
"engine/webrtcvideoengine.h",
|
"engine/webrtcvideoengine.h",
|
||||||
"engine/webrtcvoiceengine.cc",
|
"engine/webrtcvoiceengine.cc",
|
||||||
@ -299,10 +324,13 @@ rtc_static_library("rtc_audio_video") {
|
|||||||
} else {
|
} else {
|
||||||
deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
|
deps += [ "../modules/audio_processing/aec_dump:null_aec_dump_factory" ]
|
||||||
}
|
}
|
||||||
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
deps += [ ":rtc_internal_video_codecs" ]
|
||||||
|
}
|
||||||
deps += [
|
deps += [
|
||||||
":rtc_constants",
|
":rtc_constants",
|
||||||
":rtc_internal_video_codecs",
|
|
||||||
":rtc_media_base",
|
":rtc_media_base",
|
||||||
|
":rtc_software_fallback_wrappers",
|
||||||
"..:webrtc_common",
|
"..:webrtc_common",
|
||||||
"../api:call_api",
|
"../api:call_api",
|
||||||
"../api:libjingle_peerconnection_api",
|
"../api:libjingle_peerconnection_api",
|
||||||
@ -598,6 +626,7 @@ if (rtc_include_tests) {
|
|||||||
":rtc_media",
|
":rtc_media",
|
||||||
":rtc_media_base",
|
":rtc_media_base",
|
||||||
":rtc_media_tests_utils",
|
":rtc_media_tests_utils",
|
||||||
|
":rtc_software_fallback_wrappers",
|
||||||
"../api:libjingle_peerconnection_api",
|
"../api:libjingle_peerconnection_api",
|
||||||
"../api:mock_video_codec_factory",
|
"../api:mock_video_codec_factory",
|
||||||
"../api:video_frame_api",
|
"../api:video_frame_api",
|
||||||
@ -613,7 +642,6 @@ if (rtc_include_tests) {
|
|||||||
"../modules/audio_processing:audio_processing",
|
"../modules/audio_processing:audio_processing",
|
||||||
"../modules/video_coding:simulcast_test_utility",
|
"../modules/video_coding:simulcast_test_utility",
|
||||||
"../modules/video_coding:video_coding_utility",
|
"../modules/video_coding:video_coding_utility",
|
||||||
"../modules/video_coding:webrtc_vp8",
|
|
||||||
"../modules/video_coding:webrtc_vp8_helpers",
|
"../modules/video_coding:webrtc_vp8_helpers",
|
||||||
"../p2p:p2p_test_utils",
|
"../p2p:p2p_test_utils",
|
||||||
"../rtc_base:rtc_base",
|
"../rtc_base:rtc_base",
|
||||||
|
|||||||
@ -10,10 +10,13 @@
|
|||||||
|
|
||||||
#include "media/engine/internaldecoderfactory.h"
|
#include "media/engine/internaldecoderfactory.h"
|
||||||
|
|
||||||
|
#include "api/video_codecs/sdp_video_format.h"
|
||||||
#include "media/base/mediaconstants.h"
|
#include "media/base/mediaconstants.h"
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
#include "modules/video_coding/codecs/h264/include/h264.h"
|
#include "modules/video_coding/codecs/h264/include/h264.h"
|
||||||
#include "modules/video_coding/codecs/vp8/include/vp8.h"
|
#include "modules/video_coding/codecs/vp8/include/vp8.h" // nogncheck
|
||||||
#include "modules/video_coding/codecs/vp9/include/vp9.h"
|
#include "modules/video_coding/codecs/vp9/include/vp9.h" // nogncheck
|
||||||
|
#endif
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
|
||||||
@ -22,16 +25,19 @@ namespace webrtc {
|
|||||||
std::vector<SdpVideoFormat> InternalDecoderFactory::GetSupportedFormats()
|
std::vector<SdpVideoFormat> InternalDecoderFactory::GetSupportedFormats()
|
||||||
const {
|
const {
|
||||||
std::vector<SdpVideoFormat> formats;
|
std::vector<SdpVideoFormat> formats;
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
formats.push_back(SdpVideoFormat(cricket::kVp8CodecName));
|
formats.push_back(SdpVideoFormat(cricket::kVp8CodecName));
|
||||||
if (VP9Decoder::IsSupported())
|
if (VP9Decoder::IsSupported())
|
||||||
formats.push_back(SdpVideoFormat(cricket::kVp9CodecName));
|
formats.push_back(SdpVideoFormat(cricket::kVp9CodecName));
|
||||||
for (const SdpVideoFormat& h264_format : SupportedH264Codecs())
|
for (const SdpVideoFormat& h264_format : SupportedH264Codecs())
|
||||||
formats.push_back(h264_format);
|
formats.push_back(h264_format);
|
||||||
|
#endif
|
||||||
return formats;
|
return formats;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<VideoDecoder> InternalDecoderFactory::CreateVideoDecoder(
|
std::unique_ptr<VideoDecoder> InternalDecoderFactory::CreateVideoDecoder(
|
||||||
const SdpVideoFormat& format) {
|
const SdpVideoFormat& format) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
if (cricket::CodecNamesEq(format.name, cricket::kVp8CodecName))
|
if (cricket::CodecNamesEq(format.name, cricket::kVp8CodecName))
|
||||||
return VP8Decoder::Create();
|
return VP8Decoder::Create();
|
||||||
|
|
||||||
@ -42,6 +48,7 @@ std::unique_ptr<VideoDecoder> InternalDecoderFactory::CreateVideoDecoder(
|
|||||||
|
|
||||||
if (cricket::CodecNamesEq(format.name, cricket::kH264CodecName))
|
if (cricket::CodecNamesEq(format.name, cricket::kH264CodecName))
|
||||||
return H264Decoder::Create();
|
return H264Decoder::Create();
|
||||||
|
#endif
|
||||||
|
|
||||||
RTC_LOG(LS_ERROR) << "Trying to create decoder for unsupported format";
|
RTC_LOG(LS_ERROR) << "Trying to create decoder for unsupported format";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
@ -12,9 +12,12 @@
|
|||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "api/video_codecs/sdp_video_format.h"
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
#include "modules/video_coding/codecs/h264/include/h264.h"
|
#include "modules/video_coding/codecs/h264/include/h264.h"
|
||||||
#include "modules/video_coding/codecs/vp8/include/vp8.h"
|
#include "modules/video_coding/codecs/vp8/include/vp8.h" // nogncheck
|
||||||
#include "modules/video_coding/codecs/vp9/include/vp9.h"
|
#include "modules/video_coding/codecs/vp9/include/vp9.h" // nogncheck
|
||||||
|
#endif
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
@ -22,12 +25,14 @@ namespace webrtc {
|
|||||||
std::vector<SdpVideoFormat> InternalEncoderFactory::GetSupportedFormats()
|
std::vector<SdpVideoFormat> InternalEncoderFactory::GetSupportedFormats()
|
||||||
const {
|
const {
|
||||||
std::vector<SdpVideoFormat> supported_codecs;
|
std::vector<SdpVideoFormat> supported_codecs;
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
supported_codecs.push_back(SdpVideoFormat(cricket::kVp8CodecName));
|
supported_codecs.push_back(SdpVideoFormat(cricket::kVp8CodecName));
|
||||||
if (webrtc::VP9Encoder::IsSupported())
|
if (webrtc::VP9Encoder::IsSupported())
|
||||||
supported_codecs.push_back(SdpVideoFormat(cricket::kVp9CodecName));
|
supported_codecs.push_back(SdpVideoFormat(cricket::kVp9CodecName));
|
||||||
|
|
||||||
for (const webrtc::SdpVideoFormat& format : webrtc::SupportedH264Codecs())
|
for (const webrtc::SdpVideoFormat& format : webrtc::SupportedH264Codecs())
|
||||||
supported_codecs.push_back(format);
|
supported_codecs.push_back(format);
|
||||||
|
#endif
|
||||||
|
|
||||||
return supported_codecs;
|
return supported_codecs;
|
||||||
}
|
}
|
||||||
@ -42,6 +47,7 @@ VideoEncoderFactory::CodecInfo InternalEncoderFactory::QueryVideoEncoder(
|
|||||||
|
|
||||||
std::unique_ptr<VideoEncoder> InternalEncoderFactory::CreateVideoEncoder(
|
std::unique_ptr<VideoEncoder> InternalEncoderFactory::CreateVideoEncoder(
|
||||||
const SdpVideoFormat& format) {
|
const SdpVideoFormat& format) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
if (cricket::CodecNamesEq(format.name, cricket::kVp8CodecName))
|
if (cricket::CodecNamesEq(format.name, cricket::kVp8CodecName))
|
||||||
return VP8Encoder::Create();
|
return VP8Encoder::Create();
|
||||||
|
|
||||||
@ -50,6 +56,7 @@ std::unique_ptr<VideoEncoder> InternalEncoderFactory::CreateVideoEncoder(
|
|||||||
|
|
||||||
if (cricket::CodecNamesEq(format.name, cricket::kH264CodecName))
|
if (cricket::CodecNamesEq(format.name, cricket::kH264CodecName))
|
||||||
return H264Encoder::Create(cricket::VideoCodec(format));
|
return H264Encoder::Create(cricket::VideoCodec(format));
|
||||||
|
#endif
|
||||||
|
|
||||||
RTC_LOG(LS_ERROR) << "Trying to created encoder of unsupported format "
|
RTC_LOG(LS_ERROR) << "Trying to created encoder of unsupported format "
|
||||||
<< format.name;
|
<< format.name;
|
||||||
|
|||||||
@ -13,7 +13,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "media/engine/internaldecoderfactory.h"
|
|
||||||
#include "modules/video_coding/include/video_error_codes.h"
|
#include "modules/video_coding/include/video_error_codes.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
|||||||
@ -14,7 +14,6 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "media/base/h264_profile_level_id.h"
|
#include "media/base/h264_profile_level_id.h"
|
||||||
#include "media/engine/internalencoderfactory.h"
|
|
||||||
#include "modules/video_coding/include/video_error_codes.h"
|
#include "modules/video_coding/include/video_error_codes.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
namespace cricket {
|
namespace cricket {
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
MediaEngineInterface* CreateWebRtcMediaEngine(
|
MediaEngineInterface* CreateWebRtcMediaEngine(
|
||||||
@ -86,6 +87,7 @@ MediaEngineInterface* WebRtcMediaEngineFactory::Create(
|
|||||||
adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
|
adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
|
||||||
video_decoder_factory, audio_mixer, audio_processing);
|
video_decoder_factory, audio_mixer, audio_processing);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
std::unique_ptr<MediaEngineInterface> WebRtcMediaEngineFactory::Create(
|
std::unique_ptr<MediaEngineInterface> WebRtcMediaEngineFactory::Create(
|
||||||
rtc::scoped_refptr<webrtc::AudioDeviceModule> adm,
|
rtc::scoped_refptr<webrtc::AudioDeviceModule> adm,
|
||||||
|
|||||||
@ -25,7 +25,9 @@
|
|||||||
#include "call/call.h"
|
#include "call/call.h"
|
||||||
#include "common_video/h264/profile_level_id.h"
|
#include "common_video/h264/profile_level_id.h"
|
||||||
#include "media/engine/constants.h"
|
#include "media/engine/constants.h"
|
||||||
#include "media/engine/convert_legacy_video_factory.h"
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
|
#include "media/engine/convert_legacy_video_factory.h" // nogncheck
|
||||||
|
#endif
|
||||||
#include "media/engine/simulcast.h"
|
#include "media/engine/simulcast.h"
|
||||||
#include "media/engine/webrtcmediaengine.h"
|
#include "media/engine/webrtcmediaengine.h"
|
||||||
#include "media/engine/webrtcvoiceengine.h"
|
#include "media/engine/webrtcvoiceengine.h"
|
||||||
@ -46,6 +48,7 @@ namespace cricket {
|
|||||||
// webrtc:7925 is fixed.
|
// webrtc:7925 is fixed.
|
||||||
class DecoderFactoryAdapter {
|
class DecoderFactoryAdapter {
|
||||||
public:
|
public:
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
explicit DecoderFactoryAdapter(
|
explicit DecoderFactoryAdapter(
|
||||||
std::unique_ptr<WebRtcVideoDecoderFactory> external_video_decoder_factory)
|
std::unique_ptr<WebRtcVideoDecoderFactory> external_video_decoder_factory)
|
||||||
: cricket_decoder_with_params_(new CricketDecoderWithParams(
|
: cricket_decoder_with_params_(new CricketDecoderWithParams(
|
||||||
@ -53,6 +56,7 @@ class DecoderFactoryAdapter {
|
|||||||
decoder_factory_(ConvertVideoDecoderFactory(
|
decoder_factory_(ConvertVideoDecoderFactory(
|
||||||
std::unique_ptr<WebRtcVideoDecoderFactory>(
|
std::unique_ptr<WebRtcVideoDecoderFactory>(
|
||||||
cricket_decoder_with_params_))) {}
|
cricket_decoder_with_params_))) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
explicit DecoderFactoryAdapter(
|
explicit DecoderFactoryAdapter(
|
||||||
std::unique_ptr<webrtc::VideoDecoderFactory> video_decoder_factory)
|
std::unique_ptr<webrtc::VideoDecoderFactory> video_decoder_factory)
|
||||||
@ -514,6 +518,7 @@ void DefaultUnsignalledSsrcHandler::SetDefaultSink(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
WebRtcVideoEngine::WebRtcVideoEngine(
|
WebRtcVideoEngine::WebRtcVideoEngine(
|
||||||
std::unique_ptr<WebRtcVideoEncoderFactory> external_video_encoder_factory,
|
std::unique_ptr<WebRtcVideoEncoderFactory> external_video_encoder_factory,
|
||||||
std::unique_ptr<WebRtcVideoDecoderFactory> external_video_decoder_factory)
|
std::unique_ptr<WebRtcVideoDecoderFactory> external_video_decoder_factory)
|
||||||
@ -523,6 +528,7 @@ WebRtcVideoEngine::WebRtcVideoEngine(
|
|||||||
std::move(external_video_encoder_factory))) {
|
std::move(external_video_encoder_factory))) {
|
||||||
RTC_LOG(LS_INFO) << "WebRtcVideoEngine::WebRtcVideoEngine()";
|
RTC_LOG(LS_INFO) << "WebRtcVideoEngine::WebRtcVideoEngine()";
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
WebRtcVideoEngine::WebRtcVideoEngine(
|
WebRtcVideoEngine::WebRtcVideoEngine(
|
||||||
std::unique_ptr<webrtc::VideoEncoderFactory> video_encoder_factory,
|
std::unique_ptr<webrtc::VideoEncoderFactory> video_encoder_factory,
|
||||||
|
|||||||
@ -96,11 +96,13 @@ class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler {
|
|||||||
// WebRtcVideoEngine is used for the new native WebRTC Video API (webrtc:1667).
|
// WebRtcVideoEngine is used for the new native WebRTC Video API (webrtc:1667).
|
||||||
class WebRtcVideoEngine {
|
class WebRtcVideoEngine {
|
||||||
public:
|
public:
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
// Internal SW video codecs will be added on top of the external codecs.
|
// Internal SW video codecs will be added on top of the external codecs.
|
||||||
WebRtcVideoEngine(
|
WebRtcVideoEngine(
|
||||||
std::unique_ptr<WebRtcVideoEncoderFactory> external_video_encoder_factory,
|
std::unique_ptr<WebRtcVideoEncoderFactory> external_video_encoder_factory,
|
||||||
std::unique_ptr<WebRtcVideoDecoderFactory>
|
std::unique_ptr<WebRtcVideoDecoderFactory>
|
||||||
external_video_decoder_factory);
|
external_video_decoder_factory);
|
||||||
|
#endif
|
||||||
|
|
||||||
// These video codec factories represents all video codecs, i.e. both software
|
// These video codec factories represents all video codecs, i.e. both software
|
||||||
// and external hardware codecs.
|
// and external hardware codecs.
|
||||||
|
|||||||
@ -10,6 +10,8 @@ import("../../webrtc.gni")
|
|||||||
|
|
||||||
rtc_static_library("video_coding") {
|
rtc_static_library("video_coding") {
|
||||||
visibility = [ "*" ]
|
visibility = [ "*" ]
|
||||||
|
deps = []
|
||||||
|
|
||||||
sources = [
|
sources = [
|
||||||
"codec_database.cc",
|
"codec_database.cc",
|
||||||
"codec_database.h",
|
"codec_database.h",
|
||||||
@ -88,16 +90,20 @@ rtc_static_library("video_coding") {
|
|||||||
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
deps = [
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
deps += [
|
||||||
|
":webrtc_i420",
|
||||||
|
":webrtc_vp8",
|
||||||
|
":webrtc_vp9",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
deps += [
|
||||||
":codec_globals_headers",
|
":codec_globals_headers",
|
||||||
":video_codec_interface",
|
":video_codec_interface",
|
||||||
":video_coding_utility",
|
":video_coding_utility",
|
||||||
":webrtc_h264",
|
":webrtc_h264",
|
||||||
":webrtc_i420",
|
|
||||||
":webrtc_multiplex",
|
|
||||||
":webrtc_vp8",
|
|
||||||
":webrtc_vp8_helpers",
|
":webrtc_vp8_helpers",
|
||||||
":webrtc_vp9",
|
|
||||||
"..:module_api",
|
"..:module_api",
|
||||||
"..:module_api_public",
|
"..:module_api_public",
|
||||||
"../..:webrtc_common",
|
"../..:webrtc_common",
|
||||||
@ -320,31 +326,7 @@ rtc_static_library("webrtc_multiplex") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# This target includes VP8 files that may be used for any VP8 codec, internal SW or external HW.
|
# This target includes VP8 files that may be used for any VP8 codec, internal SW or external HW.
|
||||||
rtc_source_set("webrtc_vp8_helpers") {
|
rtc_static_library("webrtc_vp8_helpers") {
|
||||||
sources = [
|
|
||||||
"codecs/vp8/include/vp8_common_types.h",
|
|
||||||
"codecs/vp8/screenshare_layers.h",
|
|
||||||
"codecs/vp8/simulcast_rate_allocator.h",
|
|
||||||
"codecs/vp8/temporal_layers.h",
|
|
||||||
]
|
|
||||||
|
|
||||||
deps = [
|
|
||||||
":video_coding_utility",
|
|
||||||
"..:module_api",
|
|
||||||
"../..:webrtc_common",
|
|
||||||
"../../:typedefs",
|
|
||||||
"../../api/video_codecs:video_codecs_api",
|
|
||||||
"../../common_video",
|
|
||||||
"../../rtc_base:checks",
|
|
||||||
"../../rtc_base:rtc_base_approved",
|
|
||||||
"../../system_wrappers",
|
|
||||||
"../../system_wrappers:field_trial_api",
|
|
||||||
"../../system_wrappers:metrics_api",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
# This target includes the internal SW codec.
|
|
||||||
rtc_static_library("webrtc_vp8") {
|
|
||||||
visibility = [ "*" ]
|
visibility = [ "*" ]
|
||||||
sources = [
|
sources = [
|
||||||
"codecs/vp8/default_temporal_layers.cc",
|
"codecs/vp8/default_temporal_layers.cc",
|
||||||
@ -352,8 +334,47 @@ rtc_static_library("webrtc_vp8") {
|
|||||||
"codecs/vp8/include/vp8.h",
|
"codecs/vp8/include/vp8.h",
|
||||||
"codecs/vp8/include/vp8_common_types.h",
|
"codecs/vp8/include/vp8_common_types.h",
|
||||||
"codecs/vp8/screenshare_layers.cc",
|
"codecs/vp8/screenshare_layers.cc",
|
||||||
|
"codecs/vp8/screenshare_layers.h",
|
||||||
"codecs/vp8/simulcast_rate_allocator.cc",
|
"codecs/vp8/simulcast_rate_allocator.cc",
|
||||||
|
"codecs/vp8/simulcast_rate_allocator.h",
|
||||||
"codecs/vp8/temporal_layers.cc",
|
"codecs/vp8/temporal_layers.cc",
|
||||||
|
"codecs/vp8/temporal_layers.h",
|
||||||
|
]
|
||||||
|
|
||||||
|
# TODO(jschuh): Bug 1348: fix this warning.
|
||||||
|
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
|
||||||
|
|
||||||
|
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" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":video_codec_interface",
|
||||||
|
":video_coding_utility",
|
||||||
|
"..:module_api",
|
||||||
|
"../..:webrtc_common",
|
||||||
|
"../../:typedefs",
|
||||||
|
"../../api:optional",
|
||||||
|
"../../api:video_frame_api",
|
||||||
|
"../../api/video_codecs:video_codecs_api",
|
||||||
|
"../../common_video",
|
||||||
|
"../../rtc_base:checks",
|
||||||
|
"../../rtc_base:rtc_base_approved",
|
||||||
|
"../../rtc_base:rtc_numerics",
|
||||||
|
"../../system_wrappers",
|
||||||
|
"../../system_wrappers:field_trial_api",
|
||||||
|
"../../system_wrappers:metrics_api",
|
||||||
|
"//third_party/libyuv",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
# This target includes the internal SW codec.
|
||||||
|
rtc_static_library("webrtc_vp8") {
|
||||||
|
visibility = [ "*" ]
|
||||||
|
sources = [
|
||||||
|
"codecs/vp8/include/vp8.h",
|
||||||
|
"codecs/vp8/include/vp8_common_types.h",
|
||||||
"codecs/vp8/vp8_impl.cc",
|
"codecs/vp8/vp8_impl.cc",
|
||||||
"codecs/vp8/vp8_impl.h",
|
"codecs/vp8/vp8_impl.h",
|
||||||
]
|
]
|
||||||
@ -375,6 +396,7 @@ rtc_static_library("webrtc_vp8") {
|
|||||||
"../../:typedefs",
|
"../../:typedefs",
|
||||||
"../../api:optional",
|
"../../api:optional",
|
||||||
"../../api:video_frame_api",
|
"../../api:video_frame_api",
|
||||||
|
"../../api/video_codecs:video_codecs_api",
|
||||||
"../../common_video",
|
"../../common_video",
|
||||||
"../../rtc_base:checks",
|
"../../rtc_base:checks",
|
||||||
"../../rtc_base:rtc_base_approved",
|
"../../rtc_base:rtc_base_approved",
|
||||||
@ -468,7 +490,6 @@ if (rtc_include_tests) {
|
|||||||
":mock_headers",
|
":mock_headers",
|
||||||
":video_codec_interface",
|
":video_codec_interface",
|
||||||
":video_coding",
|
":video_coding",
|
||||||
":webrtc_vp8",
|
|
||||||
":webrtc_vp8_helpers",
|
":webrtc_vp8_helpers",
|
||||||
"../../api:video_frame_api",
|
"../../api:video_frame_api",
|
||||||
"../../api:video_frame_api_i420",
|
"../../api:video_frame_api_i420",
|
||||||
@ -502,7 +523,6 @@ if (rtc_include_tests) {
|
|||||||
":video_codec_interface",
|
":video_codec_interface",
|
||||||
":video_coding",
|
":video_coding",
|
||||||
":video_coding_utility",
|
":video_coding_utility",
|
||||||
":webrtc_vp8",
|
|
||||||
":webrtc_vp8_helpers",
|
":webrtc_vp8_helpers",
|
||||||
"../..:webrtc_common",
|
"../..:webrtc_common",
|
||||||
"../../:typedefs",
|
"../../:typedefs",
|
||||||
@ -510,7 +530,7 @@ if (rtc_include_tests) {
|
|||||||
"../../api:video_frame_api_i420",
|
"../../api:video_frame_api_i420",
|
||||||
"../../api/video_codecs:video_codecs_api",
|
"../../api/video_codecs:video_codecs_api",
|
||||||
"../../common_video:common_video",
|
"../../common_video:common_video",
|
||||||
"../../media:rtc_internal_video_codecs",
|
"../../media:rtc_audio_video",
|
||||||
"../../rtc_base:checks",
|
"../../rtc_base:checks",
|
||||||
"../../rtc_base:rtc_base_approved",
|
"../../rtc_base:rtc_base_approved",
|
||||||
"../../rtc_base:rtc_task_queue",
|
"../../rtc_base:rtc_task_queue",
|
||||||
@ -562,7 +582,6 @@ if (rtc_include_tests) {
|
|||||||
":video_coding_utility",
|
":video_coding_utility",
|
||||||
":webrtc_h264",
|
":webrtc_h264",
|
||||||
":webrtc_multiplex",
|
":webrtc_multiplex",
|
||||||
":webrtc_vp8",
|
|
||||||
":webrtc_vp8_helpers",
|
":webrtc_vp8_helpers",
|
||||||
":webrtc_vp9",
|
":webrtc_vp9",
|
||||||
"../..:webrtc_common",
|
"../..:webrtc_common",
|
||||||
@ -576,6 +595,7 @@ if (rtc_include_tests) {
|
|||||||
"../../media:rtc_h264_profile_id",
|
"../../media:rtc_h264_profile_id",
|
||||||
"../../media:rtc_internal_video_codecs",
|
"../../media:rtc_internal_video_codecs",
|
||||||
"../../media:rtc_media_base",
|
"../../media:rtc_media_base",
|
||||||
|
"../../media:rtc_software_fallback_wrappers",
|
||||||
"../../rtc_base:checks",
|
"../../rtc_base:checks",
|
||||||
"../../rtc_base:rtc_base",
|
"../../rtc_base:rtc_base",
|
||||||
"../../rtc_base:rtc_base_tests_utils",
|
"../../rtc_base:rtc_base_tests_utils",
|
||||||
|
|||||||
@ -10,10 +10,13 @@
|
|||||||
|
|
||||||
#include "modules/video_coding/codec_database.h"
|
#include "modules/video_coding/codec_database.h"
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
#include "modules/video_coding/codecs/h264/include/h264.h"
|
#include "modules/video_coding/codecs/h264/include/h264.h"
|
||||||
#include "modules/video_coding/codecs/i420/include/i420.h"
|
#include "modules/video_coding/codecs/i420/include/i420.h" // nogncheck
|
||||||
#include "modules/video_coding/codecs/vp8/include/vp8.h"
|
#include "modules/video_coding/codecs/vp8/include/vp8.h" // nogncheck
|
||||||
#include "modules/video_coding/codecs/vp9/include/vp9.h"
|
#include "modules/video_coding/codecs/vp9/include/vp9.h" // nogncheck
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "modules/video_coding/internal_defines.h"
|
#include "modules/video_coding/internal_defines.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
@ -24,6 +27,7 @@ const size_t kDefaultPayloadSize = 1440;
|
|||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
// Create an internal Decoder given a codec type
|
// Create an internal Decoder given a codec type
|
||||||
static std::unique_ptr<VCMGenericDecoder> CreateDecoder(VideoCodecType type) {
|
static std::unique_ptr<VCMGenericDecoder> CreateDecoder(VideoCodecType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -48,6 +52,7 @@ static std::unique_ptr<VCMGenericDecoder> CreateDecoder(VideoCodecType type) {
|
|||||||
RTC_LOG(LS_WARNING) << "No internal decoder of this type exists.";
|
RTC_LOG(LS_WARNING) << "No internal decoder of this type exists.";
|
||||||
return std::unique_ptr<VCMGenericDecoder>();
|
return std::unique_ptr<VCMGenericDecoder>();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
VCMDecoderMapItem::VCMDecoderMapItem(VideoCodec* settings,
|
VCMDecoderMapItem::VCMDecoderMapItem(VideoCodec* settings,
|
||||||
int number_of_cores,
|
int number_of_cores,
|
||||||
@ -413,8 +418,12 @@ std::unique_ptr<VCMGenericDecoder> VCMCodecDataBase::CreateAndInitDecoder(
|
|||||||
ptr_decoder.reset(new VCMGenericDecoder(
|
ptr_decoder.reset(new VCMGenericDecoder(
|
||||||
external_dec_item->external_decoder_instance, true));
|
external_dec_item->external_decoder_instance, true));
|
||||||
} else {
|
} else {
|
||||||
|
#if !defined(USE_BUILTIN_SW_CODECS)
|
||||||
|
RTC_LOG(LS_ERROR) << "No decoder of this type exists.";
|
||||||
|
#else
|
||||||
// Create decoder.
|
// Create decoder.
|
||||||
ptr_decoder = CreateDecoder(decoder_item->settings->codecType);
|
ptr_decoder = CreateDecoder(decoder_item->settings->codecType);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (!ptr_decoder)
|
if (!ptr_decoder)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "modules/video_coding/include/video_codec_initializer.h"
|
#include "modules/video_coding/include/video_codec_initializer.h"
|
||||||
|
|
||||||
|
#include "api/video_codecs/video_encoder.h"
|
||||||
#include "common_types.h" // NOLINT(build/include)
|
#include "common_types.h" // NOLINT(build/include)
|
||||||
#include "common_video/include/video_bitrate_allocator.h"
|
#include "common_video/include/video_bitrate_allocator.h"
|
||||||
#include "modules/video_coding/codecs/vp8/screenshare_layers.h"
|
#include "modules/video_coding/codecs/vp8/screenshare_layers.h"
|
||||||
|
|||||||
@ -14,7 +14,6 @@
|
|||||||
#include "common_types.h" // NOLINT(build/include)
|
#include "common_types.h" // NOLINT(build/include)
|
||||||
#include "common_video/include/video_bitrate_allocator.h"
|
#include "common_video/include/video_bitrate_allocator.h"
|
||||||
#include "common_video/libyuv/include/webrtc_libyuv.h"
|
#include "common_video/libyuv/include/webrtc_libyuv.h"
|
||||||
#include "modules/video_coding/codecs/vp8/temporal_layers.h"
|
|
||||||
#include "modules/video_coding/encoded_frame.h"
|
#include "modules/video_coding/encoded_frame.h"
|
||||||
#include "modules/video_coding/include/video_codec_interface.h"
|
#include "modules/video_coding/include/video_codec_interface.h"
|
||||||
#include "modules/video_coding/utility/default_video_bitrate_allocator.h"
|
#include "modules/video_coding/utility/default_video_bitrate_allocator.h"
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
||||||
rtc::scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
|
rtc::scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
|
||||||
rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory) {
|
rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory) {
|
||||||
@ -66,6 +67,7 @@ rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
|||||||
network_thread, worker_thread, signaling_thread, std::move(media_engine),
|
network_thread, worker_thread, signaling_thread, std::move(media_engine),
|
||||||
std::move(call_factory), std::move(event_log_factory));
|
std::move(call_factory), std::move(event_log_factory));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
@ -97,6 +99,7 @@ rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
|||||||
std::move(call_factory), std::move(event_log_factory));
|
std::move(call_factory), std::move(event_log_factory));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
rtc::scoped_refptr<PeerConnectionFactoryInterface>
|
rtc::scoped_refptr<PeerConnectionFactoryInterface>
|
||||||
CreatePeerConnectionFactoryWithAudioMixer(
|
CreatePeerConnectionFactoryWithAudioMixer(
|
||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
@ -128,5 +131,6 @@ rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
|||||||
audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
|
audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
|
||||||
video_decoder_factory, nullptr);
|
video_decoder_factory, nullptr);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|||||||
82
sdk/BUILD.gn
82
sdk/BUILD.gn
@ -320,17 +320,15 @@ if (is_ios || is_mac) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
rtc_static_library("peerconnectionfactory_objc") {
|
rtc_static_library("peerconnectionfactory_objc") {
|
||||||
sources = [
|
sources = []
|
||||||
"objc/Framework/Classes/PeerConnection/RTCDefaultVideoDecoderFactory.m",
|
deps = []
|
||||||
"objc/Framework/Classes/PeerConnection/RTCDefaultVideoEncoderFactory.m",
|
|
||||||
|
sources += [
|
||||||
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Native.h",
|
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Native.h",
|
||||||
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h",
|
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h",
|
||||||
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm",
|
"objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm",
|
||||||
"objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm",
|
"objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm",
|
||||||
"objc/Framework/Classes/PeerConnection/RTCVideoCodecVP8.mm",
|
|
||||||
"objc/Framework/Classes/PeerConnection/RTCVideoCodecVP9.mm",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
public_configs = [ ":common_config_objc" ]
|
public_configs = [ ":common_config_objc" ]
|
||||||
|
|
||||||
if (!build_with_chromium && is_clang) {
|
if (!build_with_chromium && is_clang) {
|
||||||
@ -339,9 +337,10 @@ if (is_ios || is_mac) {
|
|||||||
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
deps = [
|
deps += [
|
||||||
":common_objc",
|
":common_objc",
|
||||||
":corevideoframebuffer_objc",
|
":corevideoframebuffer_objc",
|
||||||
|
":default_codec_factory_objc",
|
||||||
":peerconnectionfactory_base_objc",
|
":peerconnectionfactory_base_objc",
|
||||||
":video_objc",
|
":video_objc",
|
||||||
":videotoolbox_objc",
|
":videotoolbox_objc",
|
||||||
@ -354,8 +353,6 @@ if (is_ios || is_mac) {
|
|||||||
"../api/video_codecs:video_codecs_api",
|
"../api/video_codecs:video_codecs_api",
|
||||||
"../media:rtc_audio_video",
|
"../media:rtc_audio_video",
|
||||||
"../media:rtc_media_base",
|
"../media:rtc_media_base",
|
||||||
"../modules/video_coding:webrtc_vp8",
|
|
||||||
"../modules/video_coding:webrtc_vp9",
|
|
||||||
"../pc:create_pc_factory",
|
"../pc:create_pc_factory",
|
||||||
"../pc:peerconnection",
|
"../pc:peerconnection",
|
||||||
"../rtc_base:rtc_base",
|
"../rtc_base:rtc_base",
|
||||||
@ -363,6 +360,59 @@ if (is_ios || is_mac) {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtc_static_library("default_codec_factory_objc") {
|
||||||
|
sources = [
|
||||||
|
"objc/Framework/Classes/PeerConnection/RTCDefaultVideoDecoderFactory.m",
|
||||||
|
"objc/Framework/Classes/PeerConnection/RTCDefaultVideoEncoderFactory.m",
|
||||||
|
]
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":common_objc",
|
||||||
|
]
|
||||||
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
deps += [
|
||||||
|
":vp8",
|
||||||
|
":vp9",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rtc_static_library("vp8") {
|
||||||
|
sources = [
|
||||||
|
"objc/Framework/Classes/PeerConnection/RTCVideoCodecVP8.mm",
|
||||||
|
]
|
||||||
|
|
||||||
|
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" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":peerconnectionfactory_base_objc",
|
||||||
|
"../modules/video_coding:webrtc_vp8",
|
||||||
|
"../system_wrappers:metrics_default",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
rtc_static_library("vp9") {
|
||||||
|
sources = [
|
||||||
|
"objc/Framework/Classes/PeerConnection/RTCVideoCodecVP9.mm",
|
||||||
|
]
|
||||||
|
|
||||||
|
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" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":peerconnectionfactory_base_objc",
|
||||||
|
"../modules/video_coding:webrtc_vp9",
|
||||||
|
"../system_wrappers:metrics_default",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
# Build the PeerConnectionFactory without audio/video support.
|
# Build the PeerConnectionFactory without audio/video support.
|
||||||
# This target depends on the objc_peeerconnectionfactory_base which still
|
# This target depends on the objc_peeerconnectionfactory_base which still
|
||||||
# includes some audio/video related objects such as RTCAudioSource because
|
# includes some audio/video related objects such as RTCAudioSource because
|
||||||
@ -711,10 +761,6 @@ if (is_ios || is_mac) {
|
|||||||
"objc/Framework/Headers/WebRTC/RTCTracing.h",
|
"objc/Framework/Headers/WebRTC/RTCTracing.h",
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoCapturer.h",
|
"objc/Framework/Headers/WebRTC/RTCVideoCapturer.h",
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoCodecH264.h",
|
"objc/Framework/Headers/WebRTC/RTCVideoCodecH264.h",
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h",
|
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h",
|
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoEncoderVP8.h",
|
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoEncoderVP9.h",
|
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoFrame.h",
|
"objc/Framework/Headers/WebRTC/RTCVideoFrame.h",
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h",
|
"objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h",
|
||||||
"objc/Framework/Headers/WebRTC/RTCVideoRenderer.h",
|
"objc/Framework/Headers/WebRTC/RTCVideoRenderer.h",
|
||||||
@ -727,6 +773,14 @@ if (is_ios || is_mac) {
|
|||||||
common_objc_headers +=
|
common_objc_headers +=
|
||||||
[ "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h" ]
|
[ "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h" ]
|
||||||
}
|
}
|
||||||
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
common_objc_headers += [
|
||||||
|
"objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h",
|
||||||
|
"objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h",
|
||||||
|
"objc/Framework/Headers/WebRTC/RTCVideoEncoderVP8.h",
|
||||||
|
"objc/Framework/Headers/WebRTC/RTCVideoEncoderVP9.h",
|
||||||
|
]
|
||||||
|
}
|
||||||
sources = common_objc_headers
|
sources = common_objc_headers
|
||||||
public_headers = common_objc_headers
|
public_headers = common_objc_headers
|
||||||
|
|
||||||
@ -848,13 +902,11 @@ if (is_ios || is_mac) {
|
|||||||
"../api/video_codecs:video_codecs_api",
|
"../api/video_codecs:video_codecs_api",
|
||||||
"../common_video",
|
"../common_video",
|
||||||
"../media:rtc_audio_video",
|
"../media:rtc_audio_video",
|
||||||
"../media:rtc_internal_video_codecs",
|
|
||||||
"../media:rtc_media",
|
"../media:rtc_media",
|
||||||
"../media:rtc_media_base",
|
"../media:rtc_media_base",
|
||||||
"../modules:module_api",
|
"../modules:module_api",
|
||||||
"../modules/video_coding:video_codec_interface",
|
"../modules/video_coding:video_codec_interface",
|
||||||
"../modules/video_coding:video_coding_utility",
|
"../modules/video_coding:video_coding_utility",
|
||||||
"../modules/video_coding:webrtc_h264",
|
|
||||||
"../rtc_base:checks",
|
"../rtc_base:checks",
|
||||||
"../rtc_base:rtc_base_approved",
|
"../rtc_base:rtc_base_approved",
|
||||||
"../system_wrappers",
|
"../system_wrappers",
|
||||||
|
|||||||
@ -145,7 +145,6 @@ rtc_static_library("null_audio_jni") {
|
|||||||
generate_jni("generated_video_jni") {
|
generate_jni("generated_video_jni") {
|
||||||
sources = [
|
sources = [
|
||||||
"api/org/webrtc/EncodedImage.java",
|
"api/org/webrtc/EncodedImage.java",
|
||||||
"api/org/webrtc/HardwareVideoEncoderFactory.java",
|
|
||||||
"api/org/webrtc/MediaCodecVideoDecoder.java",
|
"api/org/webrtc/MediaCodecVideoDecoder.java",
|
||||||
"api/org/webrtc/MediaCodecVideoEncoder.java",
|
"api/org/webrtc/MediaCodecVideoEncoder.java",
|
||||||
"api/org/webrtc/SurfaceTextureHelper.java",
|
"api/org/webrtc/SurfaceTextureHelper.java",
|
||||||
@ -167,27 +166,24 @@ generate_jni("generated_video_jni") {
|
|||||||
"src/java/org/webrtc/EglBase14.java",
|
"src/java/org/webrtc/EglBase14.java",
|
||||||
"src/java/org/webrtc/NV12Buffer.java",
|
"src/java/org/webrtc/NV12Buffer.java",
|
||||||
"src/java/org/webrtc/NV21Buffer.java",
|
"src/java/org/webrtc/NV21Buffer.java",
|
||||||
"src/java/org/webrtc/VP8Decoder.java",
|
|
||||||
"src/java/org/webrtc/VP8Encoder.java",
|
|
||||||
"src/java/org/webrtc/VP9Decoder.java",
|
|
||||||
"src/java/org/webrtc/VP9Encoder.java",
|
|
||||||
"src/java/org/webrtc/VideoDecoderWrapper.java",
|
"src/java/org/webrtc/VideoDecoderWrapper.java",
|
||||||
"src/java/org/webrtc/VideoEncoderWrapper.java",
|
"src/java/org/webrtc/VideoEncoderWrapper.java",
|
||||||
"src/java/org/webrtc/WrappedNativeI420Buffer.java",
|
"src/java/org/webrtc/WrappedNativeI420Buffer.java",
|
||||||
"src/java/org/webrtc/WrappedNativeVideoDecoder.java",
|
"src/java/org/webrtc/WrappedNativeVideoDecoder.java",
|
||||||
"src/java/org/webrtc/WrappedNativeVideoEncoder.java",
|
"src/java/org/webrtc/WrappedNativeVideoEncoder.java",
|
||||||
]
|
]
|
||||||
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
sources += [ "api/org/webrtc/HardwareVideoEncoderFactory.java" ] # TODO(andersc): This currently depends on SoftwareVideoEncoderFactory
|
||||||
|
}
|
||||||
jni_package = ""
|
jni_package = ""
|
||||||
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
|
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
rtc_static_library("video_jni") {
|
rtc_static_library("video_jni") {
|
||||||
sources = [
|
sources = []
|
||||||
"src/jni/androidmediacodeccommon.h",
|
deps = []
|
||||||
"src/jni/androidmediadecoder.cc",
|
|
||||||
"src/jni/androidmediadecoder_jni.h",
|
sources += [
|
||||||
"src/jni/androidmediaencoder.cc",
|
|
||||||
"src/jni/androidmediaencoder_jni.h",
|
|
||||||
"src/jni/androidvideotracksource.cc",
|
"src/jni/androidvideotracksource.cc",
|
||||||
"src/jni/androidvideotracksource.h",
|
"src/jni/androidvideotracksource.h",
|
||||||
"src/jni/encodedimage.cc",
|
"src/jni/encodedimage.cc",
|
||||||
@ -217,8 +213,6 @@ rtc_static_library("video_jni") {
|
|||||||
"src/jni/videoframe.cc",
|
"src/jni/videoframe.cc",
|
||||||
"src/jni/videoframe.h",
|
"src/jni/videoframe.h",
|
||||||
"src/jni/videotrack.cc",
|
"src/jni/videotrack.cc",
|
||||||
"src/jni/vp8codec.cc",
|
|
||||||
"src/jni/vp9codec.cc",
|
|
||||||
"src/jni/wrapped_native_i420_buffer.cc",
|
"src/jni/wrapped_native_i420_buffer.cc",
|
||||||
"src/jni/wrapped_native_i420_buffer.h",
|
"src/jni/wrapped_native_i420_buffer.h",
|
||||||
"src/jni/wrappednativecodec.cc",
|
"src/jni/wrappednativecodec.cc",
|
||||||
@ -246,7 +240,22 @@ rtc_static_library("video_jni") {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
deps = [
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
sources += [
|
||||||
|
"src/jni/androidmediacodeccommon.h",
|
||||||
|
"src/jni/androidmediadecoder.cc",
|
||||||
|
"src/jni/androidmediadecoder_jni.h",
|
||||||
|
"src/jni/androidmediaencoder.cc",
|
||||||
|
"src/jni/androidmediaencoder_jni.h",
|
||||||
|
]
|
||||||
|
|
||||||
|
deps += [
|
||||||
|
":vp8_jni",
|
||||||
|
":vp9_jni",
|
||||||
|
"../../media:rtc_internal_video_codecs",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
deps += [
|
||||||
":base_jni",
|
":base_jni",
|
||||||
":generated_video_jni",
|
":generated_video_jni",
|
||||||
":native_api_jni",
|
":native_api_jni",
|
||||||
@ -257,15 +266,13 @@ rtc_static_library("video_jni") {
|
|||||||
"../../common_video:common_video",
|
"../../common_video:common_video",
|
||||||
"../../media:rtc_audio_video",
|
"../../media:rtc_audio_video",
|
||||||
"../../media:rtc_h264_profile_id",
|
"../../media:rtc_h264_profile_id",
|
||||||
"../../media:rtc_internal_video_codecs",
|
|
||||||
"../../media:rtc_media_base",
|
"../../media:rtc_media_base",
|
||||||
|
"../../media:rtc_software_fallback_wrappers",
|
||||||
"../../modules:module_api",
|
"../../modules:module_api",
|
||||||
"../../modules/utility:utility",
|
"../../modules/utility:utility",
|
||||||
"../../modules/video_coding:codec_globals_headers",
|
"../../modules/video_coding:codec_globals_headers",
|
||||||
"../../modules/video_coding:video_codec_interface",
|
"../../modules/video_coding:video_codec_interface",
|
||||||
"../../modules/video_coding:video_coding_utility",
|
"../../modules/video_coding:video_coding_utility",
|
||||||
"../../modules/video_coding:webrtc_vp8",
|
|
||||||
"../../modules/video_coding:webrtc_vp9",
|
|
||||||
"../../rtc_base:checks",
|
"../../rtc_base:checks",
|
||||||
"../../rtc_base:rtc_base",
|
"../../rtc_base:rtc_base",
|
||||||
"../../rtc_base:rtc_base_approved",
|
"../../rtc_base:rtc_base_approved",
|
||||||
@ -288,6 +295,66 @@ rtc_static_library("null_video_jni") {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generate_jni("generated_vp8_jni") {
|
||||||
|
sources = [
|
||||||
|
"src/java/org/webrtc/VP8Decoder.java",
|
||||||
|
"src/java/org/webrtc/VP8Encoder.java",
|
||||||
|
]
|
||||||
|
|
||||||
|
jni_package = ""
|
||||||
|
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
rtc_static_library("vp8_jni") {
|
||||||
|
sources = [
|
||||||
|
"src/jni/vp8codec.cc",
|
||||||
|
]
|
||||||
|
|
||||||
|
if (is_clang) {
|
||||||
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
||||||
|
suppressed_configs += [
|
||||||
|
"//build/config/clang:extra_warnings",
|
||||||
|
"//build/config/clang:find_bad_constructs",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":base_jni",
|
||||||
|
":generated_vp8_jni",
|
||||||
|
"../../modules/video_coding:webrtc_vp8",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_jni("generated_vp9_jni") {
|
||||||
|
sources = [
|
||||||
|
"src/java/org/webrtc/VP9Decoder.java",
|
||||||
|
"src/java/org/webrtc/VP9Encoder.java",
|
||||||
|
]
|
||||||
|
|
||||||
|
jni_package = ""
|
||||||
|
jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
rtc_static_library("vp9_jni") {
|
||||||
|
sources = [
|
||||||
|
"src/jni/vp9codec.cc",
|
||||||
|
]
|
||||||
|
|
||||||
|
if (is_clang) {
|
||||||
|
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
||||||
|
suppressed_configs += [
|
||||||
|
"//build/config/clang:extra_warnings",
|
||||||
|
"//build/config/clang:find_bad_constructs",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":base_jni",
|
||||||
|
":generated_vp9_jni",
|
||||||
|
"../../modules/video_coding:webrtc_vp9",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
rtc_static_library("media_jni") {
|
rtc_static_library("media_jni") {
|
||||||
sources = [
|
sources = [
|
||||||
"src/jni/pc/media.cc",
|
"src/jni/pc/media.cc",
|
||||||
@ -366,6 +433,7 @@ rtc_static_library("peerconnection_jni") {
|
|||||||
# made public because we don't have a proper NDK yet. Header APIs here are not
|
# made public because we don't have a proper NDK yet. Header APIs here are not
|
||||||
# considered public and are subject to change.
|
# considered public and are subject to change.
|
||||||
visibility = [ "*" ]
|
visibility = [ "*" ]
|
||||||
|
|
||||||
sources = [
|
sources = [
|
||||||
"src/jni/androidnetworkmonitor_jni.h",
|
"src/jni/androidnetworkmonitor_jni.h",
|
||||||
"src/jni/pc/androidnetworkmonitor.cc",
|
"src/jni/pc/androidnetworkmonitor.cc",
|
||||||
@ -567,8 +635,6 @@ rtc_android_library("libjingle_peerconnection_java") {
|
|||||||
"api/org/webrtc/CameraEnumerator.java",
|
"api/org/webrtc/CameraEnumerator.java",
|
||||||
"api/org/webrtc/CameraVideoCapturer.java",
|
"api/org/webrtc/CameraVideoCapturer.java",
|
||||||
"api/org/webrtc/DataChannel.java",
|
"api/org/webrtc/DataChannel.java",
|
||||||
"api/org/webrtc/DefaultVideoDecoderFactory.java",
|
|
||||||
"api/org/webrtc/DefaultVideoEncoderFactory.java",
|
|
||||||
"api/org/webrtc/DtmfSender.java",
|
"api/org/webrtc/DtmfSender.java",
|
||||||
"api/org/webrtc/EglBase.java",
|
"api/org/webrtc/EglBase.java",
|
||||||
"api/org/webrtc/EglRenderer.java",
|
"api/org/webrtc/EglRenderer.java",
|
||||||
@ -578,8 +644,6 @@ rtc_android_library("libjingle_peerconnection_java") {
|
|||||||
"api/org/webrtc/GlShader.java",
|
"api/org/webrtc/GlShader.java",
|
||||||
"api/org/webrtc/GlTextureFrameBuffer.java",
|
"api/org/webrtc/GlTextureFrameBuffer.java",
|
||||||
"api/org/webrtc/GlUtil.java",
|
"api/org/webrtc/GlUtil.java",
|
||||||
"api/org/webrtc/HardwareVideoDecoderFactory.java",
|
|
||||||
"api/org/webrtc/HardwareVideoEncoderFactory.java",
|
|
||||||
"api/org/webrtc/IceCandidate.java",
|
"api/org/webrtc/IceCandidate.java",
|
||||||
"api/org/webrtc/JavaI420Buffer.java",
|
"api/org/webrtc/JavaI420Buffer.java",
|
||||||
"api/org/webrtc/MediaCodecVideoDecoder.java",
|
"api/org/webrtc/MediaCodecVideoDecoder.java",
|
||||||
@ -604,8 +668,6 @@ rtc_android_library("libjingle_peerconnection_java") {
|
|||||||
"api/org/webrtc/ScreenCapturerAndroid.java",
|
"api/org/webrtc/ScreenCapturerAndroid.java",
|
||||||
"api/org/webrtc/SdpObserver.java",
|
"api/org/webrtc/SdpObserver.java",
|
||||||
"api/org/webrtc/SessionDescription.java",
|
"api/org/webrtc/SessionDescription.java",
|
||||||
"api/org/webrtc/SoftwareVideoDecoderFactory.java",
|
|
||||||
"api/org/webrtc/SoftwareVideoEncoderFactory.java",
|
|
||||||
"api/org/webrtc/StatsObserver.java",
|
"api/org/webrtc/StatsObserver.java",
|
||||||
"api/org/webrtc/StatsReport.java",
|
"api/org/webrtc/StatsReport.java",
|
||||||
"api/org/webrtc/SurfaceEglRenderer.java",
|
"api/org/webrtc/SurfaceEglRenderer.java",
|
||||||
@ -661,11 +723,21 @@ rtc_android_library("libjingle_peerconnection_java") {
|
|||||||
"src/java/org/webrtc/WrappedNativeI420Buffer.java",
|
"src/java/org/webrtc/WrappedNativeI420Buffer.java",
|
||||||
"src/java/org/webrtc/WrappedNativeVideoEncoder.java",
|
"src/java/org/webrtc/WrappedNativeVideoEncoder.java",
|
||||||
"src/java/org/webrtc/WrappedNativeVideoDecoder.java",
|
"src/java/org/webrtc/WrappedNativeVideoDecoder.java",
|
||||||
"src/java/org/webrtc/VP8Encoder.java",
|
|
||||||
"src/java/org/webrtc/VP8Decoder.java",
|
|
||||||
"src/java/org/webrtc/VP9Encoder.java",
|
|
||||||
"src/java/org/webrtc/VP9Decoder.java",
|
|
||||||
]
|
]
|
||||||
|
if (rtc_use_builtin_sw_codecs) {
|
||||||
|
java_files += [
|
||||||
|
"api/org/webrtc/DefaultVideoDecoderFactory.java",
|
||||||
|
"api/org/webrtc/DefaultVideoEncoderFactory.java",
|
||||||
|
"api/org/webrtc/HardwareVideoDecoderFactory.java", ## TODO(andersc): make this not depend on SoftwareVideoDecoderFactory
|
||||||
|
"api/org/webrtc/HardwareVideoEncoderFactory.java", ## TODO(andersc): make this not depend on SoftwareVideoEncoderFactory
|
||||||
|
"api/org/webrtc/SoftwareVideoDecoderFactory.java",
|
||||||
|
"api/org/webrtc/SoftwareVideoEncoderFactory.java",
|
||||||
|
"src/java/org/webrtc/VP8Encoder.java",
|
||||||
|
"src/java/org/webrtc/VP8Decoder.java",
|
||||||
|
"src/java/org/webrtc/VP9Encoder.java",
|
||||||
|
"src/java/org/webrtc/VP9Decoder.java",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
"../../modules/audio_device:audio_device_java",
|
"../../modules/audio_device:audio_device_java",
|
||||||
|
|||||||
@ -30,6 +30,7 @@ RtcEventLogFactoryInterface* CreateRtcEventLogFactory() {
|
|||||||
return webrtc::CreateRtcEventLogFactory().release();
|
return webrtc::CreateRtcEventLogFactory().release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
cricket::MediaEngineInterface* CreateMediaEngine(
|
cricket::MediaEngineInterface* CreateMediaEngine(
|
||||||
AudioDeviceModule* adm,
|
AudioDeviceModule* adm,
|
||||||
const rtc::scoped_refptr<AudioEncoderFactory>& audio_encoder_factory,
|
const rtc::scoped_refptr<AudioEncoderFactory>& audio_encoder_factory,
|
||||||
@ -42,6 +43,7 @@ cricket::MediaEngineInterface* CreateMediaEngine(
|
|||||||
adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
|
adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
|
||||||
video_decoder_factory, audio_mixer, audio_processor);
|
video_decoder_factory, audio_mixer, audio_processor);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
cricket::MediaEngineInterface* CreateMediaEngine(
|
cricket::MediaEngineInterface* CreateMediaEngine(
|
||||||
rtc::scoped_refptr<AudioDeviceModule> adm,
|
rtc::scoped_refptr<AudioDeviceModule> adm,
|
||||||
|
|||||||
@ -220,6 +220,7 @@ jlong CreatePeerConnectionFactoryForJava(
|
|||||||
cricket::WebRtcVideoDecoderFactory* legacy_video_decoder_factory = nullptr;
|
cricket::WebRtcVideoDecoderFactory* legacy_video_decoder_factory = nullptr;
|
||||||
std::unique_ptr<cricket::MediaEngineInterface> media_engine;
|
std::unique_ptr<cricket::MediaEngineInterface> media_engine;
|
||||||
if (jencoder_factory.is_null() && jdecoder_factory.is_null()) {
|
if (jencoder_factory.is_null() && jdecoder_factory.is_null()) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
// This uses the legacy API, which automatically uses the internal SW
|
// This uses the legacy API, which automatically uses the internal SW
|
||||||
// codecs in WebRTC.
|
// codecs in WebRTC.
|
||||||
if (video_hw_acceleration_enabled) {
|
if (video_hw_acceleration_enabled) {
|
||||||
@ -230,13 +231,16 @@ jlong CreatePeerConnectionFactoryForJava(
|
|||||||
adm, audio_encoder_factory, audio_decoder_factory,
|
adm, audio_encoder_factory, audio_decoder_factory,
|
||||||
legacy_video_encoder_factory, legacy_video_decoder_factory, audio_mixer,
|
legacy_video_encoder_factory, legacy_video_decoder_factory, audio_mixer,
|
||||||
audio_processor));
|
audio_processor));
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
// This uses the new API, does not automatically include software codecs.
|
// This uses the new API, does not automatically include software codecs.
|
||||||
std::unique_ptr<VideoEncoderFactory> video_encoder_factory = nullptr;
|
std::unique_ptr<VideoEncoderFactory> video_encoder_factory = nullptr;
|
||||||
if (jencoder_factory.is_null()) {
|
if (jencoder_factory.is_null()) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
legacy_video_encoder_factory = CreateLegacyVideoEncoderFactory();
|
legacy_video_encoder_factory = CreateLegacyVideoEncoderFactory();
|
||||||
video_encoder_factory = std::unique_ptr<VideoEncoderFactory>(
|
video_encoder_factory = std::unique_ptr<VideoEncoderFactory>(
|
||||||
WrapLegacyVideoEncoderFactory(legacy_video_encoder_factory));
|
WrapLegacyVideoEncoderFactory(legacy_video_encoder_factory));
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
video_encoder_factory = std::unique_ptr<VideoEncoderFactory>(
|
video_encoder_factory = std::unique_ptr<VideoEncoderFactory>(
|
||||||
CreateVideoEncoderFactory(jni, jencoder_factory));
|
CreateVideoEncoderFactory(jni, jencoder_factory));
|
||||||
@ -244,9 +248,11 @@ jlong CreatePeerConnectionFactoryForJava(
|
|||||||
|
|
||||||
std::unique_ptr<VideoDecoderFactory> video_decoder_factory = nullptr;
|
std::unique_ptr<VideoDecoderFactory> video_decoder_factory = nullptr;
|
||||||
if (jdecoder_factory.is_null()) {
|
if (jdecoder_factory.is_null()) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
legacy_video_decoder_factory = CreateLegacyVideoDecoderFactory();
|
legacy_video_decoder_factory = CreateLegacyVideoDecoderFactory();
|
||||||
video_decoder_factory = std::unique_ptr<VideoDecoderFactory>(
|
video_decoder_factory = std::unique_ptr<VideoDecoderFactory>(
|
||||||
WrapLegacyVideoDecoderFactory(legacy_video_decoder_factory));
|
WrapLegacyVideoDecoderFactory(legacy_video_decoder_factory));
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
video_decoder_factory = std::unique_ptr<VideoDecoderFactory>(
|
video_decoder_factory = std::unique_ptr<VideoDecoderFactory>(
|
||||||
CreateVideoDecoderFactory(jni, jdecoder_factory));
|
CreateVideoDecoderFactory(jni, jdecoder_factory));
|
||||||
@ -483,12 +489,14 @@ static void JNI_PeerConnectionFactory_SetVideoHwAccelerationOptions(
|
|||||||
jlong native_factory,
|
jlong native_factory,
|
||||||
const JavaParamRef<jobject>& local_egl_context,
|
const JavaParamRef<jobject>& local_egl_context,
|
||||||
const JavaParamRef<jobject>& remote_egl_context) {
|
const JavaParamRef<jobject>& remote_egl_context) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
OwnedFactoryAndThreads* owned_factory =
|
OwnedFactoryAndThreads* owned_factory =
|
||||||
reinterpret_cast<OwnedFactoryAndThreads*>(native_factory);
|
reinterpret_cast<OwnedFactoryAndThreads*>(native_factory);
|
||||||
SetEglContext(jni, owned_factory->legacy_encoder_factory(),
|
SetEglContext(jni, owned_factory->legacy_encoder_factory(),
|
||||||
local_egl_context);
|
local_egl_context);
|
||||||
SetEglContext(jni, owned_factory->legacy_decoder_factory(),
|
SetEglContext(jni, owned_factory->legacy_decoder_factory(),
|
||||||
remote_egl_context);
|
remote_egl_context);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static jlong JNI_PeerConnectionFactory_GetNativePeerConnectionFactory(
|
static jlong JNI_PeerConnectionFactory_GetNativePeerConnectionFactory(
|
||||||
|
|||||||
@ -16,7 +16,9 @@
|
|||||||
#include "api/video_codecs/video_decoder_factory.h"
|
#include "api/video_codecs/video_decoder_factory.h"
|
||||||
#include "api/video_codecs/video_encoder_factory.h"
|
#include "api/video_codecs/video_encoder_factory.h"
|
||||||
#include "api/videosourceproxy.h"
|
#include "api/videosourceproxy.h"
|
||||||
#include "media/engine/convert_legacy_video_factory.h"
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
|
#include "media/engine/convert_legacy_video_factory.h" // nogncheck
|
||||||
|
#endif
|
||||||
#include "media/engine/webrtcvideodecoderfactory.h"
|
#include "media/engine/webrtcvideodecoderfactory.h"
|
||||||
#include "media/engine/webrtcvideoencoderfactory.h"
|
#include "media/engine/webrtcvideoencoderfactory.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
@ -46,6 +48,7 @@ VideoDecoderFactory* CreateVideoDecoderFactory(
|
|||||||
void SetEglContext(JNIEnv* env,
|
void SetEglContext(JNIEnv* env,
|
||||||
cricket::WebRtcVideoEncoderFactory* encoder_factory,
|
cricket::WebRtcVideoEncoderFactory* encoder_factory,
|
||||||
const JavaRef<jobject>& egl_context) {
|
const JavaRef<jobject>& egl_context) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
if (encoder_factory) {
|
if (encoder_factory) {
|
||||||
MediaCodecVideoEncoderFactory* media_codec_factory =
|
MediaCodecVideoEncoderFactory* media_codec_factory =
|
||||||
static_cast<MediaCodecVideoEncoderFactory*>(encoder_factory);
|
static_cast<MediaCodecVideoEncoderFactory*>(encoder_factory);
|
||||||
@ -54,8 +57,14 @@ void SetEglContext(JNIEnv* env,
|
|||||||
media_codec_factory->SetEGLContext(env, egl_context.obj());
|
media_codec_factory->SetEGLContext(env, egl_context.obj());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (Java_Context_isEgl14Context(env, egl_context)) {
|
||||||
|
RTC_LOG(LS_INFO) << "Set EGL context for HW encoding.";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
void SetEglContext(JNIEnv* env,
|
void SetEglContext(JNIEnv* env,
|
||||||
cricket::WebRtcVideoDecoderFactory* decoder_factory,
|
cricket::WebRtcVideoDecoderFactory* decoder_factory,
|
||||||
const JavaRef<jobject>& egl_context) {
|
const JavaRef<jobject>& egl_context) {
|
||||||
@ -68,6 +77,7 @@ void SetEglContext(JNIEnv* env,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void* CreateVideoSource(JNIEnv* env,
|
void* CreateVideoSource(JNIEnv* env,
|
||||||
rtc::Thread* signaling_thread,
|
rtc::Thread* signaling_thread,
|
||||||
@ -81,6 +91,7 @@ void* CreateVideoSource(JNIEnv* env,
|
|||||||
.release();
|
.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
cricket::WebRtcVideoEncoderFactory* CreateLegacyVideoEncoderFactory() {
|
cricket::WebRtcVideoEncoderFactory* CreateLegacyVideoEncoderFactory() {
|
||||||
return new MediaCodecVideoEncoderFactory();
|
return new MediaCodecVideoEncoderFactory();
|
||||||
}
|
}
|
||||||
@ -104,6 +115,7 @@ VideoDecoderFactory* WrapLegacyVideoDecoderFactory(
|
|||||||
legacy_decoder_factory))
|
legacy_decoder_factory))
|
||||||
.release();
|
.release();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace jni
|
} // namespace jni
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|||||||
@ -11,8 +11,8 @@
|
|||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
|
|
||||||
#include "modules/video_coding/codecs/vp8/include/vp8.h"
|
#include "modules/video_coding/codecs/vp8/include/vp8.h"
|
||||||
#include "sdk/android/generated_video_jni/jni/VP8Decoder_jni.h"
|
#include "sdk/android/generated_vp8_jni/jni/VP8Decoder_jni.h"
|
||||||
#include "sdk/android/generated_video_jni/jni/VP8Encoder_jni.h"
|
#include "sdk/android/generated_vp8_jni/jni/VP8Encoder_jni.h"
|
||||||
#include "sdk/android/src/jni/jni_helpers.h"
|
#include "sdk/android/src/jni/jni_helpers.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|||||||
@ -11,8 +11,8 @@
|
|||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
|
|
||||||
#include "modules/video_coding/codecs/vp9/include/vp9.h"
|
#include "modules/video_coding/codecs/vp9/include/vp9.h"
|
||||||
#include "sdk/android/generated_video_jni/jni/VP9Decoder_jni.h"
|
#include "sdk/android/generated_vp9_jni/jni/VP9Decoder_jni.h"
|
||||||
#include "sdk/android/generated_video_jni/jni/VP9Encoder_jni.h"
|
#include "sdk/android/generated_vp9_jni/jni/VP9Encoder_jni.h"
|
||||||
#include "sdk/android/src/jni/jni_helpers.h"
|
#include "sdk/android/src/jni/jni_helpers.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|||||||
@ -11,21 +11,25 @@
|
|||||||
#import "WebRTC/RTCVideoCodecFactory.h"
|
#import "WebRTC/RTCVideoCodecFactory.h"
|
||||||
|
|
||||||
#import "WebRTC/RTCVideoCodecH264.h"
|
#import "WebRTC/RTCVideoCodecH264.h"
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
#import "WebRTC/RTCVideoDecoderVP8.h"
|
#import "WebRTC/RTCVideoDecoderVP8.h"
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
#import "WebRTC/RTCVideoDecoderVP9.h"
|
#import "WebRTC/RTCVideoDecoderVP9.h"
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
@implementation RTCDefaultVideoDecoderFactory
|
@implementation RTCDefaultVideoDecoderFactory
|
||||||
|
|
||||||
- (id<RTCVideoDecoder>)createDecoder:(RTCVideoCodecInfo *)info {
|
- (id<RTCVideoDecoder>)createDecoder:(RTCVideoCodecInfo *)info {
|
||||||
if ([info.name isEqualToString:kRTCVideoCodecH264Name]) {
|
if ([info.name isEqualToString:kRTCVideoCodecH264Name]) {
|
||||||
return [[RTCVideoDecoderH264 alloc] init];
|
return [[RTCVideoDecoderH264 alloc] init];
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
} else if ([info.name isEqualToString:kRTCVideoCodecVp8Name]) {
|
} else if ([info.name isEqualToString:kRTCVideoCodecVp8Name]) {
|
||||||
return [RTCVideoDecoderVP8 vp8Decoder];
|
return [RTCVideoDecoderVP8 vp8Decoder];
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
} else if ([info.name isEqualToString:kRTCVideoCodecVp9Name]) {
|
} else if ([info.name isEqualToString:kRTCVideoCodecVp9Name]) {
|
||||||
return [RTCVideoDecoderVP9 vp9Decoder];
|
return [RTCVideoDecoderVP9 vp9Decoder];
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,9 +39,11 @@
|
|||||||
- (NSArray<RTCVideoCodecInfo *> *)supportedCodecs {
|
- (NSArray<RTCVideoCodecInfo *> *)supportedCodecs {
|
||||||
return @[
|
return @[
|
||||||
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name],
|
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name],
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp8Name],
|
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp8Name],
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name]
|
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name],
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,10 +12,12 @@
|
|||||||
|
|
||||||
#import "WebRTC/RTCVideoCodec.h"
|
#import "WebRTC/RTCVideoCodec.h"
|
||||||
#import "WebRTC/RTCVideoCodecH264.h"
|
#import "WebRTC/RTCVideoCodecH264.h"
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
#import "WebRTC/RTCVideoEncoderVP8.h"
|
#import "WebRTC/RTCVideoEncoderVP8.h"
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
#import "WebRTC/RTCVideoEncoderVP9.h"
|
#import "WebRTC/RTCVideoEncoderVP9.h"
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
@implementation RTCDefaultVideoEncoderFactory
|
@implementation RTCDefaultVideoEncoderFactory
|
||||||
|
|
||||||
@ -40,29 +42,36 @@
|
|||||||
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name
|
[[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name
|
||||||
parameters:constrainedBaselineParams];
|
parameters:constrainedBaselineParams];
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
RTCVideoCodecInfo *vp8Info = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp8Name];
|
RTCVideoCodecInfo *vp8Info = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp8Name];
|
||||||
|
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
RTCVideoCodecInfo *vp9Info = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name];
|
RTCVideoCodecInfo *vp9Info = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return @[ constrainedHighInfo,
|
|
||||||
constrainedBaselineInfo,
|
|
||||||
vp8Info,
|
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
|
||||||
vp9Info
|
|
||||||
#endif
|
#endif
|
||||||
];
|
|
||||||
|
return @[
|
||||||
|
constrainedHighInfo,
|
||||||
|
constrainedBaselineInfo,
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
|
vp8Info,
|
||||||
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
|
vp9Info,
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id<RTCVideoEncoder>)createEncoder:(RTCVideoCodecInfo *)info {
|
- (id<RTCVideoEncoder>)createEncoder:(RTCVideoCodecInfo *)info {
|
||||||
if ([info.name isEqualToString:kRTCVideoCodecH264Name]) {
|
if ([info.name isEqualToString:kRTCVideoCodecH264Name]) {
|
||||||
return [[RTCVideoEncoderH264 alloc] initWithCodecInfo:info];
|
return [[RTCVideoEncoderH264 alloc] initWithCodecInfo:info];
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
} else if ([info.name isEqualToString:kRTCVideoCodecVp8Name]) {
|
} else if ([info.name isEqualToString:kRTCVideoCodecVp8Name]) {
|
||||||
return [RTCVideoEncoderVP8 vp8Encoder];
|
return [RTCVideoEncoderVP8 vp8Encoder];
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
} else if ([info.name isEqualToString:kRTCVideoCodecVp9Name]) {
|
} else if ([info.name isEqualToString:kRTCVideoCodecVp9Name]) {
|
||||||
return [RTCVideoEncoderVP9 vp9Encoder];
|
return [RTCVideoEncoderVP9 vp9Encoder];
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,12 +23,14 @@ class AudioProcessing;
|
|||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
namespace cricket {
|
namespace cricket {
|
||||||
|
|
||||||
class WebRtcVideoEncoderFactory;
|
class WebRtcVideoEncoderFactory;
|
||||||
class WebRtcVideoDecoderFactory;
|
class WebRtcVideoDecoderFactory;
|
||||||
|
|
||||||
} // namespace cricket
|
} // namespace cricket
|
||||||
|
#endif
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@ -56,6 +58,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
audioProcessingModule:
|
audioProcessingModule:
|
||||||
(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule;
|
(rtc::scoped_refptr<webrtc::AudioProcessing>)audioProcessingModule;
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
/* Initialize object with legacy injectable native audio/video encoder/decoder factories
|
/* Initialize object with legacy injectable native audio/video encoder/decoder factories
|
||||||
TODO(andersc): Remove this when backwards compatiblity is no longer needed.
|
TODO(andersc): Remove this when backwards compatiblity is no longer needed.
|
||||||
*/
|
*/
|
||||||
@ -67,6 +70,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
legacyNativeVideoEncoderFactory:(cricket::WebRtcVideoEncoderFactory*)videoEncoderFactory
|
legacyNativeVideoEncoderFactory:(cricket::WebRtcVideoEncoderFactory*)videoEncoderFactory
|
||||||
legacyNativeVideoDecoderFactory:(cricket::WebRtcVideoDecoderFactory*)videoDecoderFactory
|
legacyNativeVideoDecoderFactory:(cricket::WebRtcVideoDecoderFactory*)videoDecoderFactory
|
||||||
audioDeviceModule:(nullable webrtc::AudioDeviceModule *)audioDeviceModule;
|
audioDeviceModule:(nullable webrtc::AudioDeviceModule *)audioDeviceModule;
|
||||||
|
#endif
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|||||||
@ -58,6 +58,17 @@
|
|||||||
- (instancetype)init {
|
- (instancetype)init {
|
||||||
#ifdef HAVE_NO_MEDIA
|
#ifdef HAVE_NO_MEDIA
|
||||||
return [self initWithNoMedia];
|
return [self initWithNoMedia];
|
||||||
|
#elif !defined(USE_BUILTIN_SW_CODECS)
|
||||||
|
return [self initWithNativeAudioEncoderFactory:webrtc::CreateBuiltinAudioEncoderFactory()
|
||||||
|
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
|
||||||
|
nativeVideoEncoderFactory:std::unique_ptr<webrtc::VideoEncoderFactory>(
|
||||||
|
new webrtc::ObjCVideoEncoderFactory(
|
||||||
|
[[RTCVideoEncoderFactoryH264 alloc] init]))
|
||||||
|
nativeVideoDecoderFactory:std::unique_ptr<webrtc::VideoDecoderFactory>(
|
||||||
|
new webrtc::ObjCVideoDecoderFactory(
|
||||||
|
[[RTCVideoDecoderFactoryH264 alloc] init]))
|
||||||
|
audioDeviceModule:nullptr
|
||||||
|
audioProcessingModule:nullptr];
|
||||||
#else
|
#else
|
||||||
return [self initWithNativeAudioEncoderFactory:webrtc::CreateBuiltinAudioEncoderFactory()
|
return [self initWithNativeAudioEncoderFactory:webrtc::CreateBuiltinAudioEncoderFactory()
|
||||||
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
|
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
|
||||||
@ -139,6 +150,7 @@
|
|||||||
return [self initWithNoMedia];
|
return [self initWithNoMedia];
|
||||||
#else
|
#else
|
||||||
if (self = [self initNative]) {
|
if (self = [self initNative]) {
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
if (!videoEncoderFactory) {
|
if (!videoEncoderFactory) {
|
||||||
auto legacy_video_encoder_factory = rtc::MakeUnique<webrtc::ObjCVideoEncoderFactory>(
|
auto legacy_video_encoder_factory = rtc::MakeUnique<webrtc::ObjCVideoEncoderFactory>(
|
||||||
[[RTCVideoEncoderFactoryH264 alloc] init]);
|
[[RTCVideoEncoderFactoryH264 alloc] init]);
|
||||||
@ -149,6 +161,7 @@
|
|||||||
[[RTCVideoDecoderFactoryH264 alloc] init]);
|
[[RTCVideoDecoderFactoryH264 alloc] init]);
|
||||||
videoDecoderFactory = ConvertVideoDecoderFactory(std::move(legacy_video_decoder_factory));
|
videoDecoderFactory = ConvertVideoDecoderFactory(std::move(legacy_video_decoder_factory));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
_nativeFactory = webrtc::CreatePeerConnectionFactory(_networkThread.get(),
|
_nativeFactory = webrtc::CreatePeerConnectionFactory(_networkThread.get(),
|
||||||
_workerThread.get(),
|
_workerThread.get(),
|
||||||
_signalingThread.get(),
|
_signalingThread.get(),
|
||||||
@ -165,6 +178,7 @@
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USE_BUILTIN_SW_CODECS)
|
||||||
- (instancetype)
|
- (instancetype)
|
||||||
initWithNativeAudioEncoderFactory:
|
initWithNativeAudioEncoderFactory:
|
||||||
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
(rtc::scoped_refptr<webrtc::AudioEncoderFactory>)audioEncoderFactory
|
||||||
@ -190,6 +204,7 @@
|
|||||||
return self;
|
return self;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
- (RTCAudioSource *)audioSourceWithConstraints:(nullable RTCMediaConstraints *)constraints {
|
- (RTCAudioSource *)audioSourceWithConstraints:(nullable RTCMediaConstraints *)constraints {
|
||||||
std::unique_ptr<webrtc::MediaConstraints> nativeConstraints;
|
std::unique_ptr<webrtc::MediaConstraints> nativeConstraints;
|
||||||
|
|||||||
@ -87,7 +87,6 @@ rtc_static_library("video") {
|
|||||||
"../modules/utility",
|
"../modules/utility",
|
||||||
"../modules/video_coding",
|
"../modules/video_coding",
|
||||||
"../modules/video_coding:video_coding_utility",
|
"../modules/video_coding:video_coding_utility",
|
||||||
"../modules/video_coding:webrtc_vp8_helpers",
|
|
||||||
"../modules/video_processing",
|
"../modules/video_processing",
|
||||||
"../rtc_base:rtc_base_approved",
|
"../rtc_base:rtc_base_approved",
|
||||||
"../rtc_base:rtc_numerics",
|
"../rtc_base:rtc_numerics",
|
||||||
@ -321,7 +320,6 @@ if (rtc_include_tests) {
|
|||||||
"../modules/video_coding:video_codec_interface",
|
"../modules/video_coding:video_codec_interface",
|
||||||
"../modules/video_coding:video_coding_utility",
|
"../modules/video_coding:video_coding_utility",
|
||||||
"../modules/video_coding:webrtc_h264",
|
"../modules/video_coding:webrtc_h264",
|
||||||
"../modules/video_coding:webrtc_vp8",
|
|
||||||
"../modules/video_coding:webrtc_vp8_helpers",
|
"../modules/video_coding:webrtc_vp8_helpers",
|
||||||
"../modules/video_coding:webrtc_vp9",
|
"../modules/video_coding:webrtc_vp9",
|
||||||
"../rtc_base:checks",
|
"../rtc_base:checks",
|
||||||
|
|||||||
@ -19,7 +19,6 @@
|
|||||||
#include "common_video/include/video_bitrate_allocator.h"
|
#include "common_video/include/video_bitrate_allocator.h"
|
||||||
#include "common_video/include/video_frame.h"
|
#include "common_video/include/video_frame.h"
|
||||||
#include "modules/pacing/paced_sender.h"
|
#include "modules/pacing/paced_sender.h"
|
||||||
#include "modules/video_coding/codecs/vp8/temporal_layers.h"
|
|
||||||
#include "modules/video_coding/include/video_codec_initializer.h"
|
#include "modules/video_coding/include/video_codec_initializer.h"
|
||||||
#include "modules/video_coding/include/video_coding.h"
|
#include "modules/video_coding/include/video_coding.h"
|
||||||
#include "modules/video_coding/include/video_coding_defines.h"
|
#include "modules/video_coding/include/video_coding_defines.h"
|
||||||
|
|||||||
@ -139,6 +139,9 @@ declare_args() {
|
|||||||
# as Chromium, must turn this flag off so that WebRTC does not also
|
# as Chromium, must turn this flag off so that WebRTC does not also
|
||||||
# initialize.
|
# initialize.
|
||||||
rtc_initialize_ffmpeg = !build_with_chromium
|
rtc_initialize_ffmpeg = !build_with_chromium
|
||||||
|
|
||||||
|
# Disable this to build without support for built-in software codecs.
|
||||||
|
rtc_use_builtin_sw_codecs = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!build_with_mozilla) {
|
if (!build_with_mozilla) {
|
||||||
|
|||||||
Reference in New Issue
Block a user