Title: [211046] trunk
Revision
211046
Author
[email protected]
Date
2017-01-23 11:32:37 -0800 (Mon, 23 Jan 2017)

Log Message

[WebRTC] Make VP8 optional in libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167257

Patch by Youenn Fablet <[email protected]> on 2017-01-23
Reviewed by Darin Adler.

Source/ThirdParty/libwebrtc:

Reusing strategy used to have VP9 optional for VP8 codec.

* CMakeLists.txt: Updated tocompile and link vp8_noop.cc
* Source/webrtc/media/engine/webrtcvideoengine2.cc:
* Source/webrtc/modules/video_coding/codecs/vp8/include/vp8.h:
* Source/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc:
* Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc: Added.
* Source/webrtc/video/video_encoder.cc:

Tools:

* Scripts/webkitpy/libwebrtc/generate_cmake.py:
(CMakeGenerator.remove_libvpx): Adding vp8_noop.cc to the build system.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/ThirdParty/libwebrtc/CMakeLists.txt (211045 => 211046)


--- trunk/Source/ThirdParty/libwebrtc/CMakeLists.txt	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Source/ThirdParty/libwebrtc/CMakeLists.txt	2017-01-23 19:32:37 UTC (rev 211046)
@@ -155,6 +155,7 @@
     ${LIBWEBRTC_INPUT_DIR}/webrtc/modules/video_coding/video_coding_impl.cc
     ${LIBWEBRTC_INPUT_DIR}/webrtc/modules/video_coding/video_receiver.cc
     ${LIBWEBRTC_INPUT_DIR}/webrtc/modules/video_coding/video_sender.cc
+    ${LIBWEBRTC_INPUT_DIR}/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc
     ${LIBWEBRTC_INPUT_DIR}/webrtc/modules/video_coding/codecs/vp9/vp9_noop.cc)
 add_library(WebrtcModulesVideo_CodingVideo_Coding STATIC ${WebrtcModulesVideo_CodingVideo_Coding_SOURCES})
 target_compile_options(WebrtcModulesVideo_CodingVideo_Coding PRIVATE "-fno-strict-aliasing" "-fstack-protector-strong" "-fcolor-diagnostics" "-arch" "x86_64" "-gdwarf-2" "-mmacosx-version-min=10.9" "-Wall" "-Werror" "-Wextra" "-Wpartial-availability" "-Wno-missing-field-initializers" "-Wno-unused-parameter" "-Wno-c++11-narrowing" "-Wno-covered-switch-default" "-Wno-deprecated-register" "-Wno-unneeded-internal-declaration" "-Wno-inconsistent-missing-override" "-Wno-shift-negative-value" "-O0" "-fvisibility=hidden" "-Wheader-hygiene" "-Wstring-conversion" "-Wno-strict-overflow" "-Wimplicit-fallthrough" "-Wthread-safety" "-Winconsistent-missing-override" "-Wundef" "-std=c99&
 quot; "-fno-threadsafe-statics" "-fvisibility-inlines-hidden" "-Wno-undefined-bool-conversion" "-Wno-tautological-undefined-compare" "-stdlib=libc++" "-fno-rtti" "-fno-exceptions" "-Wnon-virtual-dtor" "-Woverloaded-virtual" "-Wobjc-missing-property-synthesis" "-fobjc-call-cxx-cdtors")
@@ -4218,6 +4219,7 @@
 CMakeFiles/WebrtcModulesVideo_CodingVideo_Coding.dir/Source/webrtc/modules/video_coding/session_info.cc.o
 CMakeFiles/WebrtcModulesVideo_CodingVideo_Coding.dir/Source/webrtc/modules/video_coding/packet.cc.o
 CMakeFiles/WebrtcModulesVideo_CodingVideo_Coding.dir/Source/webrtc/modules/video_coding/timestamp_map.cc.o
