From 95adedb9c23fa2fce685de7169c300f1bca555ec Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Mon, 19 Nov 2018 09:52:37 +0100 Subject: [PATCH] Always compile VP9 source files. Instead of optionally compile VP9 source files based on the value of the GN argument 'rtc_libvpx_build_vp9', this CL uses the preprocessor macro RTC_ENABLE_VP9 to decide if VP9 related code needs to be compiled or not. Bug: None Change-Id: I5c1b69d7ec35e8446181d98c912277d0ae8fdba2 Reviewed-on: https://webrtc-review.googlesource.com/c/111063 Commit-Queue: Mirko Bonadei Reviewed-by: Philip Eliasson Cr-Commit-Position: refs/heads/master@{#25685} --- modules/video_coding/BUILD.gn | 21 +++++--------- .../codecs/vp9/{vp9_noop.cc => vp9.cc} | 29 +++++++++++++++---- .../codecs/vp9/vp9_frame_buffer_pool.cc | 4 +++ .../codecs/vp9/vp9_frame_buffer_pool.h | 4 +++ modules/video_coding/codecs/vp9/vp9_impl.cc | 25 +++------------- modules/video_coding/codecs/vp9/vp9_impl.h | 4 +++ 6 files changed, 47 insertions(+), 40 deletions(-) rename modules/video_coding/codecs/vp9/{vp9_noop.cc => vp9.cc} (56%) diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index 4da712b69f..ac359bc64f 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -501,19 +501,14 @@ rtc_static_library("webrtc_vp9_helpers") { rtc_static_library("webrtc_vp9") { visibility = [ "*" ] poisonous = [ "software_video_codecs" ] - if (rtc_libvpx_build_vp9) { - sources = [ - "codecs/vp9/include/vp9.h", - "codecs/vp9/vp9_frame_buffer_pool.cc", - "codecs/vp9/vp9_frame_buffer_pool.h", - "codecs/vp9/vp9_impl.cc", - "codecs/vp9/vp9_impl.h", - ] - } else { - sources = [ - "codecs/vp9/vp9_noop.cc", - ] - } + sources = [ + "codecs/vp9/include/vp9.h", + "codecs/vp9/vp9.cc", + "codecs/vp9/vp9_frame_buffer_pool.cc", + "codecs/vp9/vp9_frame_buffer_pool.h", + "codecs/vp9/vp9_impl.cc", + "codecs/vp9/vp9_impl.h", + ] if (!build_with_chromium && is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). diff --git a/modules/video_coding/codecs/vp9/vp9_noop.cc b/modules/video_coding/codecs/vp9/vp9.cc similarity index 56% rename from modules/video_coding/codecs/vp9/vp9_noop.cc rename to modules/video_coding/codecs/vp9/vp9.cc index 8f9d71c409..59cc66707e 100644 --- a/modules/video_coding/codecs/vp9/vp9_noop.cc +++ b/modules/video_coding/codecs/vp9/vp9.cc @@ -1,43 +1,60 @@ /* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. - * */ -#if defined(RTC_ENABLE_VP9) -#error -#endif // defined(RTC_ENABLE_VP9) - #include "modules/video_coding/codecs/vp9/include/vp9.h" +#include "absl/memory/memory.h" #include "api/video_codecs/sdp_video_format.h" +#include "modules/video_coding/codecs/vp9/vp9_impl.h" #include "rtc_base/checks.h" namespace webrtc { std::vector SupportedVP9Codecs() { +#ifdef RTC_ENABLE_VP9 + // TODO(emircan): Add Profile 2 support after fixing browser_tests. + std::vector supported_formats{SdpVideoFormat( + cricket::kVp9CodecName, + {{kVP9FmtpProfileId, VP9ProfileToString(VP9Profile::kProfile0)}})}; + return supported_formats; +#else return std::vector(); +#endif } std::unique_ptr VP9Encoder::Create() { +#ifdef RTC_ENABLE_VP9 + return absl::make_unique(cricket::VideoCodec()); +#else RTC_NOTREACHED(); return nullptr; +#endif } std::unique_ptr VP9Encoder::Create( const cricket::VideoCodec& codec) { +#ifdef RTC_ENABLE_VP9 + return absl::make_unique(codec); +#else RTC_NOTREACHED(); return nullptr; +#endif } std::unique_ptr VP9Decoder::Create() { +#ifdef RTC_ENABLE_VP9 + return absl::make_unique(); +#else RTC_NOTREACHED(); return nullptr; +#endif } } // namespace webrtc diff --git a/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc b/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc index 69101cb506..ecbda4cb3b 100644 --- a/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc +++ b/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.cc @@ -9,6 +9,8 @@ * */ +#ifdef RTC_ENABLE_VP9 + #include "modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h" #include "vpx/vpx_codec.h" @@ -138,3 +140,5 @@ int32_t Vp9FrameBufferPool::VpxReleaseFrameBuffer(void* user_priv, } } // namespace webrtc + +#endif // RTC_ENABLE_VP9 diff --git a/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h b/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h index 9b035eb94a..02ede24329 100644 --- a/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h +++ b/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h @@ -12,6 +12,8 @@ #ifndef MODULES_VIDEO_CODING_CODECS_VP9_VP9_FRAME_BUFFER_POOL_H_ #define MODULES_VIDEO_CODING_CODECS_VP9_VP9_FRAME_BUFFER_POOL_H_ +#ifdef RTC_ENABLE_VP9 + #include #include "rtc_base/buffer.h" @@ -120,4 +122,6 @@ class Vp9FrameBufferPool { } // namespace webrtc +#endif // RTC_ENABLE_VP9 + #endif // MODULES_VIDEO_CODING_CODECS_VP9_VP9_FRAME_BUFFER_POOL_H_ diff --git a/modules/video_coding/codecs/vp9/vp9_impl.cc b/modules/video_coding/codecs/vp9/vp9_impl.cc index 7dea25fe23..a19316cf28 100644 --- a/modules/video_coding/codecs/vp9/vp9_impl.cc +++ b/modules/video_coding/codecs/vp9/vp9_impl.cc @@ -9,6 +9,8 @@ * */ +#ifdef RTC_ENABLE_VP9 + #include "modules/video_coding/codecs/vp9/vp9_impl.h" #include @@ -124,23 +126,6 @@ ColorSpace ExtractVP9ColorSpace(vpx_color_space_t space_t, } } // namespace -std::vector SupportedVP9Codecs() { - // TODO(emircan): Add Profile 2 support after fixing browser_tests. - std::vector supported_formats{SdpVideoFormat( - cricket::kVp9CodecName, - {{kVP9FmtpProfileId, VP9ProfileToString(VP9Profile::kProfile0)}})}; - return supported_formats; -} - -std::unique_ptr VP9Encoder::Create() { - return absl::make_unique(cricket::VideoCodec()); -} - -std::unique_ptr VP9Encoder::Create( - const cricket::VideoCodec& codec) { - return absl::make_unique(codec); -} - void VP9EncoderImpl::EncoderOutputCodedPacketCallback(vpx_codec_cx_pkt* pkt, void* user_data) { VP9EncoderImpl* enc = static_cast(user_data); @@ -1260,10 +1245,6 @@ VideoEncoder::EncoderInfo VP9EncoderImpl::GetEncoderInfo() const { return info; } -std::unique_ptr VP9Decoder::Create() { - return absl::make_unique(); -} - VP9DecoderImpl::VP9DecoderImpl() : decode_complete_callback_(nullptr), inited_(false), @@ -1458,3 +1439,5 @@ const char* VP9DecoderImpl::ImplementationName() const { } } // namespace webrtc + +#endif // RTC_ENABLE_VP9 diff --git a/modules/video_coding/codecs/vp9/vp9_impl.h b/modules/video_coding/codecs/vp9/vp9_impl.h index a968e4cc03..d26c53d21f 100644 --- a/modules/video_coding/codecs/vp9/vp9_impl.h +++ b/modules/video_coding/codecs/vp9/vp9_impl.h @@ -12,6 +12,8 @@ #ifndef MODULES_VIDEO_CODING_CODECS_VP9_VP9_IMPL_H_ #define MODULES_VIDEO_CODING_CODECS_VP9_VP9_IMPL_H_ +#ifdef RTC_ENABLE_VP9 + #include #include #include @@ -179,4 +181,6 @@ class VP9DecoderImpl : public VP9Decoder { }; } // namespace webrtc +#endif // RTC_ENABLE_VP9 + #endif // MODULES_VIDEO_CODING_CODECS_VP9_VP9_IMPL_H_