+CMakeFiles/WebrtcModulesVideo_CodingVideo_Coding.dir/Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc.o
 CMakeFiles/WebrtcModulesVideo_CodingVideo_Coding.dir/Source/webrtc/modules/video_coding/inter_frame_delay.cc.o
 CMakeFiles/WebrtcModulesVideo_CodingVideo_Coding.dir/Source/webrtc/modules/video_coding/h264_sps_pps_tracker.cc.o
 CMakeFiles/WebrtcModulesVideo_CodingVideo_Coding.dir/Source/webrtc/modules/video_coding/frame_buffer2.cc.o

Modified: trunk/Source/ThirdParty/libwebrtc/ChangeLog (211045 => 211046)


--- trunk/Source/ThirdParty/libwebrtc/ChangeLog	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Source/ThirdParty/libwebrtc/ChangeLog	2017-01-23 19:32:37 UTC (rev 211046)
@@ -1,3 +1,19 @@
+2017-01-23  Youenn Fablet  <[email protected]>
+
+        [WebRTC] Make VP8 optional in libwebrtc
+        https://bugs.webkit.org/show_bug.cgi?id=167257
+
+        Reviewed by Darin Adler.
+
+        Reusing strategy used to have VP9 optional for VP8 codec.
+
+        * CMakeLists.txt: Updated tocompile and link vp8_noop.cc
+        * Source/webrtc/media/engine/webrtcvideoengine2.cc:
+        * Source/webrtc/modules/video_coding/codecs/vp8/include/vp8.h:
+        * Source/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc:
+        * Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc: Added.
+        * Source/webrtc/video/video_encoder.cc:
+
 2017-01-20  Youenn Fablet  <[email protected]>
 
         [WebRTC] Update build system to make G711 optional in libwebrtc

Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/media/engine/webrtcvideoengine2.cc (211045 => 211046)


--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/media/engine/webrtcvideoengine2.cc	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/media/engine/webrtcvideoengine2.cc	2017-01-23 19:32:37 UTC (rev 211046)
@@ -115,10 +115,13 @@
       const cricket::VideoCodec& codec) override {
     RTC_DCHECK(factory_ != NULL);
     // If it's a codec type we can simulcast, create a wrapped encoder.
+#ifndef RTC_DISABLE_VP8
+    ASSERT(webrtc::VP8Encoder::IsSupported());
     if (CodecNamesEq(codec.name.c_str(), kVp8CodecName)) {
       return new webrtc::SimulcastEncoderAdapter(
           new EncoderFactoryAdapter(factory_));
     }
+#endif
     webrtc::VideoEncoder* encoder = factory_->CreateVideoEncoder(codec);
     if (encoder) {
       non_simulcast_encoders_.push_back(encoder);
@@ -430,9 +433,11 @@
 
 std::vector<VideoCodec> DefaultVideoCodecList() {
   std::vector<VideoCodec> codecs;
-  AddCodecAndMaybeRtxCodec(
+  if (webrtc::VP8Encoder::IsSupported() && webrtc::VP8Decoder::IsSupported()) {
+    AddCodecAndMaybeRtxCodec(
       MakeVideoCodecWithDefaultFeedbackParams(kDefaultVp8PlType, kVp8CodecName),
       &codecs);
+  }
   if (webrtc::VP9Encoder::IsSupported() && webrtc::VP9Decoder::IsSupported()) {
     AddCodecAndMaybeRtxCodec(MakeVideoCodecWithDefaultFeedbackParams(
                                  kDefaultVp9PlType, kVp9CodecName),

Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/include/vp8.h (211045 => 211046)


--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/include/vp8.h	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/include/vp8.h	2017-01-23 19:32:37 UTC (rev 211046)
@@ -19,6 +19,7 @@
 
 class VP8Encoder : public VideoEncoder {
  public:
+  static bool IsSupported();
   static VP8Encoder* Create();
 
   virtual ~VP8Encoder() {}
@@ -26,6 +27,7 @@
 
 class VP8Decoder : public VideoDecoder {
  public:
+  static bool IsSupported();
   static VP8Decoder* Create();
 
   virtual ~VP8Decoder() {}

Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc (211045 => 211046)


--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc	2017-01-23 19:32:37 UTC (rev 211046)
@@ -103,10 +103,18 @@
 }
 }  // namespace
 
+bool VP8Encoder::IsSupported() {
+  return true;
+}
+
 VP8Encoder* VP8Encoder::Create() {
   return new VP8EncoderImpl();
 }
 
+bool VP8Decoder::IsSupported() {
+  return true;
+}
+
 VP8Decoder* VP8Decoder::Create() {
   return new VP8DecoderImpl();
 }

Added: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc (0 => 211046)


--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc	                        (rev 0)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc	2017-01-23 19:32:37 UTC (rev 211046)
@@ -0,0 +1,39 @@
+/*
+ *  Copyright (c) 2017 Apple Inc. 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_DISABLE_VP8)
+#error
+#endif  // !defined(RTC_DISABLE_VP8)
+
+#include "webrtc/base/checks.h"
+#include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h"
+
+namespace webrtc {
+
+bool VP8Encoder::IsSupported() {
+  return false;
+}
+
+VP8Encoder* VP8Encoder::Create() {
+  RTC_NOTREACHED();
+  return nullptr;
+}
+
+bool VP8Decoder::IsSupported() {
+  return false;
+}
+
+VP8Decoder* VP8Decoder::Create() {
+  RTC_NOTREACHED();
+  return nullptr;
+}
+
+}  // namespace webrtc

Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/video/video_encoder.cc (211045 => 211046)


--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/video/video_encoder.cc	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/video/video_encoder.cc	2017-01-23 19:32:37 UTC (rev 211046)
@@ -39,7 +39,7 @@
     case kH264:
       return H264Encoder::IsSupported();
     case kVp8:
-      return true;
+      return VP8Encoder::IsSupported();
     case kVp9:
       return VP9Encoder::IsSupported();
     case kUnsupportedCodec:

Modified: trunk/Tools/ChangeLog (211045 => 211046)


--- trunk/Tools/ChangeLog	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Tools/ChangeLog	2017-01-23 19:32:37 UTC (rev 211046)
@@ -1,3 +1,13 @@
+2017-01-23  Youenn Fablet  <[email protected]>
+
+        [WebRTC] Make VP8 optional in libwebrtc
+        https://bugs.webkit.org/show_bug.cgi?id=167257
+
+        Reviewed by Darin Adler.
+
+        * Scripts/webkitpy/libwebrtc/generate_cmake.py:
+        (CMakeGenerator.remove_libvpx): Adding vp8_noop.cc to the build system.
+
 2017-01-23  Jer Noble  <[email protected]>
 
         Video details does not apear and missing scrubber in Control Center

Modified: trunk/Tools/Scripts/webkitpy/libwebrtc/generate_cmake.py (211045 => 211046)


--- trunk/Tools/Scripts/webkitpy/libwebrtc/generate_cmake.py	2017-01-23 19:23:34 UTC (rev 211045)
+++ trunk/Tools/Scripts/webkitpy/libwebrtc/generate_cmake.py	2017-01-23 19:32:37 UTC (rev 211046)
@@ -281,6 +281,8 @@
         target = self.targets["//webrtc/modules/video_coding:video_coding"]
         target["defines"].append("RTC_DISABLE_VP8")
         target["defines"].append("RTC_DISABLE_VP9")
+        target["sources"].append("//webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc")
+        target["source_outputs"]["//webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc"] = ["obj/webrtc/modules/video_coding/webrtc_vp8/vp8_noop.o"]
         target["sources"].append("//webrtc/modules/video_coding/codecs/vp9/vp9_noop.cc")
         target["source_outputs"]["//webrtc/modules/video_coding/codecs/vp9/vp9_noop.cc"] = ["obj/webrtc/modules/video_coding/webrtc_vp9/vp9_noop.o"]
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to