Add VP8 support to WebRTC
authoryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 27 Sep 2018 17:16:47 +0000 (17:16 +0000)
committeryouenn@apple.com <youenn@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 27 Sep 2018 17:16:47 +0000 (17:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=189976

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-expected.txt:

Source/ThirdParty/libwebrtc:

Add support for conditional VP8 support for both encoding and decoding.
This boolean is used by WebCore based on the new VP8 runtime flag.

Compilation is done without using SSE4/AVX2 optimizations.

* Configurations/libvpx.xcconfig: Added.
* Configurations/libwebrtc.iOS.exp:
* Configurations/libwebrtc.iOSsim.exp:
* Configurations/libwebrtc.mac.exp:
* Configurations/libwebrtc.xcconfig:
* Configurations/libwebrtcpcrtc.xcconfig:
* Source/third_party/libvpx/run_yasm_webkit.py: Added.
* Source/third_party/libvpx/source/config/mac/x64/vpx_config.asm:
* Source/third_party/libvpx/source/config/mac/x64/vpx_config.h:
* Source/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h:
* Source/webrtc/sdk/WebKit/WebKitUtilities.h:
* Source/webrtc/sdk/WebKit/WebKitUtilities.mm:
(webrtc::createWebKitEncoderFactory):
(webrtc::createWebKitDecoderFactory):
* Source/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h:
* libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Add a runtime flag to control activation of VP8 codec.
Bind this runtime flag to the video codec factories.
Test: webrtc/video-mute-vp8.html

* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::createLibWebRTCPeerConnectionBackend):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::webRTCVP8CodecEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
Enable VP8 codec for tests.

Source/WebKit:

* Shared/WebPreferences.yaml:

LayoutTests:

* webrtc/audio-peer-connection-g722.html:
* webrtc/routines.js:
* webrtc/video-mute-vp8-expected.txt: Added.
* webrtc/video-mute-vp8.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236557 268f45cc-cd09-0410-ab3c-d52691b4dbfc

81 files changed:
LayoutTests/ChangeLog
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-expected.txt
LayoutTests/webrtc/audio-peer-connection-g722.html
LayoutTests/webrtc/routines.js
LayoutTests/webrtc/video-mute-vp8-expected.txt [new file with mode: 0644]
LayoutTests/webrtc/video-mute-vp8.html [new file with mode: 0644]
Source/ThirdParty/libwebrtc/ChangeLog
Source/ThirdParty/libwebrtc/Configurations/libvpx.xcconfig [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp
Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp
Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp
Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig
Source/ThirdParty/libwebrtc/Configurations/libwebrtcpcrtc.xcconfig
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/run_yasm_webkit.py [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/config/mac/x64/vp8_rtcd.h
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/config/mac/x64/vpx_config.asm
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/config/mac/x64/vpx_config.h
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/.gitignore [deleted file]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse3.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/dequantize_mmx.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_mmx.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/iwalsh_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/mfqe_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_mmx.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_mmx.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_ssse3.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/dct_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/encodeopt.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/fwalsh_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/common/x86/vp9_mfqe_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_error_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/add_noise_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/avg_ssse3_x86_64.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/deblock_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_intrapred_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_ssse3.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_wht_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad4d_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse3.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse4.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_ssse3.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/ssim_opt_x86_64.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subpel_variance_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subtract_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_ports/emms.asm.o [new file with mode: 0644]
Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc [deleted file]
Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitUtilities.h
Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitUtilities.mm
Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj
Source/WebCore/ChangeLog
Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp
Source/WebCore/page/RuntimeEnabledFeatures.h
Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h
Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp
Source/WebCore/testing/Internals.cpp
Source/WebKit/ChangeLog
Source/WebKit/Shared/WebPreferences.yaml

index ff7119f..ca85f0c 100644 (file)
@@ -1,5 +1,17 @@
 2018-09-27  Youenn Fablet  <youenn@apple.com>
 
+        Add VP8 support to WebRTC
+        https://bugs.webkit.org/show_bug.cgi?id=189976
+
+        Reviewed by Eric Carlson.
+
+        * webrtc/audio-peer-connection-g722.html:
+        * webrtc/routines.js:
+        * webrtc/video-mute-vp8-expected.txt: Added.
+        * webrtc/video-mute-vp8.html: Added.
+
+2018-09-27  Youenn Fablet  <youenn@apple.com>
+
         LayoutTest webrtc/video-unmute.html is a flaky timeout
         https://bugs.webkit.org/show_bug.cgi?id=172879
         <rdar://problem/32548738>
index b5a62b7..a8d32b0 100644 (file)
@@ -1,3 +1,12 @@
+2018-09-27  Youenn Fablet  <youenn@apple.com>
+
+        Add VP8 support to WebRTC
+        https://bugs.webkit.org/show_bug.cgi?id=189976
+
+        Reviewed by Eric Carlson.
+
+        * web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-expected.txt:
+
 2018-09-27  Chris Dumez  <cdumez@apple.com>
 
         document.open() should not propagate URLs to non-fully active documents
index 2598853..004c80a 100644 (file)
@@ -1,25 +1,25 @@
 
-FAIL Add null candidate should reject with TypeError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
+FAIL Add null candidate should reject with TypeError assert_unreached: Should have rejected: undefined Reached unreachable code
 FAIL Add ICE candidate before setting remote description should reject with InvalidStateError assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Add ICE candidate after setting remote description should succeed promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add ICE candidate with RTCIceCandidate should succeed promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with only valid sdpMid should succeed promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with only valid sdpMLineIndex should succeed promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL addIceCandidate with first sdpMid and sdpMLineIndex add candidate to first media stream promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL addIceCandidate with second sdpMid and sdpMLineIndex should add candidate to second media stream promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate for first media stream with null ufrag should add candidate to first media stream promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Adding multiple candidates should add candidates to their corresponding media stream promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add with empty candidate string (end of candidate) should succeed promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with both sdpMid and sdpMLineIndex manually set to null should reject with TypeError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with only valid candidate string should reject with TypeError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with invalid candidate string and both sdpMid and sdpMLineIndex null should reject with TypeError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with empty dict should reject with TypeError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with manually filled default values should reject with TypeError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with invalid sdpMid should reject with OperationError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with invalid sdpMLineIndex should reject with OperationError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Invalid sdpMLineIndex should be ignored if valid sdpMid is provided promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate for media stream 2 with null ufrag should succeed promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with invalid ufrag should reject with OperationError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with invalid candidate string should reject with OperationError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
-FAIL Add candidate with sdpMid belonging to different ufrag should reject with OperationError promise_test: Unhandled rejection with value: object "OperationError: Failed to set remote offer sdp: Failed to set remote video description send parameters."
+PASS Add ICE candidate after setting remote description should succeed 
+PASS Add ICE candidate with RTCIceCandidate should succeed 
+FAIL Add candidate with only valid sdpMid should succeed promise_test: Unhandled rejection with value: object "OperationError: Expect line: candidate:<candidate-str>"
+FAIL Add candidate with only valid sdpMLineIndex should succeed promise_test: Unhandled rejection with value: object "OperationError: Expect line: candidate:<candidate-str>"
+FAIL addIceCandidate with first sdpMid and sdpMLineIndex add candidate to first media stream assert_true: Expect candidate line to be found between media lines m=audio and m=video expected true got false
+FAIL addIceCandidate with second sdpMid and sdpMLineIndex should add candidate to second media stream assert_true: Expect candidate line to be found after media line m=video expected true got false
+FAIL Add candidate for first media stream with null ufrag should add candidate to first media stream assert_true: Expect candidate line to be found between media lines m=audio and m=video expected true got false
+FAIL Adding multiple candidates should add candidates to their corresponding media stream assert_true: Expect candidate line to be found between media lines m=audio and m=video expected true got false
+FAIL Add with empty candidate string (end of candidate) should succeed promise_test: Unhandled rejection with value: object "OperationError: Expect line: candidate:<candidate-str>"
+PASS Add candidate with both sdpMid and sdpMLineIndex manually set to null should reject with TypeError 
+PASS Add candidate with only valid candidate string should reject with TypeError 
+PASS Add candidate with invalid candidate string and both sdpMid and sdpMLineIndex null should reject with TypeError 
+PASS Add candidate with empty dict should reject with TypeError 
+PASS Add candidate with manually filled default values should reject with TypeError 
+FAIL Add candidate with invalid sdpMid should reject with OperationError assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Add candidate with invalid sdpMLineIndex should reject with OperationError assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS Invalid sdpMLineIndex should be ignored if valid sdpMid is provided 
+FAIL Add candidate for media stream 2 with null ufrag should succeed assert_true: Expect candidate line to be found after media line m=video expected true got false
+FAIL Add candidate with invalid ufrag should reject with OperationError assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS Add candidate with invalid candidate string should reject with OperationError 
+FAIL Add candidate with sdpMid belonging to different ufrag should reject with OperationError assert_unreached: Should have rejected: undefined Reached unreachable code
 
index 78a6d80..4b549be 100644 (file)
@@ -32,13 +32,6 @@ async function checkForHumBipBop(stream, previousResults, counter)
     return results;
 }
 
-function setCodec(sdp, codec)
-{
-    return sdp.split('\r\n').filter(line => {
-        return line.indexOf('a=fmtp') === -1 && line.indexOf('a=rtcp-fb') === -1 && (line.indexOf('a=rtpmap') === -1 || line.indexOf(codec) !== -1);
-    }).join('\r\n');
-}
-
 promise_test(async (test) => {
     if (window.testRunner)
         testRunner.setUserMediaPermission(true);
index 2fb0dc7..c9de505 100644 (file)
@@ -204,3 +204,10 @@ async function checkVideoBlack(expected, canvas, video, errorMessage, counter)
     await waitFor(50);
     return checkVideoBlack(expected, canvas, video, errorMessage, ++counter);
 }
+
+function setCodec(sdp, codec)
+{
+    return sdp.split('\r\n').filter(line => {
+        return line.indexOf('a=fmtp') === -1 && line.indexOf('a=rtcp-fb') === -1 && (line.indexOf('a=rtpmap') === -1 || line.indexOf(codec) !== -1);
+    }).join('\r\n');
+}
diff --git a/LayoutTests/webrtc/video-mute-vp8-expected.txt b/LayoutTests/webrtc/video-mute-vp8-expected.txt
new file mode 100644 (file)
index 0000000..0a25875
--- /dev/null
@@ -0,0 +1,11 @@
+Video should be running, go to black and running.
+Following, should be a snapshot of the video, a black frame and a snapshot of the video.
+  
+
+PASS Setting video exchange 
+PASS Ensuring connection state is connected 
+PASS Track is enabled, video should not be black 
+PASS Track is disabled, video should be black 
+PASS If disabled, black frames should still be coming 
+PASS Track is enabled, video should not be black 
+
diff --git a/LayoutTests/webrtc/video-mute-vp8.html b/LayoutTests/webrtc/video-mute-vp8.html
new file mode 100644 (file)
index 0000000..d5604a0
--- /dev/null
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Testing muting video</title>
+        <script src="../resources/testharness.js"></script>
+        <script src="../resources/testharnessreport.js"></script>
+    </head>
+    <body>
+        <div>Video should be running, go to black and running.</div>
+        <div>Following, should be a snapshot of the video, a black frame and a snapshot of the video.</div>
+        <video id="video" autoplay playsInline width="320" height="240"></video>
+        <canvas id="canvas1" width="320" height="240"></canvas>
+        <canvas id="canvas2" width="320" height="240"></canvas>
+        <canvas id="canvas3" width="320" height="240"></canvas>
+        <script src ="routines.js"></script>
+        <script>
+var track;
+var remoteTrack;
+var receivingConnection;
+promise_test((test) => {
+    if (window.testRunner)
+        testRunner.setUserMediaPermission(true);
+
+    return navigator.mediaDevices.getUserMedia({video: {width: 320, height: 240, facingMode: "environment"}}).then((localStream) => {
+        return new Promise((resolve, reject) => {
+            track = localStream.getVideoTracks()[0];
+
+            createConnections((firstConnection) => {
+                firstConnection.addTrack(track, localStream);
+            }, (secondConnection) => {
+                receivingConnection = secondConnection;
+                secondConnection.ontrack = (trackEvent) => {
+                    remoteTrack = trackEvent.track;
+                    resolve(trackEvent.streams[0]);
+                };
+            }, { observeOffer : (offer) => {
+                offer.sdp = setCodec(offer.sdp, "VP8");
+                return offer;
+            }
+            });
+            setTimeout(() => reject("Test timed out"), 5000);
+        });
+    }).then((remoteStream) => {
+        video.srcObject = remoteStream;
+        return video.play();
+    });
+}, "Setting video exchange");
+
+promise_test(() => {
+    if (receivingConnection.connectionState === "connected")
+        return Promise.resolve();
+    return new Promise((resolve, reject) => {
+        receivingConnection.onconnectionstatechange = () => {
+            if (receivingConnection.connectionState === "connected")
+                resolve();
+        };
+        setTimeout(() => reject("Test timed out"), 5000);
+    });
+}, "Ensuring connection state is connected");
+
+promise_test((test) => {
+    return checkVideoBlack(false, canvas1, video);
+}, "Track is enabled, video should not be black");
+
+promise_test((test) => {
+    track.enabled = false;
+    return checkVideoBlack(true, canvas2, video);
+}, "Track is disabled, video should be black");
+
+async function getInboundRTPStatsNumberOfDecodedFrames(connection)
+{
+    var report = await connection.getStats();
+    var framesDecoded;
+    report.forEach((statItem) => {
+        if (statItem.type === "inbound-rtp")
+            framesDecoded = statItem.framesDecoded;
+    });
+    return framesDecoded;
+}
+
+async function testFrameDecodedIncreased(connection, count, previousFramesNumber)
+{
+    if (previousFramesNumber === undefined) {
+        let number = await getInboundRTPStatsNumberOfDecodedFrames(connection);
+        await waitFor(1000);
+        return testFrameDecodedIncreased(connection, 0, number);
+    }
+
+    var number = await getInboundRTPStatsNumberOfDecodedFrames(connection);
+    if (previousFramesNumber && number > previousFramesNumber)
+        return;
+
+    if (count >= 20)
+        return Promise.reject("test increasing frame encoded timed out");
+
+    await waitFor(1000);
+    return testFrameDecodedIncreased(connection, ++count, previousFramesNumber);
+}
+
+promise_test((test) => {
+    return testFrameDecodedIncreased(receivingConnection);
+}, "If disabled, black frames should still be coming");
+
+promise_test((test) => {
+    track.enabled = true;
+    return checkVideoBlack(false, canvas2, video);
+}, "Track is enabled, video should not be black");
+
+        </script>
+    </body>
+</html>
index f210328..8f9192d 100644 (file)
@@ -1,3 +1,32 @@
+2018-09-27  Youenn Fablet  <youenn@apple.com>
+
+        Add VP8 support to WebRTC
+        https://bugs.webkit.org/show_bug.cgi?id=189976
+
+        Reviewed by Eric Carlson.
+
+        Add support for conditional VP8 support for both encoding and decoding.
+        This boolean is used by WebCore based on the new VP8 runtime flag.
+
+        Compilation is done without using SSE4/AVX2 optimizations.
+
+        * Configurations/libvpx.xcconfig: Added.
+        * Configurations/libwebrtc.iOS.exp:
+        * Configurations/libwebrtc.iOSsim.exp:
+        * Configurations/libwebrtc.mac.exp:
+        * Configurations/libwebrtc.xcconfig:
+        * Configurations/libwebrtcpcrtc.xcconfig:
+        * Source/third_party/libvpx/run_yasm_webkit.py: Added.
+        * Source/third_party/libvpx/source/config/mac/x64/vpx_config.asm:
+        * Source/third_party/libvpx/source/config/mac/x64/vpx_config.h:
+        * Source/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h:
+        * Source/webrtc/sdk/WebKit/WebKitUtilities.h:
+        * Source/webrtc/sdk/WebKit/WebKitUtilities.mm:
+        (webrtc::createWebKitEncoderFactory):
+        (webrtc::createWebKitDecoderFactory):
+        * Source/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h:
+        * libwebrtc.xcodeproj/project.pbxproj:
+
 2018-09-26  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed, rolling out r236498.
diff --git a/Source/ThirdParty/libwebrtc/Configurations/libvpx.xcconfig b/Source/ThirdParty/libwebrtc/Configurations/libvpx.xcconfig
new file mode 100644 (file)
index 0000000..ae288c5
--- /dev/null
@@ -0,0 +1,20 @@
+PRODUCT_NAME = vpx;
+
+CLANG_WARN_BOOL_CONVERSION = YES;
+CLANG_WARN_ENUM_CONVERSION = YES;
+CLANG_WARN_INT_CONVERSION = YES;
+GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
+COMBINE_HIDPI_IMAGES = NO;
+ENABLE_STRICT_OBJC_MSGSEND = YES;
+
+HEADER_SEARCH_PATHS[sdk=macos*] = Source/third_party/libvpx/source/config/mac/x64 Source/third_party/libvpx/source/libvpx Source/third_party/libvpx/source/config;
+HEADER_SEARCH_PATHS[sdk=iphonesimulator*] = Source/third_party/libvpx/source/config/mac/x64 Source/third_party/libvpx/source/libvpx Source/third_party/libvpx/source/config;
+HEADER_SEARCH_PATHS[sdk=iphoneos*] = Source/third_party/libvpx/source/config/ios/arm64 Source/third_party/libvpx/source/libvpx Source/third_party/libvpx/source/config;
+
+INSTALL_PATH = /usr/local/lib;
+PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
+USE_HEADERMAP = NO;
+
+EXCLUDED_SOURCE_FILE_NAMES[sdk=macos*] = *_neon.c arm_cpudetect.c *_arm.c sad.c
+EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*] = *_neon.c arm_cpudetect.c *_arm.c sad.c
+EXCLUDED_SOURCE_FILE_NAMES[sdk=iphoneos*] = *_sse2.c *_ssse3.c *_sse4.c *_avx2.c *_avx.c *_sse2.asm.o *_sse3.asm.o
index 99c56c3..87535d5 100644 (file)
@@ -105,8 +105,8 @@ __ZN6webrtc32CreateBuiltinAudioEncoderFactoryEv
 __ZN6webrtc27SessionDescriptionInterface16RemoveCandidatesERKNSt3__16vectorIN7cricket9CandidateENS1_9allocatorIS4_EEEE
 __ZNK6webrtc21IceCandidateInterface10server_urlEv
 __ZN6webrtc20setApplicationStatusEb
-__ZN6webrtc26createWebKitDecoderFactoryEv
-__ZN6webrtc26createWebKitEncoderFactoryEv
+__ZN6webrtc26createWebKitDecoderFactoryENS_18WebKitCodecSupportE
+__ZN6webrtc26createWebKitEncoderFactoryENS_18WebKitCodecSupportE
 __ZN6webrtc29setH264HardwareEncoderAllowedEb
 __ZN6webrtc20pixelBufferFromFrameERKNS_10VideoFrameERKNSt3__18functionIFP10__CVBuffermmEEE
 __ZN6webrtc18pixelBufferToFrameEP10__CVBuffer
index 34e55b7..0fa9c14 100644 (file)
@@ -105,8 +105,8 @@ __ZN6webrtc32CreateBuiltinAudioEncoderFactoryEv
 __ZN6webrtc27SessionDescriptionInterface16RemoveCandidatesERKNSt3__16vectorIN7cricket9CandidateENS1_9allocatorIS4_EEEE
 __ZNK6webrtc21IceCandidateInterface10server_urlEv
 __ZN6webrtc20setApplicationStatusEb
-__ZN6webrtc26createWebKitDecoderFactoryEv
-__ZN6webrtc26createWebKitEncoderFactoryEv
+__ZN6webrtc26createWebKitDecoderFactoryENS_18WebKitCodecSupportE
+__ZN6webrtc26createWebKitEncoderFactoryENS_18WebKitCodecSupportE
 __ZN6webrtc29setH264HardwareEncoderAllowedEb
 __ZN6webrtc20pixelBufferFromFrameERKNS_10VideoFrameERKNSt3__18functionIFP10__CVBuffermmEEE
 __ZN6webrtc18pixelBufferToFrameEP10__CVBuffer
index 34e55b7..0fa9c14 100644 (file)
@@ -105,8 +105,8 @@ __ZN6webrtc32CreateBuiltinAudioEncoderFactoryEv
 __ZN6webrtc27SessionDescriptionInterface16RemoveCandidatesERKNSt3__16vectorIN7cricket9CandidateENS1_9allocatorIS4_EEEE
 __ZNK6webrtc21IceCandidateInterface10server_urlEv
 __ZN6webrtc20setApplicationStatusEb
-__ZN6webrtc26createWebKitDecoderFactoryEv
-__ZN6webrtc26createWebKitEncoderFactoryEv
+__ZN6webrtc26createWebKitDecoderFactoryENS_18WebKitCodecSupportE
+__ZN6webrtc26createWebKitEncoderFactoryENS_18WebKitCodecSupportE
 __ZN6webrtc29setH264HardwareEncoderAllowedEb
 __ZN6webrtc20pixelBufferFromFrameERKNS_10VideoFrameERKNSt3__18functionIFP10__CVBuffermmEEE
 __ZN6webrtc18pixelBufferToFrameEP10__CVBuffer
index 62a1196..c148706 100644 (file)
@@ -18,7 +18,7 @@ DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_ = $(DYLIB_INSTALL_NAME_BASE);
 DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_YES = @loader_path/../../../;
 
 GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
-HEADER_SEARCH_PATHS = Source Source/third_party/jsoncpp/source/include Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/third_party/usrsctp/usrsctplib Source/third_party/usrsctp/usrsctplib/usrsctplib Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet Source/webrtc/modules/audio_device/ios;
+HEADER_SEARCH_PATHS = Source Source/third_party/jsoncpp/source/include Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/third_party/usrsctp Source/third_party/usrsctp/usrsctplib Source/third_party/usrsctp/usrsctplib/usrsctplib Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx;
 
 PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
 USE_HEADERMAP = NO;
@@ -26,7 +26,7 @@ INSTALLHDRS_SCRIPT_PHASE = YES;
 WARNING_CFLAGS = -Wno-deprecated-declarations $(inherited);
 
 // FIXME: Set WEBRTC_USE_BUILTIN_ISAC_FIX and WEBRTC_USE_BUILTIN_ISAC_FLOAT for iOS and Mac
-GCC_PREPROCESSOR_DEFINITIONS = GTEST_RELATIVE_PATH WEBRTC_OPUS_SUPPORT_120MS_PTIME=0 WEBRTC_POSIX WEBRTC_MAC SSL_USE_OPENSSL FEATURE_ENABLE_SSL HAVE_SRTP HAVE_OPENSSL_SSL_H SCTP_PROCESS_LEVEL_LOCKS SCTP_SIMPLE_ALLOCATOR SCTP_USE_OPENSSL_SHA1 __Userspace__ HAVE_SA_LEN HAVE_SCONN_LEN __APPLE_USE_RFC_2292 __Userspace_os_Darwin NON_WINDOWS_DEFINE HAVE_WEBRTC_VIDEO HAVE_WEBRTC_VOICE WEBRTC_INTELLIGIBILITY_ENHANCER=0 WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_NS_FLOAT WEBRTC_USE_BUILTIN_ILBC WEBRTC_CODEC_ILBC WEBRTC_USE_BUILTIN_OPUS WEBRTC_CODEC_OPUS WEBRTC_CODEC_ISAC WEBRTC_CODEC_RED RTC_DISABLE_VP9 RTC_DISABLE_VP8 HAVE_STDINT_H HAVE_STDLIB_H HAVE_UINT64_T OPENSSL HAVE_CONFIG_H WEBRTC_WEBKIT_BUILD HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE  HAVE_SCTP WEBRTC_CODEC_G711 WEBRTC_CODEC_G722 WEBRTC_OPUS_VARIABLE_COMPLEXITY=0 WEBRTC_USE_BUILTIN_ISAC_FIX=1 WEBRTC_USE_BUILTIN_ISAC_FLOAT=0 USE_BUILTIN_SW_CODECS $(inherited);
+GCC_PREPROCESSOR_DEFINITIONS = GTEST_RELATIVE_PATH WEBRTC_OPUS_SUPPORT_120MS_PTIME=0 WEBRTC_POSIX WEBRTC_MAC SSL_USE_OPENSSL FEATURE_ENABLE_SSL HAVE_SRTP HAVE_OPENSSL_SSL_H SCTP_PROCESS_LEVEL_LOCKS SCTP_SIMPLE_ALLOCATOR SCTP_USE_OPENSSL_SHA1 __Userspace__ HAVE_SA_LEN HAVE_SCONN_LEN __APPLE_USE_RFC_2292 __Userspace_os_Darwin NON_WINDOWS_DEFINE HAVE_WEBRTC_VIDEO HAVE_WEBRTC_VOICE WEBRTC_INTELLIGIBILITY_ENHANCER=0 WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_NS_FLOAT WEBRTC_USE_BUILTIN_ILBC WEBRTC_CODEC_ILBC WEBRTC_USE_BUILTIN_OPUS WEBRTC_CODEC_OPUS WEBRTC_CODEC_ISAC WEBRTC_CODEC_RED RTC_DISABLE_VP9 HAVE_STDINT_H HAVE_STDLIB_H HAVE_UINT64_T OPENSSL HAVE_CONFIG_H WEBRTC_WEBKIT_BUILD HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE  HAVE_SCTP WEBRTC_CODEC_G711 WEBRTC_CODEC_G722 WEBRTC_OPUS_VARIABLE_COMPLEXITY=0 WEBRTC_USE_BUILTIN_ISAC_FIX=1 WEBRTC_USE_BUILTIN_ISAC_FLOAT=0 USE_BUILTIN_SW_CODECS $(inherited);
 
 GCC_PREPROCESSOR_DEFINITIONS[sdk=macosx*] = $(inherited) WEBRTC_USE_VTB_HARDWARE_ENCODER;
 GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) WEBRTC_IOS;
index ce2136d..9af9b1f 100644 (file)
@@ -12,7 +12,7 @@ INSTALL_PATH = /usr/local/lib;
 PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
 USE_HEADERMAP = NO;
 
-GCC_PREPROCESSOR_DEFINITIONS = WEBRTC_POSIX WEBRTC_MAC SSL_USE_OPENSSL FEATURE_ENABLE_SSL HAVE_SRTP HAVE_OPENSSL_SSL_H SCTP_PROCESS_LEVEL_LOCKS SCTP_SIMPLE_ALLOCATOR SCTP_USE_OPENSSL_SHA1 __Userspace__ HAVE_SA_LEN HAVE_SCONN_LEN __APPLE_USE_RFC_2292 __Userspace_os_Darwin NON_WINDOWS_DEFINE HAVE_WEBRTC_VIDEO HAVE_WEBRTC_VOICE WEBRTC_INTELLIGIBILITY_ENHANCER=0 WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_NS_FLOAT WEBRTC_USE_BUILTIN_ILBC WEBRTC_CODEC_ILBC WEBRTC_USE_BUILTIN_OPUS WEBRTC_CODEC_OPUS WEBRTC_CODEC_ISAC WEBRTC_CODEC_RED RTC_DISABLE_VP9 RTC_DISABLE_VP8 HAVE_STDINT_H HAVE_STDLIB_H HAVE_UINT64_T OPENSSL HAVE_CONFIG_H WEBRTC_WEBKIT_BUILD HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE  HAVE_SCTP $(inherited);
+GCC_PREPROCESSOR_DEFINITIONS = WEBRTC_POSIX WEBRTC_MAC SSL_USE_OPENSSL FEATURE_ENABLE_SSL HAVE_SRTP HAVE_OPENSSL_SSL_H SCTP_PROCESS_LEVEL_LOCKS SCTP_SIMPLE_ALLOCATOR SCTP_USE_OPENSSL_SHA1 __Userspace__ HAVE_SA_LEN HAVE_SCONN_LEN __APPLE_USE_RFC_2292 __Userspace_os_Darwin NON_WINDOWS_DEFINE HAVE_WEBRTC_VIDEO HAVE_WEBRTC_VOICE WEBRTC_INTELLIGIBILITY_ENHANCER=0 WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_NS_FLOAT WEBRTC_USE_BUILTIN_ILBC WEBRTC_CODEC_ILBC WEBRTC_USE_BUILTIN_OPUS WEBRTC_CODEC_OPUS WEBRTC_CODEC_ISAC WEBRTC_CODEC_RED RTC_DISABLE_VP9 HAVE_STDINT_H HAVE_STDLIB_H HAVE_UINT64_T OPENSSL HAVE_CONFIG_H WEBRTC_WEBKIT_BUILD HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE  HAVE_SCTP $(inherited);
 
 GCC_PREPROCESSOR_DEFINITIONS[sdk=macosx*] = $(inherited);
 GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*] = $(inherited) WEBRTC_IOS;
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/run_yasm_webkit.py b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/run_yasm_webkit.py
new file mode 100644 (file)
index 0000000..7a1f081
--- /dev/null
@@ -0,0 +1,115 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""A wrapper to run yasm.
+
+Its main job is to provide a Python wrapper for GN integration, and to write
+the makefile-style output yasm generates in stdout to a .d file for dependency
+management of .inc files.
+
+Run with:
+  python run_yasm.py <yasm_binary_path> <all other yasm args>
+
+Note that <all other yasm args> must include an explicit output file (-o). This
+script will append a ".d" to this and write the dependencies there. This script
+will add "-M" to cause yasm to write the deps to stdout, so you don't need to
+specify that.
+"""
+
+import argparse
+import sys
+import subprocess
+import os
+
+# Extract the output file name from the yasm command line so we can generate a
+# .d file with the same base name.
+parser = argparse.ArgumentParser()
+
+yasm_base = os.path.dirname(os.path.realpath(__file__)) + "/"
+vpx_base = yasm_base + "../"
+
+libvpx_srcs_x86_64_assembly = [
+  "source/libvpx/vp8/common/x86/copy_sse2.asm",
+  "source/libvpx/vp8/common/x86/copy_sse3.asm",
+  "source/libvpx/vp8/common/x86/dequantize_mmx.asm",
+  "source/libvpx/vp8/common/x86/idctllm_mmx.asm",
+  "source/libvpx/vp8/common/x86/idctllm_sse2.asm",
+  "source/libvpx/vp8/common/x86/iwalsh_sse2.asm",
+  "source/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm",
+  "source/libvpx/vp8/common/x86/loopfilter_sse2.asm",
+  "source/libvpx/vp8/common/x86/mfqe_sse2.asm",
+  "source/libvpx/vp8/common/x86/recon_mmx.asm",
+  "source/libvpx/vp8/common/x86/recon_sse2.asm",
+  "source/libvpx/vp8/common/x86/subpixel_mmx.asm",
+  "source/libvpx/vp8/common/x86/subpixel_sse2.asm",
+  "source/libvpx/vp8/common/x86/subpixel_ssse3.asm",
+  "source/libvpx/vp8/encoder/x86/dct_sse2.asm",
+  "source/libvpx/vp8/encoder/x86/encodeopt.asm",
+  "source/libvpx/vp8/encoder/x86/fwalsh_sse2.asm",
+  "source/libvpx/vp9/common/x86/vp9_mfqe_sse2.asm",
+  "source/libvpx/vp9/encoder/x86/vp9_dct_sse2.asm",
+  "source/libvpx/vp9/encoder/x86/vp9_error_sse2.asm",
+  "source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm",
+  "source/libvpx/vpx_dsp/x86/add_noise_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/avg_ssse3_x86_64.asm",
+  "source/libvpx/vpx_dsp/x86/deblock_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm",
+  "source/libvpx/vpx_dsp/x86/highbd_intrapred_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/intrapred_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/intrapred_ssse3.asm",
+  "source/libvpx/vpx_dsp/x86/inv_wht_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/sad4d_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/sad_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/sad_sse3.asm",
+  "source/libvpx/vpx_dsp/x86/sad_sse4.asm",
+  "source/libvpx/vpx_dsp/x86/sad_ssse3.asm",
+  "source/libvpx/vpx_dsp/x86/ssim_opt_x86_64.asm",
+  "source/libvpx/vpx_dsp/x86/subpel_variance_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/subtract_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm",
+  "source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm",
+  "source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm",
+  "source/libvpx/vpx_ports/emms.asm",
+]
+
+execution_arguments = [yasm_base + "yasm",
+    "-fmacho64",
+    #"-m x86",
+     "-I", vpx_base + "source/config",
+     "-I", vpx_base + "source/config/mac/x64",
+     "-I", vpx_base + "source/libvpx"
+     ]
+
+# Assemble.
+for filename in libvpx_srcs_x86_64_assembly:
+    print filename
+    base_filename = vpx_base + filename
+    print execution_arguments + ["-o", base_filename + ".o", base_filename]
+    result_code = subprocess.call(execution_arguments + ["-o", base_filename + ".o", base_filename])
+    if result_code != 0:
+        sys.exit(result_code)
+
+# Now generate the .d file listing the dependencies. The -M option makes yasm
+# write the Makefile-style dependencies to stdout, but it seems that inhibits
+# generating any compiled output so we need to do this in a separate pass.
+# However, outputting deps seems faster than actually assembling, and yasm is
+# so fast anyway this is not a big deal.
+#
+# This guarantees proper dependency management for assembly files. Otherwise,
+# we would have to require people to manually specify the .inc files they
+# depend on in the build file, which will surely be wrong or out-of-date in
+# some cases.
+
+#deps = subprocess.check_output(execution_arguments + ['-M'])
+#with open(depfile, "wb") as f:
+#  f.write(deps)
+
index 4e9d062..e9a1f88 100644 (file)
@@ -651,11 +651,7 @@ static void setup_rtcd_internal(void) {
   vp8_full_search_sad = vp8_full_search_sad_c;
   if (flags & HAS_SSE3)
     vp8_full_search_sad = vp8_full_search_sadx3;
-  if (flags & HAS_SSE4_1)
-    vp8_full_search_sad = vp8_full_search_sadx8;
   vp8_regular_quantize_b = vp8_regular_quantize_b_sse2;
-  if (flags & HAS_SSE4_1)
-    vp8_regular_quantize_b = vp8_regular_quantize_b_sse4_1;
   vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_sse2;
   if (flags & HAS_SSSE3)
     vp8_sixtap_predict16x16 = vp8_sixtap_predict16x16_ssse3;
index 032dfdb..ffaf2d9 100644 (file)
 %define CONFIG_MULTI_RES_ENCODING 1
 %define CONFIG_TEMPORAL_DENOISING 1
 %define CONFIG_VP9_TEMPORAL_DENOISING 1
+%define CONFIG_CONSISTENT_RECODE 0
 %define CONFIG_COEFFICIENT_RANGE_CHECKING 0
 %define CONFIG_VP9_HIGHBITDEPTH 1
 %define CONFIG_BETTER_HW_COMPATIBILITY 0
 %define CONFIG_EXPERIMENTAL 0
 %define CONFIG_SIZE_LIMIT 1
 %define CONFIG_ALWAYS_ADJUST_BPM 0
-%define CONFIG_SPATIAL_SVC 0
 %define CONFIG_FP_MB_STATS 0
 %define CONFIG_EMULATE_HARDWARE 0
 %define DECODE_WIDTH_LIMIT 16384
index 84f1c01..aefeb40 100644 (file)
 #define CONFIG_DC_RECON 0
 #define CONFIG_RUNTIME_CPU_DETECT 1
 #define CONFIG_POSTPROC 1
-#define CONFIG_VP9_POSTPROC 1
+#define CONFIG_VP9_POSTPROC 0
 #define CONFIG_MULTITHREAD 1
 #define CONFIG_INTERNAL_STATS 0
 #define CONFIG_VP8_ENCODER 1
 #define CONFIG_VP8_DECODER 1
-#define CONFIG_VP9_ENCODER 1
-#define CONFIG_VP9_DECODER 1
+#define CONFIG_VP9_ENCODER 0
+#define CONFIG_VP9_DECODER 0
 #define CONFIG_VP8 1
-#define CONFIG_VP9 1
+#define CONFIG_VP9 0
 #define CONFIG_ENCODERS 1
 #define CONFIG_DECODERS 1
 #define CONFIG_STATIC_MSVCRT 0
 #define CONFIG_ENCODE_PERF_TESTS 0
 #define CONFIG_MULTI_RES_ENCODING 1
 #define CONFIG_TEMPORAL_DENOISING 1
-#define CONFIG_VP9_TEMPORAL_DENOISING 1
+#define CONFIG_VP9_TEMPORAL_DENOISING 0
+#define CONFIG_CONSISTENT_RECODE 0
 #define CONFIG_COEFFICIENT_RANGE_CHECKING 0
 #define CONFIG_VP9_HIGHBITDEPTH 1
 #define CONFIG_BETTER_HW_COMPATIBILITY 0
 #define CONFIG_EXPERIMENTAL 0
 #define CONFIG_SIZE_LIMIT 1
 #define CONFIG_ALWAYS_ADJUST_BPM 0
-#define CONFIG_SPATIAL_SVC 0
 #define CONFIG_FP_MB_STATS 0
 #define CONFIG_EMULATE_HARDWARE 0
 #define DECODE_WIDTH_LIMIT 16384
index 9970fae..f6adf88 100644 (file)
@@ -994,9 +994,6 @@ void vpx_hadamard_32x32_sse2(const int16_t* src_diff,
 void vpx_hadamard_32x32_avx2(const int16_t* src_diff,
                              ptrdiff_t src_stride,
                              tran_low_t* coeff);
-RTCD_EXTERN void (*vpx_hadamard_32x32)(const int16_t* src_diff,
-                                       ptrdiff_t src_stride,
-                                       tran_low_t* coeff);
 
 void vpx_hadamard_8x8_c(const int16_t* src_diff,
                         ptrdiff_t src_stride,
@@ -7593,33 +7590,21 @@ static void setup_rtcd_internal(void) {
   vpx_convolve8 = vpx_convolve8_sse2;
   if (flags & HAS_SSSE3)
     vpx_convolve8 = vpx_convolve8_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_convolve8 = vpx_convolve8_avx2;
   vpx_convolve8_avg = vpx_convolve8_avg_sse2;
   if (flags & HAS_SSSE3)
     vpx_convolve8_avg = vpx_convolve8_avg_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_convolve8_avg = vpx_convolve8_avg_avx2;
   vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_sse2;
   if (flags & HAS_SSSE3)
     vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_convolve8_avg_horiz = vpx_convolve8_avg_horiz_avx2;
   vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_sse2;
   if (flags & HAS_SSSE3)
     vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_convolve8_avg_vert = vpx_convolve8_avg_vert_avx2;
   vpx_convolve8_horiz = vpx_convolve8_horiz_sse2;
   if (flags & HAS_SSSE3)
     vpx_convolve8_horiz = vpx_convolve8_horiz_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_convolve8_horiz = vpx_convolve8_horiz_avx2;
   vpx_convolve8_vert = vpx_convolve8_vert_sse2;
   if (flags & HAS_SSSE3)
     vpx_convolve8_vert = vpx_convolve8_vert_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_convolve8_vert = vpx_convolve8_vert_avx2;
   vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_c;
   if (flags & HAS_SSSE3)
     vpx_d153_predictor_16x16 = vpx_d153_predictor_16x16_ssse3;
@@ -7660,41 +7645,18 @@ static void setup_rtcd_internal(void) {
   if (flags & HAS_SSSE3)
     vpx_d63_predictor_8x8 = vpx_d63_predictor_8x8_ssse3;
   vpx_get16x16var = vpx_get16x16var_sse2;
-  if (flags & HAS_AVX2)
-    vpx_get16x16var = vpx_get16x16var_avx2;
   vpx_hadamard_16x16 = vpx_hadamard_16x16_sse2;
-  if (flags & HAS_AVX2)
-    vpx_hadamard_16x16 = vpx_hadamard_16x16_avx2;
-  vpx_hadamard_32x32 = vpx_hadamard_32x32_sse2;
-  if (flags & HAS_AVX2)
-    vpx_hadamard_32x32 = vpx_hadamard_32x32_avx2;
   vpx_hadamard_8x8 = vpx_hadamard_8x8_sse2;
   if (flags & HAS_SSSE3)
     vpx_hadamard_8x8 = vpx_hadamard_8x8_ssse3;
   vpx_highbd_convolve8 = vpx_highbd_convolve8_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve8 = vpx_highbd_convolve8_avx2;
   vpx_highbd_convolve8_avg = vpx_highbd_convolve8_avg_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve8_avg = vpx_highbd_convolve8_avg_avx2;
   vpx_highbd_convolve8_avg_horiz = vpx_highbd_convolve8_avg_horiz_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve8_avg_horiz = vpx_highbd_convolve8_avg_horiz_avx2;
   vpx_highbd_convolve8_avg_vert = vpx_highbd_convolve8_avg_vert_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve8_avg_vert = vpx_highbd_convolve8_avg_vert_avx2;
   vpx_highbd_convolve8_horiz = vpx_highbd_convolve8_horiz_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve8_horiz = vpx_highbd_convolve8_horiz_avx2;
   vpx_highbd_convolve8_vert = vpx_highbd_convolve8_vert_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve8_vert = vpx_highbd_convolve8_vert_avx2;
   vpx_highbd_convolve_avg = vpx_highbd_convolve_avg_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve_avg = vpx_highbd_convolve_avg_avx2;
   vpx_highbd_convolve_copy = vpx_highbd_convolve_copy_sse2;
-  if (flags & HAS_AVX2)
-    vpx_highbd_convolve_copy = vpx_highbd_convolve_copy_avx2;
   vpx_highbd_d117_predictor_16x16 = vpx_highbd_d117_predictor_16x16_c;
   if (flags & HAS_SSSE3)
     vpx_highbd_d117_predictor_16x16 = vpx_highbd_d117_predictor_16x16_ssse3;
@@ -7753,32 +7715,14 @@ static void setup_rtcd_internal(void) {
   if (flags & HAS_SSSE3)
     vpx_highbd_d63_predictor_8x8 = vpx_highbd_d63_predictor_8x8_ssse3;
   vpx_highbd_idct16x16_10_add = vpx_highbd_idct16x16_10_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct16x16_10_add = vpx_highbd_idct16x16_10_add_sse4_1;
   vpx_highbd_idct16x16_256_add = vpx_highbd_idct16x16_256_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct16x16_256_add = vpx_highbd_idct16x16_256_add_sse4_1;
   vpx_highbd_idct16x16_38_add = vpx_highbd_idct16x16_38_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct16x16_38_add = vpx_highbd_idct16x16_38_add_sse4_1;
   vpx_highbd_idct32x32_1024_add = vpx_highbd_idct32x32_1024_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct32x32_1024_add = vpx_highbd_idct32x32_1024_add_sse4_1;
   vpx_highbd_idct32x32_135_add = vpx_highbd_idct32x32_135_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct32x32_135_add = vpx_highbd_idct32x32_135_add_sse4_1;
   vpx_highbd_idct32x32_34_add = vpx_highbd_idct32x32_34_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct32x32_34_add = vpx_highbd_idct32x32_34_add_sse4_1;
   vpx_highbd_idct4x4_16_add = vpx_highbd_idct4x4_16_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct4x4_16_add = vpx_highbd_idct4x4_16_add_sse4_1;
   vpx_highbd_idct8x8_12_add = vpx_highbd_idct8x8_12_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct8x8_12_add = vpx_highbd_idct8x8_12_add_sse4_1;
   vpx_highbd_idct8x8_64_add = vpx_highbd_idct8x8_64_add_sse2;
-  if (flags & HAS_SSE4_1)
-    vpx_highbd_idct8x8_64_add = vpx_highbd_idct8x8_64_add_sse4_1;
   vpx_idct32x32_135_add = vpx_idct32x32_135_add_sse2;
   if (flags & HAS_SSSE3)
     vpx_idct32x32_135_add = vpx_idct32x32_135_add_ssse3;
@@ -7789,100 +7733,42 @@ static void setup_rtcd_internal(void) {
   if (flags & HAS_SSSE3)
     vpx_idct8x8_12_add = vpx_idct8x8_12_add_ssse3;
   vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_sse2;
-  if (flags & HAS_AVX2)
-    vpx_lpf_horizontal_16 = vpx_lpf_horizontal_16_avx2;
   vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_sse2;
-  if (flags & HAS_AVX2)
-    vpx_lpf_horizontal_16_dual = vpx_lpf_horizontal_16_dual_avx2;
   vpx_mse16x16 = vpx_mse16x16_sse2;
-  if (flags & HAS_AVX2)
-    vpx_mse16x16 = vpx_mse16x16_avx2;
   vpx_mse16x8 = vpx_mse16x8_sse2;
-  if (flags & HAS_AVX2)
-    vpx_mse16x8 = vpx_mse16x8_avx2;
   vpx_quantize_b = vpx_quantize_b_sse2;
   if (flags & HAS_SSSE3)
     vpx_quantize_b = vpx_quantize_b_ssse3;
-  if (flags & HAS_AVX)
-    vpx_quantize_b = vpx_quantize_b_avx;
   vpx_quantize_b_32x32 = vpx_quantize_b_32x32_c;
   if (flags & HAS_SSSE3)
     vpx_quantize_b_32x32 = vpx_quantize_b_32x32_ssse3;
-  if (flags & HAS_AVX)
-    vpx_quantize_b_32x32 = vpx_quantize_b_32x32_avx;
-  vpx_sad16x16x3 = vpx_sad16x16x3_c;
-  if (flags & HAS_SSE3)
-    vpx_sad16x16x3 = vpx_sad16x16x3_sse3;
+  vpx_sad16x16x3 = vpx_sad16x16x3_sse3;
   if (flags & HAS_SSSE3)
     vpx_sad16x16x3 = vpx_sad16x16x3_ssse3;
-  vpx_sad16x16x8 = vpx_sad16x16x8_c;
-  if (flags & HAS_SSE4_1)
-    vpx_sad16x16x8 = vpx_sad16x16x8_sse4_1;
-  vpx_sad16x8x3 = vpx_sad16x8x3_c;
-  if (flags & HAS_SSE3)
-    vpx_sad16x8x3 = vpx_sad16x8x3_sse3;
+  vpx_sad16x16x8 = vpx_sad16x16x8_sse4_1;
+  vpx_sad16x8x3 = vpx_sad16x8x3_sse3;
   if (flags & HAS_SSSE3)
     vpx_sad16x8x3 = vpx_sad16x8x3_ssse3;
-  vpx_sad16x8x8 = vpx_sad16x8x8_c;
-  if (flags & HAS_SSE4_1)
-    vpx_sad16x8x8 = vpx_sad16x8x8_sse4_1;
+  vpx_sad16x8x8 = vpx_sad16x8x8_sse4_1;
   vpx_sad32x16 = vpx_sad32x16_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad32x16 = vpx_sad32x16_avx2;
   vpx_sad32x16_avg = vpx_sad32x16_avg_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad32x16_avg = vpx_sad32x16_avg_avx2;
   vpx_sad32x32 = vpx_sad32x32_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad32x32 = vpx_sad32x32_avx2;
   vpx_sad32x32_avg = vpx_sad32x32_avg_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad32x32_avg = vpx_sad32x32_avg_avx2;
   vpx_sad32x32x4d = vpx_sad32x32x4d_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad32x32x4d = vpx_sad32x32x4d_avx2;
   vpx_sad32x64 = vpx_sad32x64_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad32x64 = vpx_sad32x64_avx2;
   vpx_sad32x64_avg = vpx_sad32x64_avg_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad32x64_avg = vpx_sad32x64_avg_avx2;
-  vpx_sad4x4x3 = vpx_sad4x4x3_c;
-  if (flags & HAS_SSE3)
-    vpx_sad4x4x3 = vpx_sad4x4x3_sse3;
-  vpx_sad4x4x8 = vpx_sad4x4x8_c;
-  if (flags & HAS_SSE4_1)
-    vpx_sad4x4x8 = vpx_sad4x4x8_sse4_1;
+  vpx_sad4x4x3 = vpx_sad4x4x3_sse3;
+  vpx_sad4x4x8 = vpx_sad4x4x8_sse4_1;
   vpx_sad64x32 = vpx_sad64x32_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad64x32 = vpx_sad64x32_avx2;
   vpx_sad64x32_avg = vpx_sad64x32_avg_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad64x32_avg = vpx_sad64x32_avg_avx2;
   vpx_sad64x64 = vpx_sad64x64_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad64x64 = vpx_sad64x64_avx2;
   vpx_sad64x64_avg = vpx_sad64x64_avg_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad64x64_avg = vpx_sad64x64_avg_avx2;
   vpx_sad64x64x4d = vpx_sad64x64x4d_sse2;
-  if (flags & HAS_AVX2)
-    vpx_sad64x64x4d = vpx_sad64x64x4d_avx2;
-  vpx_sad8x16x3 = vpx_sad8x16x3_c;
-  if (flags & HAS_SSE3)
-    vpx_sad8x16x3 = vpx_sad8x16x3_sse3;
-  vpx_sad8x16x8 = vpx_sad8x16x8_c;
-  if (flags & HAS_SSE4_1)
-    vpx_sad8x16x8 = vpx_sad8x16x8_sse4_1;
-  vpx_sad8x8x3 = vpx_sad8x8x3_c;
-  if (flags & HAS_SSE3)
-    vpx_sad8x8x3 = vpx_sad8x8x3_sse3;
-  vpx_sad8x8x8 = vpx_sad8x8x8_c;
-  if (flags & HAS_SSE4_1)
-    vpx_sad8x8x8 = vpx_sad8x8x8_sse4_1;
+  vpx_sad8x16x3 = vpx_sad8x16x3_sse3;
+  vpx_sad8x16x8 = vpx_sad8x16x8_sse4_1;
+  vpx_sad8x8x3 = vpx_sad8x8x3_sse3;
+  vpx_sad8x8x8 = vpx_sad8x8x8_sse4_1;
   vpx_satd = vpx_satd_sse2;
-  if (flags & HAS_AVX2)
-    vpx_satd = vpx_satd_avx2;
   vpx_scaled_2d = vpx_scaled_2d_c;
   if (flags & HAS_SSSE3)
     vpx_scaled_2d = vpx_scaled_2d_ssse3;
@@ -7901,8 +7787,6 @@ static void setup_rtcd_internal(void) {
   vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_sub_pixel_avg_variance32x32 = vpx_sub_pixel_avg_variance32x32_avx2;
   vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_avg_variance32x64 = vpx_sub_pixel_avg_variance32x64_ssse3;
@@ -7918,8 +7802,6 @@ static void setup_rtcd_internal(void) {
   vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_sub_pixel_avg_variance64x64 = vpx_sub_pixel_avg_variance64x64_avx2;
   vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_avg_variance8x16 = vpx_sub_pixel_avg_variance8x16_ssse3;
@@ -7944,8 +7826,6 @@ static void setup_rtcd_internal(void) {
   vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_sub_pixel_variance32x32 = vpx_sub_pixel_variance32x32_avx2;
   vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_variance32x64 = vpx_sub_pixel_variance32x64_ssse3;
@@ -7961,8 +7841,6 @@ static void setup_rtcd_internal(void) {
   vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_ssse3;
-  if (flags & HAS_AVX2)
-    vpx_sub_pixel_variance64x64 = vpx_sub_pixel_variance64x64_avx2;
   vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_sse2;
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_variance8x16 = vpx_sub_pixel_variance8x16_ssse3;
@@ -7973,29 +7851,13 @@ static void setup_rtcd_internal(void) {
   if (flags & HAS_SSSE3)
     vpx_sub_pixel_variance8x8 = vpx_sub_pixel_variance8x8_ssse3;
   vpx_variance16x16 = vpx_variance16x16_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance16x16 = vpx_variance16x16_avx2;
   vpx_variance16x32 = vpx_variance16x32_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance16x32 = vpx_variance16x32_avx2;
   vpx_variance16x8 = vpx_variance16x8_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance16x8 = vpx_variance16x8_avx2;
   vpx_variance32x16 = vpx_variance32x16_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance32x16 = vpx_variance32x16_avx2;
   vpx_variance32x32 = vpx_variance32x32_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance32x32 = vpx_variance32x32_avx2;
   vpx_variance32x64 = vpx_variance32x64_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance32x64 = vpx_variance32x64_avx2;
   vpx_variance64x32 = vpx_variance64x32_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance64x32 = vpx_variance64x32_avx2;
   vpx_variance64x64 = vpx_variance64x64_sse2;
-  if (flags & HAS_AVX2)
-    vpx_variance64x64 = vpx_variance64x64_avx2;
 }
 #endif
 
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/.gitignore b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/.gitignore
deleted file mode 100644 (file)
index bf5ffc7..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-*.S
-*.a
-*.asm.s
-*.d
-*.gcda
-*.gcno
-*.o
-*~
-.cproject
-.project
-.settings
-/*-*.mk
-/*.asm
-/*.doxy
-/*.ivf
-/*.ivf.md5
-/.bins
-/.deps
-/.docs
-/.install-*
-/.libs
-/Makefile
-/config.log
-/config.mk
-/docs/
-/doxyfile
-/examples/*.dox
-/examples/decode_to_md5
-/examples/decode_with_drops
-/examples/decode_with_partial_drops
-/examples/example_xma
-/examples/postproc
-/examples/resize_util
-/examples/set_maps
-/examples/simple_decoder
-/examples/simple_encoder
-/examples/twopass_encoder
-/examples/vp8_multi_resolution_encoder
-/examples/vp8cx_set_ref
-/examples/vp9cx_set_ref
-/examples/vp9_lossless_encoder
-/examples/vp9_spatial_svc_encoder
-/examples/vpx_temporal_svc_encoder
-/ivfdec
-/ivfdec.dox
-/ivfenc
-/ivfenc.dox
-/libvpx.so*
-/libvpx.ver
-/samples.dox
-/test_intra_pred_speed
-/test_libvpx
-/tools.dox
-/tools/*.dox
-/tools/tiny_ssim
-/vp8_api1_migration.dox
-/vp[89x]_rtcd.h
-/vpx.pc
-/vpx_config.c
-/vpx_config.h
-/vpx_dsp_rtcd.h
-/vpx_scale_rtcd.h
-/vpx_version.h
-/vpxdec
-/vpxdec.dox
-/vpxenc
-/vpxenc.dox
-TAGS
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse2.asm.o
new file mode 100644 (file)
index 0000000..80a8363
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse3.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse3.asm.o
new file mode 100644 (file)
index 0000000..45fce3f
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/copy_sse3.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/dequantize_mmx.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/dequantize_mmx.asm.o
new file mode 100644 (file)
index 0000000..ae537b4
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/dequantize_mmx.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_mmx.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_mmx.asm.o
new file mode 100644 (file)
index 0000000..5a8e948
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_mmx.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_sse2.asm.o
new file mode 100644 (file)
index 0000000..b9be8e8
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/idctllm_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/iwalsh_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/iwalsh_sse2.asm.o
new file mode 100644 (file)
index 0000000..5b8299b
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/iwalsh_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm.o
new file mode 100644 (file)
index 0000000..2085f46
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_block_sse2_x86_64.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_sse2.asm.o
new file mode 100644 (file)
index 0000000..a8af7f8
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/loopfilter_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/mfqe_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/mfqe_sse2.asm.o
new file mode 100644 (file)
index 0000000..9db5bea
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/mfqe_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_mmx.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_mmx.asm.o
new file mode 100644 (file)
index 0000000..72c5efc
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_mmx.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_sse2.asm.o
new file mode 100644 (file)
index 0000000..191557b
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/recon_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_mmx.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_mmx.asm.o
new file mode 100644 (file)
index 0000000..70314b0
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_mmx.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_sse2.asm.o
new file mode 100644 (file)
index 0000000..cca714b
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_ssse3.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_ssse3.asm.o
new file mode 100644 (file)
index 0000000..f01e98d
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/common/x86/subpixel_ssse3.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/dct_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/dct_sse2.asm.o
new file mode 100644 (file)
index 0000000..3bfcb73
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/dct_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/encodeopt.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/encodeopt.asm.o
new file mode 100644 (file)
index 0000000..080aedd
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/encodeopt.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/fwalsh_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/fwalsh_sse2.asm.o
new file mode 100644 (file)
index 0000000..ac92539
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp8/encoder/x86/fwalsh_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/common/x86/vp9_mfqe_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/common/x86/vp9_mfqe_sse2.asm.o
new file mode 100644 (file)
index 0000000..73663a3
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/common/x86/vp9_mfqe_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_sse2.asm.o
new file mode 100644 (file)
index 0000000..dd508ae
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_dct_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_error_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_error_sse2.asm.o
new file mode 100644 (file)
index 0000000..b27e105
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_error_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm.o
new file mode 100644 (file)
index 0000000..6db785e
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/add_noise_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/add_noise_sse2.asm.o
new file mode 100644 (file)
index 0000000..65da358
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/add_noise_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/avg_ssse3_x86_64.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/avg_ssse3_x86_64.asm.o
new file mode 100644 (file)
index 0000000..2dfdc24
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/avg_ssse3_x86_64.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/deblock_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/deblock_sse2.asm.o
new file mode 100644 (file)
index 0000000..690f97a
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/deblock_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm.o
new file mode 100644 (file)
index 0000000..db93ea7
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/fwd_txfm_ssse3_x86_64.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_intrapred_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_intrapred_sse2.asm.o
new file mode 100644 (file)
index 0000000..3683b19
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_intrapred_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm.o
new file mode 100644 (file)
index 0000000..fc8636c
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad4d_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm.o
new file mode 100644 (file)
index 0000000..a602f81
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_sad_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm.o
new file mode 100644 (file)
index 0000000..9dfec5f
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm.o
new file mode 100644 (file)
index 0000000..af29d92
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/highbd_variance_impl_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_sse2.asm.o
new file mode 100644 (file)
index 0000000..d435f5f
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_ssse3.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_ssse3.asm.o
new file mode 100644 (file)
index 0000000..934e3a3
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/intrapred_ssse3.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_wht_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_wht_sse2.asm.o
new file mode 100644 (file)
index 0000000..c0eb90e
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/inv_wht_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad4d_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad4d_sse2.asm.o
new file mode 100644 (file)
index 0000000..68d5626
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad4d_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse2.asm.o
new file mode 100644 (file)
index 0000000..f59bc29
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse3.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse3.asm.o
new file mode 100644 (file)
index 0000000..8415d2e
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse3.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse4.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse4.asm.o
new file mode 100644 (file)
index 0000000..95aa97a
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_sse4.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_ssse3.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_ssse3.asm.o
new file mode 100644 (file)
index 0000000..381515e
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/sad_ssse3.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/ssim_opt_x86_64.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/ssim_opt_x86_64.asm.o
new file mode 100644 (file)
index 0000000..e9f9192
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/ssim_opt_x86_64.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subpel_variance_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subpel_variance_sse2.asm.o
new file mode 100644 (file)
index 0000000..7911146
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subpel_variance_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subtract_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subtract_sse2.asm.o
new file mode 100644 (file)
index 0000000..26166df
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/subtract_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm.o
new file mode 100644 (file)
index 0000000..00e91c3
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_convolve_copy_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm.o
new file mode 100644 (file)
index 0000000..09a7ffa
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_8t_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm.o
new file mode 100644 (file)
index 0000000..8ed86cf
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_high_subpixel_bilinear_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm.o
new file mode 100644 (file)
index 0000000..a1a8b57
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm.o
new file mode 100644 (file)
index 0000000..9bccb2e
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm.o
new file mode 100644 (file)
index 0000000..b9de897
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm.o
new file mode 100644 (file)
index 0000000..8e43240
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_ports/emms.asm.o b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_ports/emms.asm.o
new file mode 100644 (file)
index 0000000..bc8ded4
Binary files /dev/null and b/Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vpx_ports/emms.asm.o differ
diff --git a/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc b/Source/ThirdParty/libwebrtc/Source/webrtc/modules/video_coding/codecs/vp8/vp8_noop.cc
deleted file mode 100644 (file)
index 3267344..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  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 "rtc_base/checks.h"
-#include "modules/video_coding/codecs/vp8/include/vp8.h"
-
-namespace webrtc {
-
-bool VP8Encoder::IsSupported() {
-  return false;
-}
-
-std::unique_ptr<VP8Encoder> VP8Encoder::Create() {
-  RTC_NOTREACHED();
-  return nullptr;
-}
-
-bool VP8Decoder::IsSupported() {
-  return false;
-}
-
-std::unique_ptr<VP8Decoder> VP8Decoder::Create() {
-  RTC_NOTREACHED();
-  return nullptr;
-}
-
-}  // namespace webrtc
index 98f244c..ef1456e 100644 (file)
@@ -38,8 +38,10 @@ class VideoDecoderFactory;
 class VideoEncoderFactory;
 class VideoFrame;
 
-std::unique_ptr<webrtc::VideoEncoderFactory> createWebKitEncoderFactory();
-std::unique_ptr<webrtc::VideoDecoderFactory> createWebKitDecoderFactory();
+enum class WebKitCodecSupport { H264, H264AndVP8 };
+
+std::unique_ptr<webrtc::VideoEncoderFactory> createWebKitEncoderFactory(WebKitCodecSupport);
+std::unique_ptr<webrtc::VideoDecoderFactory> createWebKitDecoderFactory(WebKitCodecSupport);
 
 void setApplicationStatus(bool isActive);
 
index 18098bf..e67eeab 100644 (file)
@@ -31,6 +31,7 @@
 #include "api/video/video_frame.h"
 #include "third_party/libyuv/include/libyuv/convert_from.h"
 #include "webrtc/sdk/objc/Framework/Native/src/objc_frame_buffer.h"
+#include "webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h"
 #include "webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrame.h"
 #include "webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h"
 #include "webrtc/sdk/objc/Framework/Native/api/video_decoder_factory.h"
@@ -95,7 +96,7 @@ void setApplicationStatus(bool isActive)
         [[RTCUIApplicationStatusObserver sharedInstance] setInactive];
 }
 
-std::unique_ptr<webrtc::VideoEncoderFactory> createWebKitEncoderFactory()
+std::unique_ptr<webrtc::VideoEncoderFactory> createWebKitEncoderFactory(WebKitCodecSupport codecSupport)
 {
 #if ENABLE_VCP_ENCODER
     static std::once_flag onceFlag;
@@ -103,12 +104,12 @@ std::unique_ptr<webrtc::VideoEncoderFactory> createWebKitEncoderFactory()
         webrtc::VPModuleInitialize();
     });
 #endif
-    return ObjCToNativeVideoEncoderFactory([[RTCVideoEncoderFactoryH264 alloc] init]);
+    return ObjCToNativeVideoEncoderFactory(codecSupport == WebKitCodecSupport::H264AndVP8 ? [[RTCDefaultVideoEncoderFactory alloc] init] : [[RTCVideoEncoderFactoryH264 alloc] init]);
 }
 
-std::unique_ptr<webrtc::VideoDecoderFactory> createWebKitDecoderFactory()
+std::unique_ptr<webrtc::VideoDecoderFactory> createWebKitDecoderFactory(WebKitCodecSupport codecSupport)
 {
-    return ObjCToNativeVideoDecoderFactory([[RTCVideoDecoderFactoryH264 alloc] init]);
+    return ObjCToNativeVideoDecoderFactory(codecSupport == WebKitCodecSupport::H264AndVP8 ? [[RTCDefaultVideoDecoderFactory alloc] init] : [[RTCVideoDecoderFactoryH264 alloc] init]);
 }
 
 static bool h264HardwareEncoderAllowed = true;
index 4087d23..1df6b01 100644 (file)
                4102F6DC21273416006AE8D7 /* color_space.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4102F6D221273414006AE8D7 /* color_space.cc */; };
                4102F6DD21273416006AE8D7 /* video_sink_interface.h in Headers */ = {isa = PBXBuildFile; fileRef = 4102F6D321273415006AE8D7 /* video_sink_interface.h */; };
                4102F6DE21273416006AE8D7 /* video_stream_decoder_create.h in Headers */ = {isa = PBXBuildFile; fileRef = 4102F6D421273415006AE8D7 /* video_stream_decoder_create.h */; };
-               4102F6DF21273416006AE8D7 /* video_stream_encoder_create.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4102F6D521273415006AE8D7 /* video_stream_encoder_create.cc */; };
                4102F6E021273416006AE8D7 /* i010_buffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4102F6D621273415006AE8D7 /* i010_buffer.cc */; };
                4102F6E121273416006AE8D7 /* video_stream_encoder_settings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4102F6D721273415006AE8D7 /* video_stream_encoder_settings.h */; };
                4102F6E221273416006AE8D7 /* color_space.h in Headers */ = {isa = PBXBuildFile; fileRef = 4102F6D821273416006AE8D7 /* color_space.h */; };
                4102F6E321273416006AE8D7 /* video_bitrate_allocation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4102F6D921273416006AE8D7 /* video_bitrate_allocation.cc */; };
                4102F6E421273416006AE8D7 /* video_bitrate_allocator_factory.h in Headers */ = {isa = PBXBuildFile; fileRef = 4102F6DA21273416006AE8D7 /* video_bitrate_allocator_factory.h */; };
+               4105EB84212E0207008C0C20 /* elf.h in Headers */ = {isa = PBXBuildFile; fileRef = 4105EB67212E01C2008C0C20 /* elf.h */; };
                41109AAD1E5FA19200C0955A /* i420_buffer_pool.h in Headers */ = {isa = PBXBuildFile; fileRef = 41109AA61E5FA19200C0955A /* i420_buffer_pool.h */; };
                41109AAE1E5FA19200C0955A /* video_frame_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 41109AA71E5FA19200C0955A /* video_frame_buffer.h */; };
                41109AAF1E5FA19200C0955A /* frame_callback.h in Headers */ = {isa = PBXBuildFile; fileRef = 41109AA81E5FA19200C0955A /* frame_callback.h */; };
                41109AB01E5FA19200C0955A /* bitrate_adjuster.h in Headers */ = {isa = PBXBuildFile; fileRef = 41109AA91E5FA19200C0955A /* bitrate_adjuster.h */; };
                41109AB11E5FA19200C0955A /* incoming_video_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 41109AAA1E5FA19200C0955A /* incoming_video_stream.h */; };
+               411ED030212E04BE004320BA /* quant_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 411ED02F212E04BD004320BA /* quant_common.c */; };
+               411ED037212E07A9004320BA /* denoising_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731DE212E045E001280EB /* denoising_sse2.c */; };
+               411ED03C212E07A9004320BA /* vp8_enc_stubs_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731DD212E045E001280EB /* vp8_enc_stubs_sse2.c */; };
+               411ED03D212E07A9004320BA /* vp8_quantize_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731DB212E045D001280EB /* vp8_quantize_sse2.c */; };
+               411ED03E212E07A9004320BA /* vp8_quantize_ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731DF212E045E001280EB /* vp8_quantize_ssse3.c */; };
+               41239AF2214756F200396F81 /* idct_blk_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239AEB214756C800396F81 /* idct_blk_sse2.c */; };
+               41239AF4214756FC00396F81 /* filter_x86.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239AE6214756C700396F81 /* filter_x86.c */; };
+               41239AF5214756FC00396F81 /* filter_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = 41239AE9214756C700396F81 /* filter_x86.h */; };
+               41239AF6214756FC00396F81 /* idct_blk_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239AE7214756C700396F81 /* idct_blk_mmx.c */; };
+               41239AF7214756FC00396F81 /* loopfilter_x86.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239AEA214756C800396F81 /* loopfilter_x86.c */; };
+               41239AF8214756FC00396F81 /* vp8_asm_stubs.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239AE8214756C700396F81 /* vp8_asm_stubs.c */; };
+               41239AF9214756FC00396F81 /* copy_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41239AD6214756A200396F81 /* copy_sse2.asm.o */; };
+               41239AFA214756FC00396F81 /* idctllm_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41239AD5214756A200396F81 /* idctllm_sse2.asm.o */; };
+               41239AFB214756FC00396F81 /* recon_mmx.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41239AD7214756A300396F81 /* recon_mmx.asm.o */; };
+               41239AFC214756FC00396F81 /* copy_sse3.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410995022147567A00347814 /* copy_sse3.asm.o */; };
+               41239AFD214756FC00396F81 /* dequantize_mmx.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994FA2147567800347814 /* dequantize_mmx.asm.o */; };
+               41239AFE214756FC00396F81 /* idctllm_mmx.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994FE2147567900347814 /* idctllm_mmx.asm.o */; };
+               41239AFF214756FC00396F81 /* iwalsh_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994FB2147567800347814 /* iwalsh_sse2.asm.o */; };
+               41239B00214756FC00396F81 /* loopfilter_block_sse2_x86_64.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410995032147567A00347814 /* loopfilter_block_sse2_x86_64.asm.o */; };
+               41239B01214756FC00396F81 /* loopfilter_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410995002147567900347814 /* loopfilter_sse2.asm.o */; };
+               41239B02214756FC00396F81 /* mfqe_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410995042147567A00347814 /* mfqe_sse2.asm.o */; };
+               41239B03214756FC00396F81 /* recon_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410995012147567900347814 /* recon_sse2.asm.o */; };
+               41239B04214756FC00396F81 /* subpixel_mmx.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994FC2147567800347814 /* subpixel_mmx.asm.o */; };
+               41239B05214756FC00396F81 /* subpixel_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994FD2147567900347814 /* subpixel_sse2.asm.o */; };
+               41239B06214756FC00396F81 /* subpixel_ssse3.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994FF2147567900347814 /* subpixel_ssse3.asm.o */; };
+               41239B10214757B200396F81 /* gen_scalers.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239B0B214757AE00396F81 /* gen_scalers.c */; };
+               41239B11214757B200396F81 /* vpx_scale.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239B08214757AD00396F81 /* vpx_scale.c */; };
+               41239B12214757B200396F81 /* yv12config.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239B09214757AD00396F81 /* yv12config.c */; };
+               41239B13214757B200396F81 /* yv12extend.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239B0A214757AE00396F81 /* yv12extend.c */; };
+               41239B1A214759B600396F81 /* fwalsh_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41239B17214759B500396F81 /* fwalsh_sse2.asm.o */; };
+               41239B1B214759B600396F81 /* encodeopt.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41239B18214759B600396F81 /* encodeopt.asm.o */; };
+               41239B1C214759B600396F81 /* dct_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41239B19214759B600396F81 /* dct_sse2.asm.o */; };
+               41239B1F21475F0700396F81 /* emms.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41239B1E21475F0700396F81 /* emms.asm.o */; };
+               41239B2C21475F7A00396F81 /* highbd_intrapred_intrin_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3C6212E2D8F00E22482 /* highbd_intrapred_intrin_sse2.c */; };
+               41239B2D21475F7A00396F81 /* highbd_intrapred_intrin_ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3D8212E2D9300E22482 /* highbd_intrapred_intrin_ssse3.c */; };
+               41239B2E21475F7A00396F81 /* highbd_loopfilter_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3C5212E2D8F00E22482 /* highbd_loopfilter_sse2.c */; };
+               41239B2F21475F7A00396F81 /* highbd_quantize_intrin_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62912212E2DE4002313D4 /* highbd_quantize_intrin_sse2.c */; };
+               41239B3021475F7A00396F81 /* highbd_variance_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62916212E2DE6002313D4 /* highbd_variance_sse2.c */; };
+               41239B3B21476AE600396F81 /* systemdependent.c in Sources */ = {isa = PBXBuildFile; fileRef = 41239B3A21476AE500396F81 /* systemdependent.c */; };
+               41239B3E21476DC000396F81 /* RTCDefaultVideoDecoderFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1B2212E29C1009F73EC /* RTCDefaultVideoDecoderFactory.m */; };
+               41239B3F21476DC400396F81 /* screenshare_layers.cc in Sources */ = {isa = PBXBuildFile; fileRef = 419C84301FE24E7F0040C30F /* screenshare_layers.cc */; };
+               41239B4321476F5E00396F81 /* highbd_idct4x4_add_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62910212E2DE3002313D4 /* highbd_idct4x4_add_sse2.c */; };
+               41239B4521476F5E00396F81 /* highbd_idct8x8_add_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3D1212E2D9200E22482 /* highbd_idct8x8_add_sse2.c */; };
+               41239B4721476F5E00396F81 /* highbd_idct16x16_add_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3CF212E2D9100E22482 /* highbd_idct16x16_add_sse2.c */; };
+               41239B4921476F5E00396F81 /* highbd_idct32x32_add_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C6290E212E2DE2002313D4 /* highbd_idct32x32_add_sse2.c */; };
+               41239B4B2147711600396F81 /* variance.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F4212E2BD700280939 /* variance.c */; };
+               41239B4C2147716D00396F81 /* video_stream_encoder_create.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F263C02126818900274F59 /* video_stream_encoder_create.h */; };
+               41239B4D2147743A00396F81 /* video_stream_encoder_create.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4102F6D521273415006AE8D7 /* video_stream_encoder_create.cc */; };
                412455441EF87C0F00F11809 /* dot_product_with_scale.h in Headers */ = {isa = PBXBuildFile; fileRef = 412455421EF87C0900F11809 /* dot_product_with_scale.h */; };
                412455451EF87C0F00F11809 /* dot_product_with_scale.cc in Sources */ = {isa = PBXBuildFile; fileRef = 412455431EF87C0F00F11809 /* dot_product_with_scale.cc */; };
                4124554B1EF8874300F11809 /* video_frame_buffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4124554A1EF8874300F11809 /* video_frame_buffer.cc */; };
                412455561EF887FB00F11809 /* packetlossestimator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 412455541EF887FA00F11809 /* packetlossestimator.cc */; };
                412455571EF887FB00F11809 /* packetlossestimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 412455551EF887FA00F11809 /* packetlossestimator.h */; };
+               4129408A212E0CC400AD95E7 /* vpx_config.c in Sources */ = {isa = PBXBuildFile; fileRef = 4105EB99212E02CB008C0C20 /* vpx_config.c */; };
+               4129408D212E0D1800AD95E7 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4105EB83212E01D2008C0C20 /* libvpx.a */; };
+               41294092212E128D00AD95E7 /* libvpx_vp8_encoder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4129408E212E128B00AD95E7 /* libvpx_vp8_encoder.cc */; };
+               41294093212E128D00AD95E7 /* libvpx_vp8_encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4129408F212E128C00AD95E7 /* libvpx_vp8_encoder.h */; };
+               41294094212E128D00AD95E7 /* libvpx_vp8_decoder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41294090212E128C00AD95E7 /* libvpx_vp8_decoder.cc */; };
+               41294095212E128D00AD95E7 /* libvpx_vp8_decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 41294091212E128C00AD95E7 /* libvpx_vp8_decoder.h */; };
                41299B8B2127365100B3414B /* pacer_controller.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41E02CD62127363C00C27CD6 /* pacer_controller.cc */; };
                41299B8C2127365100B3414B /* send_time_history.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41E02CD82127363D00C27CD6 /* send_time_history.cc */; };
                41299B8D2127365100B3414B /* transport_feedback_adapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E02CD72127363C00C27CD6 /* transport_feedback_adapter.h */; };
                4130921A1EF8D63F00757C55 /* rtp_transport_controller_send_interface.h in Headers */ = {isa = PBXBuildFile; fileRef = 413092171EF8D63900757C55 /* rtp_transport_controller_send_interface.h */; };
                4130921B1EF8D63F00757C55 /* rtp_transport_controller_send.cc in Sources */ = {isa = PBXBuildFile; fileRef = 413092181EF8D63F00757C55 /* rtp_transport_controller_send.cc */; };
                413092301EF8D77100757C55 /* aec_dump_factory.h in Headers */ = {isa = PBXBuildFile; fileRef = 4130922D1EF8D77100757C55 /* aec_dump_factory.h */; };
+               41330A13212E2BDF00280939 /* add_noise.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309E9212E2BD400280939 /* add_noise.c */; };
+               41330A14212E2BDF00280939 /* avg.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309E5212E2BD400280939 /* avg.c */; };
+               41330A15212E2BDF00280939 /* bitreader.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309E6212E2BD400280939 /* bitreader.c */; };
+               41330A16212E2BDF00280939 /* bitwriter.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F1212E2BD600280939 /* bitwriter.c */; };
+               41330A17212E2BDF00280939 /* deblock.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F2212E2BD600280939 /* deblock.c */; };
+               41330A18212E2BDF00280939 /* fastssim.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F9212E2BD800280939 /* fastssim.c */; };
+               41330A19212E2BDF00280939 /* fwd_txfm.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309EB212E2BD500280939 /* fwd_txfm.c */; };
+               41330A1A212E2BDF00280939 /* intrapred.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309EC212E2BD500280939 /* intrapred.c */; };
+               41330A1B212E2BDF00280939 /* inv_txfm.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F6212E2BD700280939 /* inv_txfm.c */; };
+               41330A1C212E2BDF00280939 /* loopfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309EE212E2BD600280939 /* loopfilter.c */; };
+               41330A1D212E2BDF00280939 /* prob.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309EF212E2BD600280939 /* prob.c */; };
+               41330A1E212E2BDF00280939 /* psnrhvs.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309EA212E2BD500280939 /* psnrhvs.c */; };
+               41330A1F212E2BDF00280939 /* quantize.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309E7212E2BD400280939 /* quantize.c */; };
+               41330A21212E2BDF00280939 /* skin_detection.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F7212E2BD800280939 /* skin_detection.c */; };
+               41330A23212E2BDF00280939 /* subtract.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309ED212E2BD500280939 /* subtract.c */; };
+               41330A24212E2BDF00280939 /* sum_squares.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F3212E2BD700280939 /* sum_squares.c */; };
+               41330A26212E2BDF00280939 /* vpx_convolve.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F5212E2BD700280939 /* vpx_convolve.c */; };
+               41330A27212E2BDF00280939 /* vpx_dsp_rtcd.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F8212E2BD800280939 /* vpx_dsp_rtcd.c */; };
+               41330A28212E2BDF00280939 /* bitreader_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1CB212E2B69009F73EC /* bitreader_buffer.c */; };
+               41330A29212E2BDF00280939 /* bitwriter_buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1CD212E2B6A009F73EC /* bitwriter_buffer.c */; };
+               41330A2A212E2BDF00280939 /* fwd_txfm.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EAF1CC212E2B69009F73EC /* fwd_txfm.h */; };
+               41330A2B212E2BDF00280939 /* psnr.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1CA212E2B69009F73EC /* psnr.c */; };
+               41330A30212E2BF500280939 /* vpx_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 41330A2D212E2BEE00280939 /* vpx_mem.c */; };
+               41330A31212E2BF500280939 /* vpx_mem.h in Headers */ = {isa = PBXBuildFile; fileRef = 41330A2C212E2BED00280939 /* vpx_mem.h */; };
+               41330A34212E2C1F00280939 /* vpx_scale_rtcd.c in Sources */ = {isa = PBXBuildFile; fileRef = 41330A32212E2C1E00280939 /* vpx_scale_rtcd.c */; };
+               41330A35212E2C1F00280939 /* vpx_scale.h in Headers */ = {isa = PBXBuildFile; fileRef = 41330A33212E2C1E00280939 /* vpx_scale.h */; };
                413A213D1FE0F0EF00373E99 /* srtp_priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 413A21381FE0F0EE00373E99 /* srtp_priv.h */; };
                413A213E1FE0F0EF00373E99 /* ekt.h in Headers */ = {isa = PBXBuildFile; fileRef = 413A21391FE0F0EF00373E99 /* ekt.h */; };
                413A213F1FE0F0EF00373E99 /* srtp.h in Headers */ = {isa = PBXBuildFile; fileRef = 413A213A1FE0F0EF00373E99 /* srtp.h */; };
                41433D281F79B33400387B4D /* lpc_tables.h in Headers */ = {isa = PBXBuildFile; fileRef = 41433CE71F79B33300387B4D /* lpc_tables.h */; };
                41433D291F79B33400387B4D /* arith_routines_hist.c in Sources */ = {isa = PBXBuildFile; fileRef = 41433CE81F79B33300387B4D /* arith_routines_hist.c */; };
                41433D2A1F79B33400387B4D /* isacfix.c in Sources */ = {isa = PBXBuildFile; fileRef = 41433CE91F79B33300387B4D /* isacfix.c */; };
+               4145020B2152E01C0033B4D3 /* onyxd.h in Headers */ = {isa = PBXBuildFile; fileRef = 414502052152E01A0033B4D3 /* onyxd.h */; };
+               4145020C2152E01C0033B4D3 /* vp8_skin_detection.h in Headers */ = {isa = PBXBuildFile; fileRef = 414502062152E01B0033B4D3 /* vp8_skin_detection.h */; };
+               4145020D2152E01C0033B4D3 /* blockd.h in Headers */ = {isa = PBXBuildFile; fileRef = 414502072152E01B0033B4D3 /* blockd.h */; };
+               4145020E2152E01C0033B4D3 /* threading.h in Headers */ = {isa = PBXBuildFile; fileRef = 414502082152E01B0033B4D3 /* threading.h */; };
+               4145020F2152E01C0033B4D3 /* default_coef_probs.h in Headers */ = {isa = PBXBuildFile; fileRef = 414502092152E01B0033B4D3 /* default_coef_probs.h */; };
+               414502102152E01C0033B4D3 /* vp8_entropymodedata.h in Headers */ = {isa = PBXBuildFile; fileRef = 4145020A2152E01B0033B4D3 /* vp8_entropymodedata.h */; };
                4145E48D1EF88B9D00FCF6E6 /* video_decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4145E48B1EF88B9600FCF6E6 /* video_decoder.h */; };
                4145E48E1EF88B9D00FCF6E6 /* video_encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4145E48C1EF88B9D00FCF6E6 /* video_encoder.h */; };
                4145E4911EF88EF700FCF6E6 /* webrtc_libyuv.h in Headers */ = {isa = PBXBuildFile; fileRef = 4145E4901EF88EF500FCF6E6 /* webrtc_libyuv.h */; };
                415F1FCD212730F000064CBF /* audio_mixer.h in Headers */ = {isa = PBXBuildFile; fileRef = 415F1FC9212730F000064CBF /* audio_mixer.h */; };
                415F1FCE212730F000064CBF /* audio_frame.cc in Sources */ = {isa = PBXBuildFile; fileRef = 415F1FCA212730F000064CBF /* audio_frame.cc */; };
                415F1FCF212730F000064CBF /* audio_frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 415F1FCB212730F000064CBF /* audio_frame.h */; };
+               416731B3212E0430001280EB /* boolhuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731A6212E0425001280EB /* boolhuff.c */; };
+               416731B4212E0430001280EB /* denoising.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731AF212E0428001280EB /* denoising.c */; };
+               416731B5212E0430001280EB /* ethreading.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731B0212E0428001280EB /* ethreading.c */; };
+               416731B6212E0430001280EB /* lookahead.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731AC212E0427001280EB /* lookahead.c */; };
+               416731B7212E0430001280EB /* mcomp.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731AE212E0428001280EB /* mcomp.c */; };
+               416731B8212E0430001280EB /* modecosts.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731AB212E0427001280EB /* modecosts.c */; };
+               416731B9212E0430001280EB /* mr_dissim.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731AA212E0426001280EB /* mr_dissim.c */; };
+               416731BB212E0430001280EB /* picklpf.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731AD212E0427001280EB /* picklpf.c */; };
+               416731BC212E0430001280EB /* ratectrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731A7212E0425001280EB /* ratectrl.c */; };
+               416731BD212E0430001280EB /* rdopt.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731A5212E0425001280EB /* rdopt.c */; };
+               416731BE212E0430001280EB /* segmentation.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731A9212E0426001280EB /* segmentation.c */; };
+               416731BF212E0430001280EB /* tokenize.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731B1212E0429001280EB /* tokenize.c */; };
+               416731C0212E0430001280EB /* treewriter.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731B2212E0429001280EB /* treewriter.c */; };
+               416731C1212E0430001280EB /* block.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDA0212E03EC00E54E93 /* block.h */; };
+               416731C2212E0430001280EB /* dct_value_tokens.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDAA212E03F000E54E93 /* dct_value_tokens.h */; };
+               416731C3212E0430001280EB /* dct.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EEFDA5212E03EE00E54E93 /* dct.c */; };
+               416731C4212E0430001280EB /* defaultcoefcounts.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDAC212E03F000E54E93 /* defaultcoefcounts.h */; };
+               416731C5212E0430001280EB /* encodeframe.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EEFDA8212E03EF00E54E93 /* encodeframe.c */; };
+               416731C6212E0430001280EB /* encodeframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDA3212E03EE00E54E93 /* encodeframe.h */; };
+               416731C7212E0430001280EB /* encodeintra.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EEFDA6212E03EF00E54E93 /* encodeintra.c */; };
+               416731C8212E0430001280EB /* encodeintra.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDA9212E03F000E54E93 /* encodeintra.h */; };
+               416731C9212E0430001280EB /* encodemb.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EEFDA1212E03ED00E54E93 /* encodemb.c */; };
+               416731CA212E0430001280EB /* encodemv.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EEFD9E212E03EB00E54E93 /* encodemv.c */; };
+               416731CB212E0430001280EB /* encodemv.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDAD212E03F100E54E93 /* encodemv.h */; };
+               416731CC212E0430001280EB /* firstpass.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDA4212E03EE00E54E93 /* firstpass.h */; };
+               416731CD212E0430001280EB /* onyx_int.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDA7212E03EF00E54E93 /* onyx_int.h */; };
+               416731CE212E0430001280EB /* picklpf.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFD9F212E03EB00E54E93 /* picklpf.h */; };
+               416731CF212E0430001280EB /* temporal_filter.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EEFDAB212E03F000E54E93 /* temporal_filter.c */; };
+               416731D0212E0430001280EB /* tokenize.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EEFDA2212E03ED00E54E93 /* tokenize.h */; };
+               416731D1212E0430001280EB /* bitstream.c in Sources */ = {isa = PBXBuildFile; fileRef = 41CBAFA7212E03AD00DE1E1D /* bitstream.c */; };
+               416731D2212E0430001280EB /* bitstream.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CBAFA6212E03AD00DE1E1D /* bitstream.h */; };
+               416731D3212E0430001280EB /* denoising.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CBAFA4212E03AC00DE1E1D /* denoising.h */; };
+               416731D4212E0430001280EB /* firstpass.c in Sources */ = {isa = PBXBuildFile; fileRef = 41CBAFA9212E03AD00DE1E1D /* firstpass.c */; };
+               416731D5212E0430001280EB /* mcomp.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CBAFA5212E03AC00DE1E1D /* mcomp.h */; };
+               416731D6212E0430001280EB /* pickinter.c in Sources */ = {isa = PBXBuildFile; fileRef = 41CBAFAA212E03AD00DE1E1D /* pickinter.c */; };
+               416731D7212E0430001280EB /* vp8_quantize.c in Sources */ = {isa = PBXBuildFile; fileRef = 41CBAFA8212E03AD00DE1E1D /* vp8_quantize.c */; };
                416D3BDB212731C200775F09 /* adaptive_agc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41D6B46E212731A4008F9353 /* adaptive_agc.cc */; };
                416D3BDC212731C200775F09 /* adaptive_agc.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D6B464212731A2008F9353 /* adaptive_agc.h */; };
                416D3BDD212731C200775F09 /* adaptive_mode_level_estimator_agc.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D6B462212731A1008F9353 /* adaptive_mode_level_estimator_agc.h */; };
                416D3BED212731C200775F09 /* vector_float_frame.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41D6B466212731A2008F9353 /* vector_float_frame.cc */; };
                417DA4581EF9CD0D00E869DB /* RTCUIApplicationStatusObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 417DA4561EF9CD0A00E869DB /* RTCUIApplicationStatusObserver.h */; };
                417F7AC72134A08000FBA7EC /* never_destroyed.h in Headers */ = {isa = PBXBuildFile; fileRef = 417F7AC62134A07F00FBA7EC /* never_destroyed.h */; };
+               419100B02152EC9000A6F17B /* denoising_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100A82152EC7400A6F17B /* denoising_neon.c */; };
+               419100B12152EC9000A6F17B /* fastquantizeb_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100AA2152EC7500A6F17B /* fastquantizeb_neon.c */; };
+               419100B22152EC9000A6F17B /* shortfdct_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100AB2152EC7500A6F17B /* shortfdct_neon.c */; };
+               419100B32152EC9000A6F17B /* vp8_shortwalsh4x4_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100A92152EC7400A6F17B /* vp8_shortwalsh4x4_neon.c */; };
+               419100D62152ECE200A6F17B /* loopfilter_arm.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100B62152ECD300A6F17B /* loopfilter_arm.c */; };
+               419100D72152ECE700A6F17B /* bilinearpredict_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100BD2152ECDC00A6F17B /* bilinearpredict_neon.c */; };
+               419100D82152ECE700A6F17B /* copymem_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100BC2152ECDC00A6F17B /* copymem_neon.c */; };
+               419100D92152ECE700A6F17B /* dc_only_idct_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100B82152ECDB00A6F17B /* dc_only_idct_add_neon.c */; };
+               419100DA2152ECE700A6F17B /* dequant_idct_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100BB2152ECDC00A6F17B /* dequant_idct_neon.c */; };
+               419100DB2152ECE700A6F17B /* dequantizeb_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100C62152ECDE00A6F17B /* dequantizeb_neon.c */; };
+               419100DC2152ECE700A6F17B /* idct_blk_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100BE2152ECDC00A6F17B /* idct_blk_neon.c */; };
+               419100DD2152ECE700A6F17B /* idct_dequant_0_2x_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100BA2152ECDB00A6F17B /* idct_dequant_0_2x_neon.c */; };
+               419100DE2152ECE700A6F17B /* idct_dequant_full_2x_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100C22152ECDD00A6F17B /* idct_dequant_full_2x_neon.c */; };
+               419100DF2152ECE700A6F17B /* iwalsh_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100C12152ECDD00A6F17B /* iwalsh_neon.c */; };
+               419100E02152ECE700A6F17B /* loopfiltersimplehorizontaledge_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100C02152ECDD00A6F17B /* loopfiltersimplehorizontaledge_neon.c */; };
+               419100E12152ECE700A6F17B /* loopfiltersimpleverticaledge_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100C42152ECDD00A6F17B /* loopfiltersimpleverticaledge_neon.c */; };
+               419100E22152ECE700A6F17B /* mbloopfilter_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100C32152ECDD00A6F17B /* mbloopfilter_neon.c */; };
+               419100E32152ECE700A6F17B /* shortidct4x4llm_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100BF2152ECDC00A6F17B /* shortidct4x4llm_neon.c */; };
+               419100E42152ECE700A6F17B /* sixtappredict_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100C52152ECDE00A6F17B /* sixtappredict_neon.c */; };
+               419100E52152ECE700A6F17B /* vp8_loopfilter_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100B92152ECDB00A6F17B /* vp8_loopfilter_neon.c */; };
                4192413A2127372400634FCF /* features_extraction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 419241312127372200634FCF /* features_extraction.cc */; };
                4192413B2127372400634FCF /* features_extraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 419241322127372200634FCF /* features_extraction.h */; };
                4192413C2127372400634FCF /* pitch_search.h in Headers */ = {isa = PBXBuildFile; fileRef = 419241332127372300634FCF /* pitch_search.h */; };
                41A08BB0212681C8001D5D7B /* video_source_interface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41F263C62126818A00274F59 /* video_source_interface.cc */; };
                41A08BB1212681C8001D5D7B /* video_source_interface.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F263BE2126818800274F59 /* video_source_interface.h */; };
                41A08BB2212681C8001D5D7B /* video_stream_decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F263C52126818A00274F59 /* video_stream_decoder.h */; };
-               41A08BB3212681C8001D5D7B /* video_stream_encoder_create.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F263C02126818900274F59 /* video_stream_encoder_create.h */; };
                41A08BB4212681C8001D5D7B /* video_stream_encoder_interface.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F263C32126818900274F59 /* video_stream_encoder_interface.h */; };
                41A08BB5212681C8001D5D7B /* video_stream_encoder_observer.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F263BD2126818800274F59 /* video_stream_encoder_observer.h */; };
                41A08BB821268A7D001D5D7B /* memory.h in Headers */ = {isa = PBXBuildFile; fileRef = 41A08BB721268A7D001D5D7B /* memory.h */; };
                41A3921B1EFC5AB800C4516A /* x25519-asm-x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = 41A392191EFC5AB800C4516A /* x25519-asm-x86_64.S */; };
                41A392201EFC5CF500C4516A /* e_aes.c in Sources */ = {isa = PBXBuildFile; fileRef = 41A3918C1EFC44EA00C4516A /* e_aes.c */; };
                41A392211EFC5CFA00C4516A /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = 41A391EB1EFC493000C4516A /* aes.c */; };
-               41AF2D13212CD6AC00D033D5 /* RTCVideoCodecH264.mm in Sources */ = {isa = PBXBuildFile; fileRef = 41ECEAB520630108009D5141 /* RTCVideoCodecH264.mm */; };
                41AF2D14212CD6AF00D033D5 /* RTCVideoDecoderH264.mm in Sources */ = {isa = PBXBuildFile; fileRef = 413A23F81FE1987C00373E99 /* RTCVideoDecoderH264.mm */; };
+               41BAE3C0212E2C5B00E22482 /* vpx_thread.c in Sources */ = {isa = PBXBuildFile; fileRef = 41330A39212E2C3600280939 /* vpx_thread.c */; };
+               41BAE3C1212E2C5B00E22482 /* vpx_thread.h in Headers */ = {isa = PBXBuildFile; fileRef = 41330A36212E2C3500280939 /* vpx_thread.h */; };
+               41BAE3C2212E2C5B00E22482 /* vpx_write_yuv_frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 41330A37212E2C3600280939 /* vpx_write_yuv_frame.c */; };
+               41BAE3C3212E2C5B00E22482 /* vpx_write_yuv_frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 41330A38212E2C3600280939 /* vpx_write_yuv_frame.h */; };
                41BCE753214C81A800A748F1 /* VideoProcessingSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 41ECEAFB20646664009D5141 /* VideoProcessingSoftLink.h */; };
+               41C628FA212E2DB0002313D4 /* avg_intrin_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3CC212E2D9100E22482 /* avg_intrin_sse2.c */; };
+               41C628FC212E2DB0002313D4 /* fwd_txfm_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3D0212E2D9200E22482 /* fwd_txfm_sse2.c */; };
+               41C62907212E2DB0002313D4 /* loopfilter_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3CA212E2D9000E22482 /* loopfilter_sse2.c */; };
+               41C6290B212E2DB0002313D4 /* vpx_asm_stubs.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3CE212E2D9100E22482 /* vpx_asm_stubs.c */; };
+               41C6290D212E2DB0002313D4 /* vpx_subpixel_8t_intrin_ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BAE3C9212E2D9000E22482 /* vpx_subpixel_8t_intrin_ssse3.c */; };
+               41C6291D212E2DE9002313D4 /* quantize_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C6290F212E2DE3002313D4 /* quantize_sse2.c */; };
+               41C6291F212E2DE9002313D4 /* avg_pred_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62911212E2DE4002313D4 /* avg_pred_sse2.c */; };
+               41C62922212E2DE9002313D4 /* variance_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62914212E2DE5002313D4 /* variance_sse2.c */; };
+               41C62923212E2DE9002313D4 /* quantize_ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62915212E2DE5002313D4 /* quantize_ssse3.c */; };
+               41C62925212E2DE9002313D4 /* inv_txfm_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62917212E2DE6002313D4 /* inv_txfm_sse2.c */; };
+               41C62927212E2DE9002313D4 /* inv_txfm_ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C62919212E2DE7002313D4 /* inv_txfm_ssse3.c */; };
+               41C62928212E2DE9002313D4 /* sum_squares_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 41C6291A212E2DE8002313D4 /* sum_squares_sse2.c */; };
+               41C62936212E2EE5002313D4 /* default_temporal_layers.cc in Sources */ = {isa = PBXBuildFile; fileRef = 419C842B1FE24E7E0040C30F /* default_temporal_layers.cc */; };
+               41C62937212E2F1E002313D4 /* alloccommon.c in Sources */ = {isa = PBXBuildFile; fileRef = 41673201212E0490001280EB /* alloccommon.c */; };
+               41C62938212E2F1E002313D4 /* blockd.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731EC212E048B001280EB /* blockd.c */; };
+               41C62939212E2F1E002313D4 /* context.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F3212E048D001280EB /* context.c */; };
+               41C6293A212E2F1E002313D4 /* copy_c.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731FF212E048F001280EB /* copy_c.c */; };
+               41C6293B212E2F1E002313D4 /* debugmodes.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F7212E048E001280EB /* debugmodes.c */; };
+               41C6293C212E2F1E002313D4 /* dequantize.c in Sources */ = {isa = PBXBuildFile; fileRef = 41673200212E048F001280EB /* dequantize.c */; };
+               41C6293D212E2F1E002313D4 /* entropy.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731FC212E048F001280EB /* entropy.c */; };
+               41C6293E212E2F1E002313D4 /* entropymode.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F9212E048E001280EB /* entropymode.c */; };
+               41C6293F212E2F1E002313D4 /* entropymv.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731EE212E048C001280EB /* entropymv.c */; };
+               41C62940212E2F1E002313D4 /* extend.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731FB212E048E001280EB /* extend.c */; };
+               41C62941212E2F1E002313D4 /* filter.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F6212E048D001280EB /* filter.c */; };
+               41C62942212E2F1E002313D4 /* findnearmv.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731FE212E048F001280EB /* findnearmv.c */; };
+               41C62943212E2F1E002313D4 /* idct_blk.c in Sources */ = {isa = PBXBuildFile; fileRef = 41673206212E0491001280EB /* idct_blk.c */; };
+               41C62944212E2F1E002313D4 /* idctllm.c in Sources */ = {isa = PBXBuildFile; fileRef = 41673204212E0491001280EB /* idctllm.c */; };
+               41C62945212E2F1E002313D4 /* loopfilter_filters.c in Sources */ = {isa = PBXBuildFile; fileRef = 41673202212E0490001280EB /* loopfilter_filters.c */; };
+               41C62946212E2F1E002313D4 /* mbpitch.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731FD212E048F001280EB /* mbpitch.c */; };
+               41C62947212E2F1E002313D4 /* mfqe.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731ED212E048C001280EB /* mfqe.c */; };
+               41C62948212E2F1E002313D4 /* modecont.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731EB212E048B001280EB /* modecont.c */; };
+               41C62949212E2F1E002313D4 /* postproc.c in Sources */ = {isa = PBXBuildFile; fileRef = 41673205212E0491001280EB /* postproc.c */; };
+               41C6294A212E2F1E002313D4 /* reconinter.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F2212E048D001280EB /* reconinter.c */; };
+               41C6294B212E2F1E002313D4 /* reconintra.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F4212E048D001280EB /* reconintra.c */; };
+               41C6294C212E2F1E002313D4 /* reconintra4x4.c in Sources */ = {isa = PBXBuildFile; fileRef = 41673203212E0490001280EB /* reconintra4x4.c */; };
+               41C6294D212E2F1E002313D4 /* rtcd.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F0212E048C001280EB /* rtcd.c */; };
+               41C6294E212E2F1E002313D4 /* setupintrarecon.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731EF212E048C001280EB /* setupintrarecon.c */; };
+               41C6294F212E2F1E002313D4 /* swapyv12buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F8212E048E001280EB /* swapyv12buffer.c */; };
+               41C62950212E2F1E002313D4 /* treecoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F1212E048C001280EB /* treecoder.c */; };
+               41C62951212E2F1E002313D4 /* vp8_loopfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731FA212E048E001280EB /* vp8_loopfilter.c */; };
+               41C62952212E2F1E002313D4 /* vp8_skin_detection.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731F5212E048D001280EB /* vp8_skin_detection.c */; };
+               41C62953212E2FA6002313D4 /* vp8_rtcd.h in Headers */ = {isa = PBXBuildFile; fileRef = 4105EB9B212E02CC008C0C20 /* vp8_rtcd.h */; };
+               41CBAF94212E039300DE1E1D /* dboolhuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 4105EBB5212E035D008C0C20 /* dboolhuff.c */; };
+               41CBAF95212E039300DE1E1D /* decodeframe.c in Sources */ = {isa = PBXBuildFile; fileRef = 4105EBB2212E035C008C0C20 /* decodeframe.c */; };
+               41CBAF96212E039300DE1E1D /* decodemv.c in Sources */ = {isa = PBXBuildFile; fileRef = 41CBAF90212E037E00DE1E1D /* decodemv.c */; };
+               41CBAF97212E039300DE1E1D /* decoderthreading.h in Headers */ = {isa = PBXBuildFile; fileRef = 4105EBB7212E035D008C0C20 /* decoderthreading.h */; };
+               41CBAF98212E039300DE1E1D /* detokenize.c in Sources */ = {isa = PBXBuildFile; fileRef = 4105EBB4212E035D008C0C20 /* detokenize.c */; };
+               41CBAF9A212E039300DE1E1D /* onyxd_if.c in Sources */ = {isa = PBXBuildFile; fileRef = 4105EBB1212E035C008C0C20 /* onyxd_if.c */; };
+               41CBAF9B212E039300DE1E1D /* threading.c in Sources */ = {isa = PBXBuildFile; fileRef = 4105EBB3212E035C008C0C20 /* threading.c */; };
+               41CBAF9C212E039300DE1E1D /* treereader.h in Headers */ = {isa = PBXBuildFile; fileRef = 4105EBB6212E035D008C0C20 /* treereader.h */; };
                41D6B45321273159008F9353 /* call_config.cc in Sources */ = {isa = PBXBuildFile; fileRef = 415F1FD72127313F00064CBF /* call_config.cc */; };
                41D6B45421273159008F9353 /* call_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 415F1FDA2127313F00064CBF /* call_config.h */; };
                41D6B45521273159008F9353 /* degraded_call.h in Headers */ = {isa = PBXBuildFile; fileRef = 415F1FD22127313E00064CBF /* degraded_call.h */; };
                41EA54111EFC2D1B002FF04C /* sqrt.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EA53FB1EFC2D1B002FF04C /* sqrt.c */; };
                41EA54191EFC2D53002FF04C /* md4.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EA54131EFC2D4F002FF04C /* md4.c */; };
                41EA541A1EFC2D53002FF04C /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EA54181EFC2D53002FF04C /* md5.c */; };
+               41EAF1B6212E29C1009F73EC /* RTCDefaultVideoEncoderFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1B3212E29C1009F73EC /* RTCDefaultVideoEncoderFactory.m */; };
+               41EAF1B7212E29C1009F73EC /* RTCVideoCodecVP8.mm in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1B4212E29C1009F73EC /* RTCVideoCodecVP8.mm */; };
+               41EAF1C3212E2AB2009F73EC /* svc_encodeframe.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1BD212E2AAD009F73EC /* svc_encodeframe.c */; };
+               41EAF1C4212E2AB2009F73EC /* vpx_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1B9212E2AAD009F73EC /* vpx_codec.c */; };
+               41EAF1C5212E2AB2009F73EC /* vpx_decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1BB212E2AAD009F73EC /* vpx_decoder.c */; };
+               41EAF1C6212E2AB2009F73EC /* vpx_encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1BA212E2AAD009F73EC /* vpx_encoder.c */; };
+               41EAF1C7212E2AB2009F73EC /* vpx_image.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EAF1BC212E2AAD009F73EC /* vpx_image.c */; };
+               41EAF1C8212E2B2F009F73EC /* vp8_cx_iface.c in Sources */ = {isa = PBXBuildFile; fileRef = 411ED031212E04CC004320BA /* vp8_cx_iface.c */; };
+               41EAF1C9212E2B32009F73EC /* vp8_dx_iface.c in Sources */ = {isa = PBXBuildFile; fileRef = 411ED032212E04CC004320BA /* vp8_dx_iface.c */; };
                41ECEAB620630108009D5141 /* RTCVideoCodec+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 41ECEAB320630107009D5141 /* RTCVideoCodec+Private.h */; };
                41ECEAB720630108009D5141 /* RTCVideoCodec.mm in Sources */ = {isa = PBXBuildFile; fileRef = 41ECEAB420630107009D5141 /* RTCVideoCodec.mm */; };
                41ECEABC206403C2009D5141 /* WebKitUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 41ECEABB206403C1009D5141 /* WebKitUtilities.h */; };
                41ECEAFC20646664009D5141 /* EncoderUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 41ECEAF920646663009D5141 /* EncoderUtilities.h */; };
                41ECEAFD20646664009D5141 /* VideoProcessingSoftLink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41ECEAFA20646663009D5141 /* VideoProcessingSoftLink.cpp */; };
                41ECEAFE20646664009D5141 /* VideoProcessingSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 41ECEAFB20646664009D5141 /* VideoProcessingSoftLink.h */; };
+               41EED77C2152ED8E000F2A16 /* avg_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478832152ED4300275257 /* avg_neon.c */; };
+               41EED77D2152ED8E000F2A16 /* avg_pred_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 4194786E2152ED3D00275257 /* avg_pred_neon.c */; };
+               41EED77E2152ED8E000F2A16 /* deblock_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 41953C042152ED6300136625 /* deblock_neon.c */; };
+               41EED77F2152ED8E000F2A16 /* fdct_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100F02152ED1800A6F17B /* fdct_neon.c */; };
+               41EED7802152ED8E000F2A16 /* fdct_partial_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478812152ED4300275257 /* fdct_partial_neon.c */; };
+               41EED7812152ED8E000F2A16 /* fdct16x16_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 4194788B2152ED4600275257 /* fdct16x16_neon.c */; };
+               41EED7822152ED8E000F2A16 /* fdct32x32_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478802152ED4300275257 /* fdct32x32_neon.c */; };
+               41EED7832152ED8E000F2A16 /* fwd_txfm_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 41953C062152ED6300136625 /* fwd_txfm_neon.c */; };
+               41EED7842152ED8E000F2A16 /* hadamard_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478752152ED4000275257 /* hadamard_neon.c */; };
+               41EED7942152ED8E000F2A16 /* idct_neon.h in Headers */ = {isa = PBXBuildFile; fileRef = 41953BFF2152ED6100136625 /* idct_neon.h */; };
+               41EED7962152ED8E000F2A16 /* idct4x4_1_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100EC2152ED1700A6F17B /* idct4x4_1_add_neon.c */; };
+               41EED7982152ED8E000F2A16 /* idct4x4_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478872152ED4500275257 /* idct4x4_add_neon.c */; };
+               41EED7992152ED8E000F2A16 /* idct8x8_1_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 41953C072152ED6400136625 /* idct8x8_1_add_neon.c */; };
+               41EED79A2152ED8E000F2A16 /* idct8x8_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100ED2152ED1700A6F17B /* idct8x8_add_neon.c */; };
+               41EED79B2152ED8E000F2A16 /* idct16x16_1_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100F22152ED1800A6F17B /* idct16x16_1_add_neon.c */; };
+               41EED79C2152ED8E000F2A16 /* idct16x16_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 4194787F2152ED4300275257 /* idct16x16_add_neon.c */; };
+               41EED79D2152ED8E000F2A16 /* idct32x32_1_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478782152ED4100275257 /* idct32x32_1_add_neon.c */; };
+               41EED79E2152ED8E000F2A16 /* idct32x32_34_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100E72152ED1600A6F17B /* idct32x32_34_add_neon.c */; };
+               41EED79F2152ED8E000F2A16 /* idct32x32_135_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478792152ED4100275257 /* idct32x32_135_add_neon.c */; };
+               41EED7A02152ED8E000F2A16 /* idct32x32_add_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478892152ED4500275257 /* idct32x32_add_neon.c */; };
+               41EED7A22152ED8E000F2A16 /* intrapred_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478822152ED4300275257 /* intrapred_neon.c */; };
+               41EED7A62152ED8E000F2A16 /* loopfilter_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 4194787E2152ED4200275257 /* loopfilter_neon.c */; };
+               41EED7A72152ED8E000F2A16 /* mem_neon.h in Headers */ = {isa = PBXBuildFile; fileRef = 419100E92152ED1700A6F17B /* mem_neon.h */; };
+               41EED7A82152ED8E000F2A16 /* quantize_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 41953C092152ED6400136625 /* quantize_neon.c */; };
+               41EED7A92152ED8E000F2A16 /* sad_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 41953C022152ED6200136625 /* sad_neon.c */; };
+               41EED7AA2152ED8E000F2A16 /* sad4d_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100F52152ED1900A6F17B /* sad4d_neon.c */; };
+               41EED7AC2152ED8E000F2A16 /* subpel_variance_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478712152ED3E00275257 /* subpel_variance_neon.c */; };
+               41EED7AD2152ED8E000F2A16 /* subtract_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 4194787B2152ED4200275257 /* subtract_neon.c */; };
+               41EED7AE2152ED8E000F2A16 /* sum_neon.h in Headers */ = {isa = PBXBuildFile; fileRef = 419478842152ED4400275257 /* sum_neon.h */; };
+               41EED7AF2152ED8E000F2A16 /* transpose_neon.h in Headers */ = {isa = PBXBuildFile; fileRef = 419100EF2152ED1800A6F17B /* transpose_neon.h */; };
+               41EED7B02152ED8E000F2A16 /* variance_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 4194787D2152ED4200275257 /* variance_neon.c */; };
+               41EED7B22152ED8E000F2A16 /* vpx_convolve_avg_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419478732152ED3F00275257 /* vpx_convolve_avg_neon.c */; };
+               41EED7B42152ED8E000F2A16 /* vpx_convolve_copy_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100EA2152ED1700A6F17B /* vpx_convolve_copy_neon.c */; };
+               41EED7B52152ED8E000F2A16 /* vpx_convolve_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EED77B2152ED84000F2A16 /* vpx_convolve_neon.c */; };
+               41EED7B82152ED8E000F2A16 /* vpx_convolve8_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100F32152ED1800A6F17B /* vpx_convolve8_neon.c */; };
+               41EED7B92152ED8E000F2A16 /* vpx_convolve8_neon.h in Headers */ = {isa = PBXBuildFile; fileRef = 4194786F2152ED3D00275257 /* vpx_convolve8_neon.h */; };
+               41EED7BA2152ED8E000F2A16 /* vpx_scaled_convolve8_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 419100F42152ED1900A6F17B /* vpx_scaled_convolve8_neon.c */; };
+               41EED7BD2152EEC9000F2A16 /* arm.h in Headers */ = {isa = PBXBuildFile; fileRef = 41EED7BB2152EEC8000F2A16 /* arm.h */; };
+               41EED7BE2152EEC9000F2A16 /* arm_cpudetect.c in Sources */ = {isa = PBXBuildFile; fileRef = 41EED7BC2152EEC8000F2A16 /* arm_cpudetect.c */; };
+               41EED7BF2152F1FB000F2A16 /* onyx_if.c in Sources */ = {isa = PBXBuildFile; fileRef = 416731A8212E0426001280EB /* onyx_if.c */; };
+               41EED7C02152F424000F2A16 /* vpx_subpixel_8t_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994E22147561300347814 /* vpx_subpixel_8t_sse2.asm.o */; };
+               41EED7C22152F434000F2A16 /* sad_sse3.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994E12147561300347814 /* sad_sse3.asm.o */; };
+               41EED7C32152F434000F2A16 /* vpx_high_subpixel_8t_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994DF2147561200347814 /* vpx_high_subpixel_8t_sse2.asm.o */; };
+               41EED7C42152F434000F2A16 /* vpx_subpixel_bilinear_ssse3.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 410994E02147561300347814 /* vpx_subpixel_bilinear_ssse3.asm.o */; };
+               41EED7C52152F434000F2A16 /* highbd_sad_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076290214755E600D3D2BF /* highbd_sad_sse2.asm.o */; };
+               41EED7C62152F434000F2A16 /* highbd_sad4d_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107628B214755E500D3D2BF /* highbd_sad4d_sse2.asm.o */; };
+               41EED7C72152F434000F2A16 /* highbd_subpel_variance_impl_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076298214755E800D3D2BF /* highbd_subpel_variance_impl_sse2.asm.o */; };
+               41EED7C82152F434000F2A16 /* highbd_variance_impl_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076292214755E700D3D2BF /* highbd_variance_impl_sse2.asm.o */; };
+               41EED7C92152F434000F2A16 /* intrapred_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076299214755E800D3D2BF /* intrapred_sse2.asm.o */; };
+               41EED7CA2152F434000F2A16 /* intrapred_ssse3.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076291214755E600D3D2BF /* intrapred_ssse3.asm.o */; };
+               41EED7CB2152F434000F2A16 /* inv_wht_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107628C214755E500D3D2BF /* inv_wht_sse2.asm.o */; };
+               41EED7CC2152F434000F2A16 /* sad_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107628F214755E600D3D2BF /* sad_sse2.asm.o */; };
+               41EED7CD2152F434000F2A16 /* sad_sse4.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076294214755E700D3D2BF /* sad_sse4.asm.o */; };
+               41EED7CE2152F434000F2A16 /* sad_ssse3.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076297214755E800D3D2BF /* sad_ssse3.asm.o */; };
+               41EED7CF2152F434000F2A16 /* sad4d_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076293214755E700D3D2BF /* sad4d_sse2.asm.o */; };
+               41EED7D02152F434000F2A16 /* ssim_opt_x86_64.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107628A214755E500D3D2BF /* ssim_opt_x86_64.asm.o */; };
+               41EED7D12152F434000F2A16 /* subpel_variance_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107628D214755E600D3D2BF /* subpel_variance_sse2.asm.o */; };
+               41EED7D22152F434000F2A16 /* subtract_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107629A214755E800D3D2BF /* subtract_sse2.asm.o */; };
+               41EED7D32152F434000F2A16 /* vpx_convolve_copy_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076296214755E700D3D2BF /* vpx_convolve_copy_sse2.asm.o */; };
+               41EED7D42152F434000F2A16 /* vpx_high_subpixel_bilinear_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107629B214755E900D3D2BF /* vpx_high_subpixel_bilinear_sse2.asm.o */; };
+               41EED7D52152F434000F2A16 /* vpx_subpixel_8t_ssse3.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 41076295214755E700D3D2BF /* vpx_subpixel_8t_ssse3.asm.o */; };
+               41EED7D62152F434000F2A16 /* vpx_subpixel_bilinear_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107628E214755E600D3D2BF /* vpx_subpixel_bilinear_sse2.asm.o */; };
+               41EED7D72152F434000F2A16 /* add_noise_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107626B2147558500D3D2BF /* add_noise_sse2.asm.o */; };
+               41EED7D82152F434000F2A16 /* avg_ssse3_x86_64.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107626D2147558600D3D2BF /* avg_ssse3_x86_64.asm.o */; };
+               41EED7D92152F434000F2A16 /* deblock_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107626E2147558600D3D2BF /* deblock_sse2.asm.o */; };
+               41EED7DA2152F434000F2A16 /* fwd_txfm_ssse3_x86_64.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107626C2147558600D3D2BF /* fwd_txfm_ssse3_x86_64.asm.o */; };
+               41EED7DB2152F434000F2A16 /* highbd_intrapred_sse2.asm.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 4107626A2147558500D3D2BF /* highbd_intrapred_sse2.asm.o */; };
+               41EED7DC21531E5F000F2A16 /* sad.c in Sources */ = {isa = PBXBuildFile; fileRef = 413309F0212E2BD600280939 /* sad.c */; };
                41F2635F21267ADF00274F59 /* builtin_video_decoder_factory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41DDB27321267AC000296D47 /* builtin_video_decoder_factory.cc */; };
                41F2636021267ADF00274F59 /* builtin_video_decoder_factory.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DDB27621267AC100296D47 /* builtin_video_decoder_factory.h */; };
                41F2636121267ADF00274F59 /* builtin_video_encoder_factory.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DDB27721267AC100296D47 /* builtin_video_encoder_factory.h */; };
                41F411B91EF8DA9600343C26 /* rtc_event_log_factory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41F411B61EF8DA8A00343C26 /* rtc_event_log_factory.cc */; };
                41F411BA1EF8DA9600343C26 /* rtc_event_log_factory_interface.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F411B71EF8DA9000343C26 /* rtc_event_log_factory_interface.h */; };
                41F411BB1EF8DA9600343C26 /* rtc_event_log_factory.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F411B81EF8DA9500343C26 /* rtc_event_log_factory.h */; };
-               41F411BF1EF8DBA500343C26 /* vp8_noop.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41F411BE1EF8DBA500343C26 /* vp8_noop.cc */; };
                41F411C71EF97BAC00343C26 /* adm_helpers.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41F411C61EF972F100343C26 /* adm_helpers.cc */; };
                41F411C81EF97BAF00343C26 /* adm_helpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F411C51EF972EC00343C26 /* adm_helpers.h */; };
+               41F773FD215AF94C00E72967 /* RTCVideoCodecH264.mm in Sources */ = {isa = PBXBuildFile; fileRef = 41ECEAB520630108009D5141 /* RTCVideoCodecH264.mm */; };
                41F9BF852051C80100ABF0B9 /* candidate.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F9BF772051C7FD00ABF0B9 /* candidate.h */; };
                41F9BF862051C80100ABF0B9 /* jsep.cc in Sources */ = {isa = PBXBuildFile; fileRef = 41F9BF782051C7FD00ABF0B9 /* jsep.cc */; };
                41F9BF872051C80100ABF0B9 /* array_view.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F9BF792051C7FD00ABF0B9 /* array_view.h */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+               4105EB6B212E01D2008C0C20 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FB39D0701200ED9200088E69 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 5C63F6611E414AB6002CA531;
+                       remoteInfo = "Copy webrtc headers";
+               };
+               411ED03F212E0811004320BA /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FB39D0701200ED9200088E69 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 4105EB69212E01D2008C0C20;
+                       remoteInfo = libvpx;
+               };
                5C08848D1E4A97E300403995 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = FB39D0701200ED9200088E69 /* Project object */;
                        );
                        runOnlyForDeploymentPostprocessing = 1;
                };
+               4105EB7D212E01D2008C0C20 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 8;
+                       dstPath = "$(INSTALL_PATH_PREFIX)/usr/local/OpenSourceVersions";
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               4105EB7E212E01D2008C0C20 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 8;
+                       dstPath = "$(INSTALL_PATH_PREFIX)/usr/local/OpenSourceLicenses";
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
                5C0884CB1E4A97E300403995 /* CopyFiles */ = {
                        isa = PBXCopyFilesBuildPhase;
                        buildActionMask = 8;
                4102F6EA2127345F006AE8D7 /* rtp_video_header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtp_video_header.h; sourceTree = "<group>"; };
                4102F6EB21273460006AE8D7 /* contributing_sources.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = contributing_sources.cc; sourceTree = "<group>"; };
                41053B4D212CD8EC004DAC6C /* UIDevice+H264Profile.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "UIDevice+H264Profile.mm"; path = "Video/UIDevice+H264Profile.mm"; sourceTree = "<group>"; };
+               4105EB67212E01C2008C0C20 /* elf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = "<group>"; };
+               4105EB83212E01D2008C0C20 /* libvpx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libvpx.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               4105EB99212E02CB008C0C20 /* vpx_config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_config.c; sourceTree = "<group>"; };
+               4105EB9A212E02CB008C0C20 /* vpx_scale_rtcd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vpx_scale_rtcd.h; sourceTree = "<group>"; };
+               4105EB9B212E02CC008C0C20 /* vp8_rtcd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vp8_rtcd.h; sourceTree = "<group>"; };
+               4105EB9C212E02CC008C0C20 /* vpx_dsp_rtcd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vpx_dsp_rtcd.h; sourceTree = "<group>"; };
+               4105EB9D212E02CC008C0C20 /* vpx_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vpx_config.h; sourceTree = "<group>"; };
+               4105EB9E212E02CC008C0C20 /* vp9_rtcd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vp9_rtcd.h; sourceTree = "<group>"; };
+               4105EB9F212E02CC008C0C20 /* vpx_config.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_config.asm; sourceTree = "<group>"; };
+               4105EBB1212E035C008C0C20 /* onyxd_if.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = onyxd_if.c; path = decoder/onyxd_if.c; sourceTree = "<group>"; };
+               4105EBB2212E035C008C0C20 /* decodeframe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = decodeframe.c; path = decoder/decodeframe.c; sourceTree = "<group>"; };
+               4105EBB3212E035C008C0C20 /* threading.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = threading.c; path = decoder/threading.c; sourceTree = "<group>"; };
+               4105EBB4212E035D008C0C20 /* detokenize.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = detokenize.c; path = decoder/detokenize.c; sourceTree = "<group>"; };
+               4105EBB5212E035D008C0C20 /* dboolhuff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = dboolhuff.c; path = decoder/dboolhuff.c; sourceTree = "<group>"; };
+               4105EBB6212E035D008C0C20 /* treereader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = treereader.h; path = decoder/treereader.h; sourceTree = "<group>"; };
+               4105EBB7212E035D008C0C20 /* decoderthreading.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = decoderthreading.h; path = decoder/decoderthreading.h; sourceTree = "<group>"; };
+               4107626A2147558500D3D2BF /* highbd_intrapred_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = highbd_intrapred_sse2.asm.o; sourceTree = "<group>"; };
+               4107626B2147558500D3D2BF /* add_noise_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = add_noise_sse2.asm.o; sourceTree = "<group>"; };
+               4107626C2147558600D3D2BF /* fwd_txfm_ssse3_x86_64.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = fwd_txfm_ssse3_x86_64.asm.o; sourceTree = "<group>"; };
+               4107626D2147558600D3D2BF /* avg_ssse3_x86_64.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = avg_ssse3_x86_64.asm.o; sourceTree = "<group>"; };
+               4107626E2147558600D3D2BF /* deblock_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = deblock_sse2.asm.o; sourceTree = "<group>"; };
+               4107628A214755E500D3D2BF /* ssim_opt_x86_64.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = ssim_opt_x86_64.asm.o; sourceTree = "<group>"; };
+               4107628B214755E500D3D2BF /* highbd_sad4d_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = highbd_sad4d_sse2.asm.o; sourceTree = "<group>"; };
+               4107628C214755E500D3D2BF /* inv_wht_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = inv_wht_sse2.asm.o; sourceTree = "<group>"; };
+               4107628D214755E600D3D2BF /* subpel_variance_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = subpel_variance_sse2.asm.o; sourceTree = "<group>"; };
+               4107628E214755E600D3D2BF /* vpx_subpixel_bilinear_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vpx_subpixel_bilinear_sse2.asm.o; sourceTree = "<group>"; };
+               4107628F214755E600D3D2BF /* sad_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sad_sse2.asm.o; sourceTree = "<group>"; };
+               41076290214755E600D3D2BF /* highbd_sad_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = highbd_sad_sse2.asm.o; sourceTree = "<group>"; };
+               41076291214755E600D3D2BF /* intrapred_ssse3.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = intrapred_ssse3.asm.o; sourceTree = "<group>"; };
+               41076292214755E700D3D2BF /* highbd_variance_impl_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = highbd_variance_impl_sse2.asm.o; sourceTree = "<group>"; };
+               41076293214755E700D3D2BF /* sad4d_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sad4d_sse2.asm.o; sourceTree = "<group>"; };
+               41076294214755E700D3D2BF /* sad_sse4.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sad_sse4.asm.o; sourceTree = "<group>"; };
+               41076295214755E700D3D2BF /* vpx_subpixel_8t_ssse3.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vpx_subpixel_8t_ssse3.asm.o; sourceTree = "<group>"; };
+               41076296214755E700D3D2BF /* vpx_convolve_copy_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vpx_convolve_copy_sse2.asm.o; sourceTree = "<group>"; };
+               41076297214755E800D3D2BF /* sad_ssse3.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sad_ssse3.asm.o; sourceTree = "<group>"; };
+               41076298214755E800D3D2BF /* highbd_subpel_variance_impl_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = highbd_subpel_variance_impl_sse2.asm.o; sourceTree = "<group>"; };
+               41076299214755E800D3D2BF /* intrapred_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = intrapred_sse2.asm.o; sourceTree = "<group>"; };
+               4107629A214755E800D3D2BF /* subtract_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = subtract_sse2.asm.o; sourceTree = "<group>"; };
+               4107629B214755E900D3D2BF /* vpx_high_subpixel_bilinear_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vpx_high_subpixel_bilinear_sse2.asm.o; sourceTree = "<group>"; };
+               410994DF2147561200347814 /* vpx_high_subpixel_8t_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vpx_high_subpixel_8t_sse2.asm.o; sourceTree = "<group>"; };
+               410994E02147561300347814 /* vpx_subpixel_bilinear_ssse3.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vpx_subpixel_bilinear_ssse3.asm.o; sourceTree = "<group>"; };
+               410994E12147561300347814 /* sad_sse3.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = sad_sse3.asm.o; sourceTree = "<group>"; };
+               410994E22147561300347814 /* vpx_subpixel_8t_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = vpx_subpixel_8t_sse2.asm.o; sourceTree = "<group>"; };
+               410994FA2147567800347814 /* dequantize_mmx.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = dequantize_mmx.asm.o; sourceTree = "<group>"; };
+               410994FB2147567800347814 /* iwalsh_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = iwalsh_sse2.asm.o; sourceTree = "<group>"; };
+               410994FC2147567800347814 /* subpixel_mmx.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = subpixel_mmx.asm.o; sourceTree = "<group>"; };
+               410994FD2147567900347814 /* subpixel_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = subpixel_sse2.asm.o; sourceTree = "<group>"; };
+               410994FE2147567900347814 /* idctllm_mmx.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = idctllm_mmx.asm.o; sourceTree = "<group>"; };
+               410994FF2147567900347814 /* subpixel_ssse3.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = subpixel_ssse3.asm.o; sourceTree = "<group>"; };
+               410995002147567900347814 /* loopfilter_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = loopfilter_sse2.asm.o; sourceTree = "<group>"; };
+               410995012147567900347814 /* recon_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = recon_sse2.asm.o; sourceTree = "<group>"; };
+               410995022147567A00347814 /* copy_sse3.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = copy_sse3.asm.o; sourceTree = "<group>"; };
+               410995032147567A00347814 /* loopfilter_block_sse2_x86_64.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = loopfilter_block_sse2_x86_64.asm.o; sourceTree = "<group>"; };
+               410995042147567A00347814 /* mfqe_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = mfqe_sse2.asm.o; sourceTree = "<group>"; };
                41109AA61E5FA19200C0955A /* i420_buffer_pool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = i420_buffer_pool.h; path = include/i420_buffer_pool.h; sourceTree = "<group>"; };
                41109AA71E5FA19200C0955A /* video_frame_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = video_frame_buffer.h; path = include/video_frame_buffer.h; sourceTree = "<group>"; };
                41109AA81E5FA19200C0955A /* frame_callback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = frame_callback.h; path = include/frame_callback.h; sourceTree = "<group>"; };
                41109AA91E5FA19200C0955A /* bitrate_adjuster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bitrate_adjuster.h; path = include/bitrate_adjuster.h; sourceTree = "<group>"; };
                41109AAA1E5FA19200C0955A /* incoming_video_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = incoming_video_stream.h; path = include/incoming_video_stream.h; sourceTree = "<group>"; };
+               411ED02F212E04BD004320BA /* quant_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quant_common.c; sourceTree = "<group>"; };
+               411ED031212E04CC004320BA /* vp8_cx_iface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_cx_iface.c; sourceTree = "<group>"; };
+               411ED032212E04CC004320BA /* vp8_dx_iface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_dx_iface.c; sourceTree = "<group>"; };
+               411ED035212E05DE004320BA /* libvpx.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = libvpx.xcconfig; sourceTree = "<group>"; };
+               41239AD5214756A200396F81 /* idctllm_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = idctllm_sse2.asm.o; sourceTree = "<group>"; };
+               41239AD6214756A200396F81 /* copy_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = copy_sse2.asm.o; sourceTree = "<group>"; };
+               41239AD7214756A300396F81 /* recon_mmx.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = recon_mmx.asm.o; sourceTree = "<group>"; };
+               41239AE6214756C700396F81 /* filter_x86.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_x86.c; sourceTree = "<group>"; };
+               41239AE7214756C700396F81 /* idct_blk_mmx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct_blk_mmx.c; sourceTree = "<group>"; };
+               41239AE8214756C700396F81 /* vp8_asm_stubs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_asm_stubs.c; sourceTree = "<group>"; };
+               41239AE9214756C700396F81 /* filter_x86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter_x86.h; sourceTree = "<group>"; };
+               41239AEA214756C800396F81 /* loopfilter_x86.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = loopfilter_x86.c; sourceTree = "<group>"; };
+               41239AEB214756C800396F81 /* idct_blk_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct_blk_sse2.c; sourceTree = "<group>"; };
+               41239B08214757AD00396F81 /* vpx_scale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_scale.c; sourceTree = "<group>"; };
+               41239B09214757AD00396F81 /* yv12config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = yv12config.c; sourceTree = "<group>"; };
+               41239B0A214757AE00396F81 /* yv12extend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = yv12extend.c; sourceTree = "<group>"; };
+               41239B0B214757AE00396F81 /* gen_scalers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gen_scalers.c; sourceTree = "<group>"; };
+               41239B17214759B500396F81 /* fwalsh_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = fwalsh_sse2.asm.o; sourceTree = "<group>"; };
+               41239B18214759B600396F81 /* encodeopt.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = encodeopt.asm.o; sourceTree = "<group>"; };
+               41239B19214759B600396F81 /* dct_sse2.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = dct_sse2.asm.o; sourceTree = "<group>"; };
+               41239B1E21475F0700396F81 /* emms.asm.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = emms.asm.o; sourceTree = "<group>"; };
+               41239B3A21476AE500396F81 /* systemdependent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = systemdependent.c; sourceTree = "<group>"; };
                412455421EF87C0900F11809 /* dot_product_with_scale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dot_product_with_scale.h; path = signal_processing/dot_product_with_scale.h; sourceTree = "<group>"; };
                412455431EF87C0F00F11809 /* dot_product_with_scale.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dot_product_with_scale.cc; path = signal_processing/dot_product_with_scale.cc; sourceTree = "<group>"; };
                4124554A1EF8874300F11809 /* video_frame_buffer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = video_frame_buffer.cc; sourceTree = "<group>"; };
                412455541EF887FA00F11809 /* packetlossestimator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = packetlossestimator.cc; sourceTree = "<group>"; };
                412455551EF887FA00F11809 /* packetlossestimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = packetlossestimator.h; sourceTree = "<group>"; };
+               4129408E212E128B00AD95E7 /* libvpx_vp8_encoder.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = libvpx_vp8_encoder.cc; path = codecs/vp8/libvpx_vp8_encoder.cc; sourceTree = "<group>"; };
+               4129408F212E128C00AD95E7 /* libvpx_vp8_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libvpx_vp8_encoder.h; path = codecs/vp8/libvpx_vp8_encoder.h; sourceTree = "<group>"; };
+               41294090212E128C00AD95E7 /* libvpx_vp8_decoder.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = libvpx_vp8_decoder.cc; path = codecs/vp8/libvpx_vp8_decoder.cc; sourceTree = "<group>"; };
+               41294091212E128C00AD95E7 /* libvpx_vp8_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libvpx_vp8_decoder.h; path = codecs/vp8/libvpx_vp8_decoder.h; sourceTree = "<group>"; };
                41299B8E2127367A00B3414B /* isac_vad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = isac_vad.c; path = source/isac_vad.c; sourceTree = "<group>"; };
                41299B8F2127367B00B3414B /* isac_vad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = isac_vad.h; path = source/isac_vad.h; sourceTree = "<group>"; };
                41299B902127367B00B3414B /* pitch_filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pitch_filter.h; path = source/pitch_filter.h; sourceTree = "<group>"; };
                4130922B1EF8D76100757C55 /* aec_dump_impl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = aec_dump_impl.cc; path = Source/webrtc/modules/audio_processing/aec_dump/aec_dump_impl.cc; sourceTree = SOURCE_ROOT; };
                4130922C1EF8D76A00757C55 /* aec_dump_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aec_dump_impl.h; path = Source/webrtc/modules/audio_processing/aec_dump/aec_dump_impl.h; sourceTree = SOURCE_ROOT; };
                4130922D1EF8D77100757C55 /* aec_dump_factory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aec_dump_factory.h; path = Source/webrtc/modules/audio_processing/aec_dump/aec_dump_factory.h; sourceTree = SOURCE_ROOT; };
+               413309E5212E2BD400280939 /* avg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = avg.c; sourceTree = "<group>"; };
+               413309E6212E2BD400280939 /* bitreader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitreader.c; sourceTree = "<group>"; };
+               413309E7212E2BD400280939 /* quantize.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quantize.c; sourceTree = "<group>"; };
+               413309E8212E2BD400280939 /* ssim.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ssim.c; sourceTree = "<group>"; };
+               413309E9212E2BD400280939 /* add_noise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = add_noise.c; sourceTree = "<group>"; };
+               413309EA212E2BD500280939 /* psnrhvs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = psnrhvs.c; sourceTree = "<group>"; };
+               413309EB212E2BD500280939 /* fwd_txfm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fwd_txfm.c; sourceTree = "<group>"; };
+               413309EC212E2BD500280939 /* intrapred.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = intrapred.c; sourceTree = "<group>"; };
+               413309ED212E2BD500280939 /* subtract.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = subtract.c; sourceTree = "<group>"; };
+               413309EE212E2BD600280939 /* loopfilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = loopfilter.c; sourceTree = "<group>"; };
+               413309EF212E2BD600280939 /* prob.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prob.c; sourceTree = "<group>"; };
+               413309F0212E2BD600280939 /* sad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sad.c; sourceTree = "<group>"; };
+               413309F1212E2BD600280939 /* bitwriter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitwriter.c; sourceTree = "<group>"; };
+               413309F2212E2BD600280939 /* deblock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = deblock.c; sourceTree = "<group>"; };
+               413309F3212E2BD700280939 /* sum_squares.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sum_squares.c; sourceTree = "<group>"; };
+               413309F4212E2BD700280939 /* variance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = variance.c; sourceTree = "<group>"; };
+               413309F5212E2BD700280939 /* vpx_convolve.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_convolve.c; sourceTree = "<group>"; };
+               413309F6212E2BD700280939 /* inv_txfm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inv_txfm.c; sourceTree = "<group>"; };
+               413309F7212E2BD800280939 /* skin_detection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = skin_detection.c; sourceTree = "<group>"; };
+               413309F8212E2BD800280939 /* vpx_dsp_rtcd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_dsp_rtcd.c; sourceTree = "<group>"; };
+               413309F9212E2BD800280939 /* fastssim.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fastssim.c; sourceTree = "<group>"; };
+               41330A2C212E2BED00280939 /* vpx_mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vpx_mem.h; sourceTree = "<group>"; };
+               41330A2D212E2BEE00280939 /* vpx_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_mem.c; sourceTree = "<group>"; };
+               41330A32212E2C1E00280939 /* vpx_scale_rtcd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_scale_rtcd.c; sourceTree = "<group>"; };
+               41330A33212E2C1E00280939 /* vpx_scale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vpx_scale.h; sourceTree = "<group>"; };
+               41330A36212E2C3500280939 /* vpx_thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vpx_thread.h; sourceTree = "<group>"; };
+               41330A37212E2C3600280939 /* vpx_write_yuv_frame.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_write_yuv_frame.c; sourceTree = "<group>"; };
+               41330A38212E2C3600280939 /* vpx_write_yuv_frame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vpx_write_yuv_frame.h; sourceTree = "<group>"; };
+               41330A39212E2C3600280939 /* vpx_thread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_thread.c; sourceTree = "<group>"; };
                413A21381FE0F0EE00373E99 /* srtp_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = srtp_priv.h; path = include/srtp_priv.h; sourceTree = "<group>"; };
                413A21391FE0F0EF00373E99 /* ekt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ekt.h; path = include/ekt.h; sourceTree = "<group>"; };
                413A213A1FE0F0EF00373E99 /* srtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = srtp.h; path = include/srtp.h; sourceTree = "<group>"; };
                41433D2B1F79B39200387B4D /* libwebrtc.iOS.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = libwebrtc.iOS.exp; sourceTree = "<group>"; };
                41433D2C1F79B39200387B4D /* libwebrtc.mac.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = libwebrtc.mac.exp; sourceTree = "<group>"; };
                41433D2D1F79B39200387B4D /* libwebrtc.iOSsim.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = libwebrtc.iOSsim.exp; sourceTree = "<group>"; };
+               414502052152E01A0033B4D3 /* onyxd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = onyxd.h; sourceTree = "<group>"; };
+               414502062152E01B0033B4D3 /* vp8_skin_detection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vp8_skin_detection.h; sourceTree = "<group>"; };
+               414502072152E01B0033B4D3 /* blockd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blockd.h; sourceTree = "<group>"; };
+               414502082152E01B0033B4D3 /* threading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threading.h; sourceTree = "<group>"; };
+               414502092152E01B0033B4D3 /* default_coef_probs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = default_coef_probs.h; sourceTree = "<group>"; };
+               4145020A2152E01B0033B4D3 /* vp8_entropymodedata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vp8_entropymodedata.h; sourceTree = "<group>"; };
+               414502112152E16F0033B4D3 /* vp8_rtcd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vp8_rtcd.h; sourceTree = "<group>"; };
+               414502122152E16F0033B4D3 /* vp9_rtcd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vp9_rtcd.h; sourceTree = "<group>"; };
+               414502132152E16F0033B4D3 /* vpx_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vpx_config.h; sourceTree = "<group>"; };
+               414502142152E16F0033B4D3 /* vpx_scale_rtcd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vpx_scale_rtcd.h; sourceTree = "<group>"; };
                4145E48B1EF88B9600FCF6E6 /* video_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = video_decoder.h; path = Source/webrtc/api/video_codecs/video_decoder.h; sourceTree = SOURCE_ROOT; };
                4145E48C1EF88B9D00FCF6E6 /* video_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = video_encoder.h; path = Source/webrtc/api/video_codecs/video_encoder.h; sourceTree = SOURCE_ROOT; };
                4145E4901EF88EF500FCF6E6 /* webrtc_libyuv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = webrtc_libyuv.h; path = libyuv/include/webrtc_libyuv.h; sourceTree = "<group>"; };
                415F1FD82127313F00064CBF /* packet_receiver.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = packet_receiver.cc; path = call/packet_receiver.cc; sourceTree = "<group>"; };
                415F1FD92127313F00064CBF /* rtp_bitrate_configurator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = rtp_bitrate_configurator.cc; path = call/rtp_bitrate_configurator.cc; sourceTree = "<group>"; };
                415F1FDA2127313F00064CBF /* call_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = call_config.h; path = call/call_config.h; sourceTree = "<group>"; };
+               416731A5212E0425001280EB /* rdopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rdopt.c; path = encoder/rdopt.c; sourceTree = "<group>"; };
+               416731A6212E0425001280EB /* boolhuff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = boolhuff.c; path = encoder/boolhuff.c; sourceTree = "<group>"; };
+               416731A7212E0425001280EB /* ratectrl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = ratectrl.c; path = encoder/ratectrl.c; sourceTree = "<group>"; };
+               416731A8212E0426001280EB /* onyx_if.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = onyx_if.c; path = encoder/onyx_if.c; sourceTree = "<group>"; };
+               416731A9212E0426001280EB /* segmentation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = segmentation.c; path = encoder/segmentation.c; sourceTree = "<group>"; };
+               416731AA212E0426001280EB /* mr_dissim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mr_dissim.c; path = encoder/mr_dissim.c; sourceTree = "<group>"; };
+               416731AB212E0427001280EB /* modecosts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = modecosts.c; path = encoder/modecosts.c; sourceTree = "<group>"; };
+               416731AC212E0427001280EB /* lookahead.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lookahead.c; path = encoder/lookahead.c; sourceTree = "<group>"; };
+               416731AD212E0427001280EB /* picklpf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = picklpf.c; path = encoder/picklpf.c; sourceTree = "<group>"; };
+               416731AE212E0428001280EB /* mcomp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mcomp.c; path = encoder/mcomp.c; sourceTree = "<group>"; };
+               416731AF212E0428001280EB /* denoising.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = denoising.c; path = encoder/denoising.c; sourceTree = "<group>"; };
+               416731B0212E0428001280EB /* ethreading.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = ethreading.c; path = encoder/ethreading.c; sourceTree = "<group>"; };
+               416731B1212E0429001280EB /* tokenize.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = tokenize.c; path = encoder/tokenize.c; sourceTree = "<group>"; };
+               416731B2212E0429001280EB /* treewriter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = treewriter.c; path = encoder/treewriter.c; sourceTree = "<group>"; };
+               416731D9212E045D001280EB /* encodeopt.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = encodeopt.asm; sourceTree = "<group>"; };
+               416731DA212E045D001280EB /* quantize_sse4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quantize_sse4.c; sourceTree = "<group>"; };
+               416731DB212E045D001280EB /* vp8_quantize_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_quantize_sse2.c; sourceTree = "<group>"; };
+               416731DC212E045D001280EB /* dct_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = dct_sse2.asm; sourceTree = "<group>"; };
+               416731DD212E045E001280EB /* vp8_enc_stubs_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_enc_stubs_sse2.c; sourceTree = "<group>"; };
+               416731DE212E045E001280EB /* denoising_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = denoising_sse2.c; sourceTree = "<group>"; };
+               416731DF212E045E001280EB /* vp8_quantize_ssse3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_quantize_ssse3.c; sourceTree = "<group>"; };
+               416731E0212E045E001280EB /* temporal_filter_apply_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = temporal_filter_apply_sse2.asm; sourceTree = "<group>"; };
+               416731E1212E045E001280EB /* fwalsh_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = fwalsh_sse2.asm; sourceTree = "<group>"; };
+               416731EB212E048B001280EB /* modecont.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = modecont.c; sourceTree = "<group>"; };
+               416731EC212E048B001280EB /* blockd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = blockd.c; sourceTree = "<group>"; };
+               416731ED212E048C001280EB /* mfqe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mfqe.c; sourceTree = "<group>"; };
+               416731EE212E048C001280EB /* entropymv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = entropymv.c; sourceTree = "<group>"; };
+               416731EF212E048C001280EB /* setupintrarecon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = setupintrarecon.c; sourceTree = "<group>"; };
+               416731F0212E048C001280EB /* rtcd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rtcd.c; sourceTree = "<group>"; };
+               416731F1212E048C001280EB /* treecoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = treecoder.c; sourceTree = "<group>"; };
+               416731F2212E048D001280EB /* reconinter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reconinter.c; sourceTree = "<group>"; };
+               416731F3212E048D001280EB /* context.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = context.c; sourceTree = "<group>"; };
+               416731F4212E048D001280EB /* reconintra.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reconintra.c; sourceTree = "<group>"; };
+               416731F5212E048D001280EB /* vp8_skin_detection.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vp8_skin_detection.c; sourceTree = "<group>"; };
+               416731F6212E048D001280EB /* filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = filter.c; sourceTree = "<group>"; };
+               416731F7212E048E001280EB /* debugmodes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = debugmodes.c; sourceTree = "<group>"; };
+               416731F8212E048E001280EB /* swapyv12buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = swapyv12buffer.c; sourceTree = "<group>"; };
+               416731F9212E048E001280EB /* entropymode.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = entropymode.c; sourceTree = "<group>"; };
+               416731FA212E048E001280EB /* vp8_loopfilter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vp8_loopfilter.c; sourceTree = "<group>"; };
+               416731FB212E048E001280EB /* extend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = extend.c; sourceTree = "<group>"; };
+               416731FC212E048F001280EB /* entropy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = entropy.c; sourceTree = "<group>"; };
+               416731FD212E048F001280EB /* mbpitch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mbpitch.c; sourceTree = "<group>"; };
+               416731FE212E048F001280EB /* findnearmv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = findnearmv.c; sourceTree = "<group>"; };
+               416731FF212E048F001280EB /* copy_c.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = copy_c.c; sourceTree = "<group>"; };
+               41673200212E048F001280EB /* dequantize.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dequantize.c; sourceTree = "<group>"; };
+               41673201212E0490001280EB /* alloccommon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = alloccommon.c; sourceTree = "<group>"; };
+               41673202212E0490001280EB /* loopfilter_filters.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loopfilter_filters.c; sourceTree = "<group>"; };
+               41673203212E0490001280EB /* reconintra4x4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = reconintra4x4.c; sourceTree = "<group>"; };
+               41673204212E0491001280EB /* idctllm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idctllm.c; sourceTree = "<group>"; };
+               41673205212E0491001280EB /* postproc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = postproc.c; sourceTree = "<group>"; };
+               41673206212E0491001280EB /* idct_blk.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct_blk.c; sourceTree = "<group>"; };
                416D2F101FA8CC0400097345 /* VideoProcessing.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoProcessing.framework; path = System/Library/PrivateFrameworks/VideoProcessing.framework; sourceTree = SDKROOT; };
                417DA4561EF9CD0A00E869DB /* RTCUIApplicationStatusObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTCUIApplicationStatusObserver.h; path = Source/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.h; sourceTree = SOURCE_ROOT; };
                417F7AC62134A07F00FBA7EC /* never_destroyed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = never_destroyed.h; path = rtc_base/never_destroyed.h; sourceTree = "<group>"; };
+               4191009C2152E18D00A6F17B /* vpx_config.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_config.asm; sourceTree = "<group>"; };
+               4191009D2152E18D00A6F17B /* vpx_config.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_config.c; sourceTree = "<group>"; };
+               4191009E2152E18D00A6F17B /* vpx_dsp_rtcd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vpx_dsp_rtcd.h; sourceTree = "<group>"; };
+               419100A82152EC7400A6F17B /* denoising_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = denoising_neon.c; sourceTree = "<group>"; };
+               419100A92152EC7400A6F17B /* vp8_shortwalsh4x4_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_shortwalsh4x4_neon.c; sourceTree = "<group>"; };
+               419100AA2152EC7500A6F17B /* fastquantizeb_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fastquantizeb_neon.c; sourceTree = "<group>"; };
+               419100AB2152EC7500A6F17B /* shortfdct_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shortfdct_neon.c; sourceTree = "<group>"; };
+               419100B62152ECD300A6F17B /* loopfilter_arm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = loopfilter_arm.c; sourceTree = "<group>"; };
+               419100B82152ECDB00A6F17B /* dc_only_idct_add_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dc_only_idct_add_neon.c; sourceTree = "<group>"; };
+               419100B92152ECDB00A6F17B /* vp8_loopfilter_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8_loopfilter_neon.c; sourceTree = "<group>"; };
+               419100BA2152ECDB00A6F17B /* idct_dequant_0_2x_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct_dequant_0_2x_neon.c; sourceTree = "<group>"; };
+               419100BB2152ECDC00A6F17B /* dequant_idct_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dequant_idct_neon.c; sourceTree = "<group>"; };
+               419100BC2152ECDC00A6F17B /* copymem_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = copymem_neon.c; sourceTree = "<group>"; };
+               419100BD2152ECDC00A6F17B /* bilinearpredict_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bilinearpredict_neon.c; sourceTree = "<group>"; };
+               419100BE2152ECDC00A6F17B /* idct_blk_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct_blk_neon.c; sourceTree = "<group>"; };
+               419100BF2152ECDC00A6F17B /* shortidct4x4llm_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shortidct4x4llm_neon.c; sourceTree = "<group>"; };
+               419100C02152ECDD00A6F17B /* loopfiltersimplehorizontaledge_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = loopfiltersimplehorizontaledge_neon.c; sourceTree = "<group>"; };
+               419100C12152ECDD00A6F17B /* iwalsh_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = iwalsh_neon.c; sourceTree = "<group>"; };
+               419100C22152ECDD00A6F17B /* idct_dequant_full_2x_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = idct_dequant_full_2x_neon.c; sourceTree = "<group>"; };
+               419100C32152ECDD00A6F17B /* mbloopfilter_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mbloopfilter_neon.c; sourceTree = "<group>"; };
+               419100C42152ECDD00A6F17B /* loopfiltersimpleverticaledge_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = loopfiltersimpleverticaledge_neon.c; sourceTree = "<group>"; };
+               419100C52152ECDE00A6F17B /* sixtappredict_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sixtappredict_neon.c; sourceTree = "<group>"; };
+               419100C62152ECDE00A6F17B /* dequantizeb_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dequantizeb_neon.c; sourceTree = "<group>"; };
+               419100E72152ED1600A6F17B /* idct32x32_34_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct32x32_34_add_neon.c; sourceTree = "<group>"; };
+               419100E82152ED1600A6F17B /* highbd_idct32x32_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct32x32_add_neon.c; sourceTree = "<group>"; };
+               419100E92152ED1700A6F17B /* mem_neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mem_neon.h; sourceTree = "<group>"; };
+               419100EA2152ED1700A6F17B /* vpx_convolve_copy_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_convolve_copy_neon.c; sourceTree = "<group>"; };
+               419100EB2152ED1700A6F17B /* highbd_idct_neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = highbd_idct_neon.h; sourceTree = "<group>"; };
+               419100EC2152ED1700A6F17B /* idct4x4_1_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct4x4_1_add_neon.c; sourceTree = "<group>"; };
+               419100ED2152ED1700A6F17B /* idct8x8_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct8x8_add_neon.c; sourceTree = "<group>"; };
+               419100EE2152ED1800A6F17B /* idct_neon.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = idct_neon.asm; sourceTree = "<group>"; };
+               419100EF2152ED1800A6F17B /* transpose_neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = transpose_neon.h; sourceTree = "<group>"; };
+               419100F02152ED1800A6F17B /* fdct_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fdct_neon.c; sourceTree = "<group>"; };
+               419100F12152ED1800A6F17B /* highbd_idct32x32_34_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct32x32_34_add_neon.c; sourceTree = "<group>"; };
+               419100F22152ED1800A6F17B /* idct16x16_1_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct16x16_1_add_neon.c; sourceTree = "<group>"; };
+               419100F32152ED1800A6F17B /* vpx_convolve8_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_convolve8_neon.c; sourceTree = "<group>"; };
+               419100F42152ED1900A6F17B /* vpx_scaled_convolve8_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_scaled_convolve8_neon.c; sourceTree = "<group>"; };
+               419100F52152ED1900A6F17B /* sad4d_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sad4d_neon.c; sourceTree = "<group>"; };
                419241312127372200634FCF /* features_extraction.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = features_extraction.cc; sourceTree = "<group>"; };
                419241322127372200634FCF /* features_extraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = features_extraction.h; sourceTree = "<group>"; };
                419241332127372300634FCF /* pitch_search.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pitch_search.h; sourceTree = "<group>"; };
                419242342127665A00634FCF /* voice_processing_audio_unit.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = voice_processing_audio_unit.mm; path = audio/voice_processing_audio_unit.mm; sourceTree = "<group>"; };
                419242352127665A00634FCF /* voice_processing_audio_unit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = voice_processing_audio_unit.h; path = audio/voice_processing_audio_unit.h; sourceTree = "<group>"; };
                4192423F21276D4700634FCF /* RTCPeerConnectionFactory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RTCPeerConnectionFactory.mm; path = PeerConnection/RTCPeerConnectionFactory.mm; sourceTree = "<group>"; };
+               4194786E2152ED3D00275257 /* avg_pred_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = avg_pred_neon.c; sourceTree = "<group>"; };
+               4194786F2152ED3D00275257 /* vpx_convolve8_neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vpx_convolve8_neon.h; sourceTree = "<group>"; };
+               419478702152ED3E00275257 /* highbd_idct16x16_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct16x16_add_neon.c; sourceTree = "<group>"; };
+               419478712152ED3E00275257 /* subpel_variance_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = subpel_variance_neon.c; sourceTree = "<group>"; };
+               419478722152ED3F00275257 /* vpx_convolve_copy_neon_asm.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_convolve_copy_neon_asm.asm; sourceTree = "<group>"; };
+               419478732152ED3F00275257 /* vpx_convolve_avg_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_convolve_avg_neon.c; sourceTree = "<group>"; };
+               419478742152ED3F00275257 /* highbd_intrapred_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_intrapred_neon.c; sourceTree = "<group>"; };
+               419478752152ED4000275257 /* hadamard_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hadamard_neon.c; sourceTree = "<group>"; };
+               419478762152ED4000275257 /* highbd_idct32x32_135_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct32x32_135_add_neon.c; sourceTree = "<group>"; };
+               419478772152ED4000275257 /* highbd_vpx_convolve8_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_vpx_convolve8_neon.c; sourceTree = "<group>"; };
+               419478782152ED4100275257 /* idct32x32_1_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct32x32_1_add_neon.c; sourceTree = "<group>"; };
+               419478792152ED4100275257 /* idct32x32_135_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct32x32_135_add_neon.c; sourceTree = "<group>"; };
+               4194787A2152ED4100275257 /* vpx_convolve_avg_neon_asm.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_convolve_avg_neon_asm.asm; sourceTree = "<group>"; };
+               4194787B2152ED4200275257 /* subtract_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = subtract_neon.c; sourceTree = "<group>"; };
+               4194787C2152ED4200275257 /* highbd_loopfilter_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_loopfilter_neon.c; sourceTree = "<group>"; };
+               4194787D2152ED4200275257 /* variance_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = variance_neon.c; sourceTree = "<group>"; };
+               4194787E2152ED4200275257 /* loopfilter_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loopfilter_neon.c; sourceTree = "<group>"; };
+               4194787F2152ED4300275257 /* idct16x16_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct16x16_add_neon.c; sourceTree = "<group>"; };
+               419478802152ED4300275257 /* fdct32x32_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fdct32x32_neon.c; sourceTree = "<group>"; };
+               419478812152ED4300275257 /* fdct_partial_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fdct_partial_neon.c; sourceTree = "<group>"; };
+               419478822152ED4300275257 /* intrapred_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = intrapred_neon.c; sourceTree = "<group>"; };
+               419478832152ED4300275257 /* avg_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = avg_neon.c; sourceTree = "<group>"; };
+               419478842152ED4400275257 /* sum_neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sum_neon.h; sourceTree = "<group>"; };
+               419478852152ED4400275257 /* highbd_vpx_convolve_avg_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_vpx_convolve_avg_neon.c; sourceTree = "<group>"; };
+               419478862152ED4400275257 /* highbd_vpx_convolve_copy_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_vpx_convolve_copy_neon.c; sourceTree = "<group>"; };
+               419478872152ED4500275257 /* idct4x4_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct4x4_add_neon.c; sourceTree = "<group>"; };
+               419478882152ED4500275257 /* idct4x4_add_neon.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = idct4x4_add_neon.asm; sourceTree = "<group>"; };
+               419478892152ED4500275257 /* idct32x32_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct32x32_add_neon.c; sourceTree = "<group>"; };
+               4194788A2152ED4600275257 /* highbd_idct32x32_1024_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct32x32_1024_add_neon.c; sourceTree = "<group>"; };
+               4194788B2152ED4600275257 /* fdct16x16_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fdct16x16_neon.c; sourceTree = "<group>"; };
+               4194788C2152ED4700275257 /* loopfilter_4_neon.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = loopfilter_4_neon.asm; sourceTree = "<group>"; };
+               4194788D2152ED4700275257 /* highbd_idct8x8_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct8x8_add_neon.c; sourceTree = "<group>"; };
+               4194788E2152ED4700275257 /* loopfilter_8_neon.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = loopfilter_8_neon.asm; sourceTree = "<group>"; };
+               41953BFF2152ED6100136625 /* idct_neon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = idct_neon.h; sourceTree = "<group>"; };
+               41953C002152ED6200136625 /* highbd_idct4x4_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct4x4_add_neon.c; sourceTree = "<group>"; };
+               41953C012152ED6200136625 /* idct4x4_1_add_neon.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = idct4x4_1_add_neon.asm; sourceTree = "<group>"; };
+               41953C022152ED6200136625 /* sad_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sad_neon.c; sourceTree = "<group>"; };
+               41953C032152ED6300136625 /* vpx_convolve8_neon_asm.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_convolve8_neon_asm.asm; sourceTree = "<group>"; };
+               41953C042152ED6300136625 /* deblock_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = deblock_neon.c; sourceTree = "<group>"; };
+               41953C052152ED6300136625 /* vpx_convolve8_avg_neon_asm.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_convolve8_avg_neon_asm.asm; sourceTree = "<group>"; };
+               41953C062152ED6300136625 /* fwd_txfm_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fwd_txfm_neon.c; sourceTree = "<group>"; };
+               41953C072152ED6400136625 /* idct8x8_1_add_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = idct8x8_1_add_neon.c; sourceTree = "<group>"; };
+               41953C082152ED6400136625 /* highbd_vpx_convolve_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_vpx_convolve_neon.c; sourceTree = "<group>"; };
+               41953C092152ED6400136625 /* quantize_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = quantize_neon.c; sourceTree = "<group>"; };
                419C82991FE20CA10040C30F /* interval_budget.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = interval_budget.cc; sourceTree = "<group>"; };
                419C829B1FE20D1B0040C30F /* audio_processing_statistics.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = audio_processing_statistics.cc; path = include/audio_processing_statistics.cc; sourceTree = "<group>"; };
                419C829C1FE20D1C0040C30F /* audio_processing_statistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = audio_processing_statistics.h; path = include/audio_processing_statistics.h; sourceTree = "<group>"; };
                41A392181EFC5AB800C4516A /* x25519-asm-arm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "x25519-asm-arm.S"; sourceTree = "<group>"; };
                41A392191EFC5AB800C4516A /* x25519-asm-x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "x25519-asm-x86_64.S"; sourceTree = "<group>"; };
                41AF2D11212CD40300D033D5 /* UIDevice+H264Profile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIDevice+H264Profile.h"; path = "Video/UIDevice+H264Profile.h"; sourceTree = "<group>"; };
+               41BAE3C5212E2D8F00E22482 /* highbd_loopfilter_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_loopfilter_sse2.c; sourceTree = "<group>"; };
+               41BAE3C6212E2D8F00E22482 /* highbd_intrapred_intrin_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_intrapred_intrin_sse2.c; sourceTree = "<group>"; };
+               41BAE3C7212E2D9000E22482 /* highbd_idct4x4_add_sse4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct4x4_add_sse4.c; sourceTree = "<group>"; };
+               41BAE3C8212E2D9000E22482 /* vpx_subpixel_8t_intrin_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_subpixel_8t_intrin_avx2.c; sourceTree = "<group>"; };
+               41BAE3C9212E2D9000E22482 /* vpx_subpixel_8t_intrin_ssse3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_subpixel_8t_intrin_ssse3.c; sourceTree = "<group>"; };
+               41BAE3CA212E2D9000E22482 /* loopfilter_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loopfilter_sse2.c; sourceTree = "<group>"; };
+               41BAE3CB212E2D9000E22482 /* sad_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sad_avx2.c; sourceTree = "<group>"; };
+               41BAE3CC212E2D9100E22482 /* avg_intrin_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = avg_intrin_sse2.c; sourceTree = "<group>"; };
+               41BAE3CD212E2D9100E22482 /* highbd_idct8x8_add_sse4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct8x8_add_sse4.c; sourceTree = "<group>"; };
+               41BAE3CE212E2D9100E22482 /* vpx_asm_stubs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_asm_stubs.c; sourceTree = "<group>"; };
+               41BAE3CF212E2D9100E22482 /* highbd_idct16x16_add_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct16x16_add_sse2.c; sourceTree = "<group>"; };
+               41BAE3D0212E2D9200E22482 /* fwd_txfm_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fwd_txfm_sse2.c; sourceTree = "<group>"; };
+               41BAE3D1212E2D9200E22482 /* highbd_idct8x8_add_sse2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct8x8_add_sse2.c; sourceTree = "<group>"; };
+               41BAE3D2212E2D9200E22482 /* quantize_avx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = quantize_avx.c; sourceTree = "<group>"; };
+               41BAE3D3212E2D9200E22482 /* sad4d_avx512.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sad4d_avx512.c; sourceTree = "<group>"; };
+               41BAE3D4212E2D9200E22482 /* fwd_txfm_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fwd_txfm_avx2.c; sourceTree = "<group>"; };
+               41BAE3D5212E2D9300E22482 /* avg_intrin_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = avg_intrin_avx2.c; sourceTree = "<group>"; };
+               41BAE3D6212E2D9300E22482 /* highbd_idct16x16_add_sse4.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_idct16x16_add_sse4.c; sourceTree = "<group>"; };
+               41BAE3D7212E2D9300E22482 /* loopfilter_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = loopfilter_avx2.c; sourceTree = "<group>"; };
+               41BAE3D8212E2D9300E22482 /* highbd_intrapred_intrin_ssse3.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_intrapred_intrin_ssse3.c; sourceTree = "<group>"; };
+               41BAE3D9212E2D9300E22482 /* highbd_convolve_avx2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highbd_convolve_avx2.c; sourceTree = "<group>"; };
+               41C6290E212E2DE2002313D4 /* highbd_idct32x32_add_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = highbd_idct32x32_add_sse2.c; sourceTree = "<group>"; };
+               41C6290F212E2DE3002313D4 /* quantize_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quantize_sse2.c; sourceTree = "<group>"; };
+               41C62910212E2DE3002313D4 /* highbd_idct4x4_add_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = highbd_idct4x4_add_sse2.c; sourceTree = "<group>"; };
+               41C62911212E2DE4002313D4 /* avg_pred_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = avg_pred_sse2.c; sourceTree = "<group>"; };
+               41C62912212E2DE4002313D4 /* highbd_quantize_intrin_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = highbd_quantize_intrin_sse2.c; sourceTree = "<group>"; };
+               41C62913212E2DE4002313D4 /* sad4d_avx2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sad4d_avx2.c; sourceTree = "<group>"; };
+               41C62914212E2DE5002313D4 /* variance_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = variance_sse2.c; sourceTree = "<group>"; };
+               41C62915212E2DE5002313D4 /* quantize_ssse3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quantize_ssse3.c; sourceTree = "<group>"; };
+               41C62916212E2DE6002313D4 /* highbd_variance_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = highbd_variance_sse2.c; sourceTree = "<group>"; };
+               41C62917212E2DE6002313D4 /* inv_txfm_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inv_txfm_sse2.c; sourceTree = "<group>"; };
+               41C62918212E2DE7002313D4 /* highbd_idct32x32_add_sse4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = highbd_idct32x32_add_sse4.c; sourceTree = "<group>"; };
+               41C62919212E2DE7002313D4 /* inv_txfm_ssse3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inv_txfm_ssse3.c; sourceTree = "<group>"; };
+               41C6291A212E2DE8002313D4 /* sum_squares_sse2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sum_squares_sse2.c; sourceTree = "<group>"; };
+               41C6291B212E2DE8002313D4 /* variance_avx2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = variance_avx2.c; sourceTree = "<group>"; };
+               41C6295E212E3652002313D4 /* sad_ssse3.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = sad_ssse3.asm; sourceTree = "<group>"; };
+               41C6295F212E3652002313D4 /* ssim_opt_x86_64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = ssim_opt_x86_64.asm; sourceTree = "<group>"; };
+               41C62960212E3652002313D4 /* inv_wht_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = inv_wht_sse2.asm; sourceTree = "<group>"; };
+               41C62961212E3652002313D4 /* highbd_sad_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = highbd_sad_sse2.asm; sourceTree = "<group>"; };
+               41C62962212E3652002313D4 /* vpx_convolve_copy_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_convolve_copy_sse2.asm; sourceTree = "<group>"; };
+               41C62963212E3653002313D4 /* subtract_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = subtract_sse2.asm; sourceTree = "<group>"; };
+               41C62964212E3653002313D4 /* highbd_subpel_variance_impl_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = highbd_subpel_variance_impl_sse2.asm; sourceTree = "<group>"; };
+               41C62965212E3653002313D4 /* vpx_high_subpixel_8t_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_high_subpixel_8t_sse2.asm; sourceTree = "<group>"; };
+               41C62966212E3653002313D4 /* highbd_variance_impl_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = highbd_variance_impl_sse2.asm; sourceTree = "<group>"; };
+               41C62967212E3653002313D4 /* deblock_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = deblock_sse2.asm; sourceTree = "<group>"; };
+               41C62968212E3654002313D4 /* sad_sse4.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = sad_sse4.asm; sourceTree = "<group>"; };
+               41C62969212E3654002313D4 /* sad4d_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = sad4d_sse2.asm; sourceTree = "<group>"; };
+               41C6296A212E3654002313D4 /* intrapred_ssse3.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = intrapred_ssse3.asm; sourceTree = "<group>"; };
+               41C6296B212E3654002313D4 /* vpx_subpixel_8t_ssse3.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_subpixel_8t_ssse3.asm; sourceTree = "<group>"; };
+               41C6296C212E3654002313D4 /* highbd_sad4d_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = highbd_sad4d_sse2.asm; sourceTree = "<group>"; };
+               41C6296D212E3655002313D4 /* add_noise_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = add_noise_sse2.asm; sourceTree = "<group>"; };
+               41C6296E212E3655002313D4 /* sad_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = sad_sse2.asm; sourceTree = "<group>"; };
+               41C6296F212E3655002313D4 /* vpx_subpixel_bilinear_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_subpixel_bilinear_sse2.asm; sourceTree = "<group>"; };
+               41C62970212E3655002313D4 /* intrapred_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = intrapred_sse2.asm; sourceTree = "<group>"; };
+               41C62971212E3656002313D4 /* vpx_subpixel_8t_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_subpixel_8t_sse2.asm; sourceTree = "<group>"; };
+               41C62972212E3656002313D4 /* fwd_txfm_ssse3_x86_64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = fwd_txfm_ssse3_x86_64.asm; sourceTree = "<group>"; };
+               41C62973212E3656002313D4 /* subpel_variance_sse2.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = subpel_variance_sse2.asm; sourceTree = "<group>"; };
+               41C62974212E3656002313D4 /* vpx_subpixel_bilinear_ssse3.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vpx_subpixel_bilinear_ssse3.asm; sourceTree = "<group>"; };
+               41CBAF90212E037E00DE1E1D /* decodemv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = decodemv.c; path = decoder/decodemv.c; sourceTree = "<group>"; };
+               41CBAF91212E037F00DE1E1D /* error_concealment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = error_concealment.c; path = decoder/error_concealment.c; sourceTree = "<group>"; };
+               41CBAFA4212E03AC00DE1E1D /* denoising.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = denoising.h; path = encoder/denoising.h; sourceTree = "<group>"; };
+               41CBAFA5212E03AC00DE1E1D /* mcomp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mcomp.h; path = encoder/mcomp.h; sourceTree = "<group>"; };
+               41CBAFA6212E03AD00DE1E1D /* bitstream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitstream.h; path = encoder/bitstream.h; sourceTree = "<group>"; };
+               41CBAFA7212E03AD00DE1E1D /* bitstream.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitstream.c; path = encoder/bitstream.c; sourceTree = "<group>"; };
+               41CBAFA8212E03AD00DE1E1D /* vp8_quantize.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vp8_quantize.c; path = encoder/vp8_quantize.c; sourceTree = "<group>"; };
+               41CBAFA9212E03AD00DE1E1D /* firstpass.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = firstpass.c; path = encoder/firstpass.c; sourceTree = "<group>"; };
+               41CBAFAA212E03AD00DE1E1D /* pickinter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pickinter.c; path = encoder/pickinter.c; sourceTree = "<group>"; };
                41D6B45E212731A0008F9353 /* biquad_filter.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = biquad_filter.cc; sourceTree = "<group>"; };
                41D6B45F212731A1008F9353 /* adaptive_mode_level_estimator.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = adaptive_mode_level_estimator.cc; sourceTree = "<group>"; };
                41D6B460212731A1008F9353 /* down_sampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = down_sampler.h; sourceTree = "<group>"; };
                41EA54161EFC2D53002FF04C /* md5-586.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "md5-586.pl"; sourceTree = "<group>"; };
                41EA54171EFC2D53002FF04C /* md5-x86_64.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "md5-x86_64.pl"; sourceTree = "<group>"; };
                41EA54181EFC2D53002FF04C /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = "<group>"; };
+               41EAF1B2212E29C1009F73EC /* RTCDefaultVideoDecoderFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RTCDefaultVideoDecoderFactory.m; path = PeerConnection/RTCDefaultVideoDecoderFactory.m; sourceTree = "<group>"; };
+               41EAF1B3212E29C1009F73EC /* RTCDefaultVideoEncoderFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RTCDefaultVideoEncoderFactory.m; path = PeerConnection/RTCDefaultVideoEncoderFactory.m; sourceTree = "<group>"; };
+               41EAF1B4212E29C1009F73EC /* RTCVideoCodecVP8.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RTCVideoCodecVP8.mm; path = PeerConnection/RTCVideoCodecVP8.mm; sourceTree = "<group>"; };
+               41EAF1B9212E2AAD009F73EC /* vpx_codec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_codec.c; sourceTree = "<group>"; };
+               41EAF1BA212E2AAD009F73EC /* vpx_encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_encoder.c; sourceTree = "<group>"; };
+               41EAF1BB212E2AAD009F73EC /* vpx_decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_decoder.c; sourceTree = "<group>"; };
+               41EAF1BC212E2AAD009F73EC /* vpx_image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpx_image.c; sourceTree = "<group>"; };
+               41EAF1BD212E2AAD009F73EC /* svc_encodeframe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = svc_encodeframe.c; sourceTree = "<group>"; };
+               41EAF1CA212E2B69009F73EC /* psnr.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psnr.c; sourceTree = "<group>"; };
+               41EAF1CB212E2B69009F73EC /* bitreader_buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitreader_buffer.c; sourceTree = "<group>"; };
+               41EAF1CC212E2B69009F73EC /* fwd_txfm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fwd_txfm.h; sourceTree = "<group>"; };
+               41EAF1CD212E2B6A009F73EC /* bitwriter_buffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitwriter_buffer.c; sourceTree = "<group>"; };
                41ECEAB320630107009D5141 /* RTCVideoCodec+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RTCVideoCodec+Private.h"; path = "PeerConnection/RTCVideoCodec+Private.h"; sourceTree = "<group>"; };
                41ECEAB420630107009D5141 /* RTCVideoCodec.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RTCVideoCodec.mm; path = PeerConnection/RTCVideoCodec.mm; sourceTree = "<group>"; };
                41ECEAB520630108009D5141 /* RTCVideoCodecH264.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RTCVideoCodecH264.mm; path = PeerConnection/RTCVideoCodecH264.mm; sourceTree = "<group>"; };
                41ECEAF920646663009D5141 /* EncoderUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EncoderUtilities.h; sourceTree = "<group>"; };
                41ECEAFA20646663009D5141 /* VideoProcessingSoftLink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VideoProcessingSoftLink.cpp; sourceTree = "<group>"; };
                41ECEAFB20646664009D5141 /* VideoProcessingSoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoProcessingSoftLink.h; sourceTree = "<group>"; };
+               41EED7782152ED83000F2A16 /* save_reg_neon.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = save_reg_neon.asm; sourceTree = "<group>"; };
+               41EED7792152ED83000F2A16 /* loopfilter_16_neon.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = loopfilter_16_neon.asm; sourceTree = "<group>"; };
+               41EED77A2152ED83000F2A16 /* intrapred_neon_asm.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = intrapred_neon_asm.asm; sourceTree = "<group>"; };
+               41EED77B2152ED84000F2A16 /* vpx_convolve_neon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vpx_convolve_neon.c; sourceTree = "<group>"; };
+               41EED7BB2152EEC8000F2A16 /* arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = arm.h; sourceTree = "<group>"; };
+               41EED7BC2152EEC8000F2A16 /* arm_cpudetect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = arm_cpudetect.c; sourceTree = "<group>"; };
+               41EEFD9E212E03EB00E54E93 /* encodemv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = encodemv.c; path = encoder/encodemv.c; sourceTree = "<group>"; };
+               41EEFD9F212E03EB00E54E93 /* picklpf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = picklpf.h; path = encoder/picklpf.h; sourceTree = "<group>"; };
+               41EEFDA0212E03EC00E54E93 /* block.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = block.h; path = encoder/block.h; sourceTree = "<group>"; };
+               41EEFDA1212E03ED00E54E93 /* encodemb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = encodemb.c; path = encoder/encodemb.c; sourceTree = "<group>"; };
+               41EEFDA2212E03ED00E54E93 /* tokenize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = tokenize.h; path = encoder/tokenize.h; sourceTree = "<group>"; };
+               41EEFDA3212E03EE00E54E93 /* encodeframe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = encodeframe.h; path = encoder/encodeframe.h; sourceTree = "<group>"; };
+               41EEFDA4212E03EE00E54E93 /* firstpass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = firstpass.h; path = encoder/firstpass.h; sourceTree = "<group>"; };
+               41EEFDA5212E03EE00E54E93 /* dct.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = dct.c; path = encoder/dct.c; sourceTree = "<group>"; };
+               41EEFDA6212E03EF00E54E93 /* encodeintra.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = encodeintra.c; path = encoder/encodeintra.c; sourceTree = "<group>"; };
+               41EEFDA7212E03EF00E54E93 /* onyx_int.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = onyx_int.h; path = encoder/onyx_int.h; sourceTree = "<group>"; };
+               41EEFDA8212E03EF00E54E93 /* encodeframe.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = encodeframe.c; path = encoder/encodeframe.c; sourceTree = "<group>"; };
+               41EEFDA9212E03F000E54E93 /* encodeintra.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = encodeintra.h; path = encoder/encodeintra.h; sourceTree = "<group>"; };
+               41EEFDAA212E03F000E54E93 /* dct_value_tokens.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dct_value_tokens.h; path = encoder/dct_value_tokens.h; sourceTree = "<group>"; };
+               41EEFDAB212E03F000E54E93 /* temporal_filter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = temporal_filter.c; path = encoder/temporal_filter.c; sourceTree = "<group>"; };
+               41EEFDAC212E03F000E54E93 /* defaultcoefcounts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = defaultcoefcounts.h; path = encoder/defaultcoefcounts.h; sourceTree = "<group>"; };
+               41EEFDAD212E03F100E54E93 /* encodemv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = encodemv.h; path = encoder/encodemv.h; sourceTree = "<group>"; };
                41F2636C21267B3D00274F59 /* fft4g.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = fft4g.c; path = fft4g/fft4g.c; sourceTree = "<group>"; };
                41F2636D21267B3E00274F59 /* fft4g.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fft4g.h; path = fft4g/fft4g.h; sourceTree = "<group>"; };
                41F2637021267B4A00274F59 /* spl_sqrt_floor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spl_sqrt_floor.h; path = spl_sqrt_floor/spl_sqrt_floor.h; sourceTree = "<group>"; };
                41F411B61EF8DA8A00343C26 /* rtc_event_log_factory.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rtc_event_log_factory.cc; path = rtc_event_log/rtc_event_log_factory.cc; sourceTree = "<group>"; };
                41F411B71EF8DA9000343C26 /* rtc_event_log_factory_interface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rtc_event_log_factory_interface.h; path = rtc_event_log/rtc_event_log_factory_interface.h; sourceTree = "<group>"; };
                41F411B81EF8DA9500343C26 /* rtc_event_log_factory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rtc_event_log_factory.h; path = rtc_event_log/rtc_event_log_factory.h; sourceTree = "<group>"; };
-               41F411BE1EF8DBA500343C26 /* vp8_noop.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = vp8_noop.cc; path = codecs/vp8/vp8_noop.cc; sourceTree = "<group>"; };
                41F411C51EF972EC00343C26 /* adm_helpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = adm_helpers.h; path = engine/adm_helpers.h; sourceTree = "<group>"; };
                41F411C61EF972F100343C26 /* adm_helpers.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = adm_helpers.cc; path = engine/adm_helpers.cc; sourceTree = "<group>"; };
                41F9BF772051C7FD00ABF0B9 /* candidate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = candidate.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+               4105EB7C212E01D2008C0C20 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               41EED7D72152F434000F2A16 /* add_noise_sse2.asm.o in Frameworks */,
+                               41EED7D82152F434000F2A16 /* avg_ssse3_x86_64.asm.o in Frameworks */,
+                               41239AF9214756FC00396F81 /* copy_sse2.asm.o in Frameworks */,
+                               41239AFC214756FC00396F81 /* copy_sse3.asm.o in Frameworks */,
+                               41239B1C214759B600396F81 /* dct_sse2.asm.o in Frameworks */,
+                               41EED7D92152F434000F2A16 /* deblock_sse2.asm.o in Frameworks */,
+                               41239AFD214756FC00396F81 /* dequantize_mmx.asm.o in Frameworks */,
+                               41239B1F21475F0700396F81 /* emms.asm.o in Frameworks */,
+                               41239B1B214759B600396F81 /* encodeopt.asm.o in Frameworks */,
+                               41239B1A214759B600396F81 /* fwalsh_sse2.asm.o in Frameworks */,
+                               41EED7DA2152F434000F2A16 /* fwd_txfm_ssse3_x86_64.asm.o in Frameworks */,
+                               41EED7DB2152F434000F2A16 /* highbd_intrapred_sse2.asm.o in Frameworks */,
+                               41EED7C62152F434000F2A16 /* highbd_sad4d_sse2.asm.o in Frameworks */,
+                               41EED7C52152F434000F2A16 /* highbd_sad_sse2.asm.o in Frameworks */,
+                               41EED7C72152F434000F2A16 /* highbd_subpel_variance_impl_sse2.asm.o in Frameworks */,
+                               41EED7C82152F434000F2A16 /* highbd_variance_impl_sse2.asm.o in Frameworks */,
+                               41239AFE214756FC00396F81 /* idctllm_mmx.asm.o in Frameworks */,
+                               41239AFA214756FC00396F81 /* idctllm_sse2.asm.o in Frameworks */,
+                               41EED7C92152F434000F2A16 /* intrapred_sse2.asm.o in Frameworks */,
+                               41EED7CA2152F434000F2A16 /* intrapred_ssse3.asm.o in Frameworks */,
+                               41EED7CB2152F434000F2A16 /* inv_wht_sse2.asm.o in Frameworks */,
+                               41239AFF214756FC00396F81 /* iwalsh_sse2.asm.o in Frameworks */,
+                               41239B00214756FC00396F81 /* loopfilter_block_sse2_x86_64.asm.o in Frameworks */,
+                               41239B01214756FC00396F81 /* loopfilter_sse2.asm.o in Frameworks */,
+                               41239B02214756FC00396F81 /* mfqe_sse2.asm.o in Frameworks */,
+                               41239AFB214756FC00396F81 /* recon_mmx.asm.o in Frameworks */,
+                               41239B03214756FC00396F81 /* recon_sse2.asm.o in Frameworks */,
+                               41EED7CF2152F434000F2A16 /* sad4d_sse2.asm.o in Frameworks */,
+                               41EED7CC2152F434000F2A16 /* sad_sse2.asm.o in Frameworks */,
+                               41EED7C22152F434000F2A16 /* sad_sse3.asm.o in Frameworks */,
+                               41EED7CD2152F434000F2A16 /* sad_sse4.asm.o in Frameworks */,
+                               41EED7CE2152F434000F2A16 /* sad_ssse3.asm.o in Frameworks */,
+                               41EED7D02152F434000F2A16 /* ssim_opt_x86_64.asm.o in Frameworks */,
+                               41EED7D12152F434000F2A16 /* subpel_variance_sse2.asm.o in Frameworks */,
+                               41239B04214756FC00396F81 /* subpixel_mmx.asm.o in Frameworks */,
+                               41239B05214756FC00396F81 /* subpixel_sse2.asm.o in Frameworks */,
+                               41239B06214756FC00396F81 /* subpixel_ssse3.asm.o in Frameworks */,
+                               41EED7D22152F434000F2A16 /* subtract_sse2.asm.o in Frameworks */,
+                               41EED7D32152F434000F2A16 /* vpx_convolve_copy_sse2.asm.o in Frameworks */,
+                               41EED7C32152F434000F2A16 /* vpx_high_subpixel_8t_sse2.asm.o in Frameworks */,
+                               41EED7D42152F434000F2A16 /* vpx_high_subpixel_bilinear_sse2.asm.o in Frameworks */,
+                               41EED7C02152F424000F2A16 /* vpx_subpixel_8t_sse2.asm.o in Frameworks */,
+                               41EED7D52152F434000F2A16 /* vpx_subpixel_8t_ssse3.asm.o in Frameworks */,
+                               41EED7D62152F434000F2A16 /* vpx_subpixel_bilinear_sse2.asm.o in Frameworks */,
+                               41EED7C42152F434000F2A16 /* vpx_subpixel_bilinear_ssse3.asm.o in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                5C0884CA1E4A97E300403995 /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                                5C0073041E5513E70042215A /* libopus.a in Frameworks */,
                                5C0073051E5513E70042215A /* libsrtp.a in Frameworks */,
                                5C0073061E5513E70042215A /* libusrsctp.a in Frameworks */,
+                               4129408D212E0D1800AD95E7 /* libvpx.a in Frameworks */,
                                5C0073071E5513E70042215A /* libwebrtcpcrtc.a in Frameworks */,
                                5C0073081E5513E70042215A /* libyuv.a in Frameworks */,
                                5C0073141E5514020042215A /* VideoToolbox.framework in Frameworks */,
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+               4105EB64212E018C008C0C20 /* libvpx */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EB65212E01A9008C0C20 /* include */,
+                               4105EB66212E01AF008C0C20 /* source */,
+                       );
+                       path = libvpx;
+                       sourceTree = "<group>";
+               };
+               4105EB65212E01A9008C0C20 /* include */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EB67212E01C2008C0C20 /* elf.h */,
+                       );
+                       path = include;
+                       sourceTree = "<group>";
+               };
+               4105EB66212E01AF008C0C20 /* source */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EB85212E0212008C0C20 /* config */,
+                               4105EB86212E0216008C0C20 /* libvpx */,
+                       );
+                       path = source;
+                       sourceTree = "<group>";
+               };
+               4105EB85212E0212008C0C20 /* config */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EB87212E0240008C0C20 /* ios */,
+                               4105EB88212E0245008C0C20 /* mac */,
+                       );
+                       path = config;
+                       sourceTree = "<group>";
+               };
+               4105EB86212E0216008C0C20 /* libvpx */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EBA7212E02D8008C0C20 /* vp8 */,
+                               4105EBA8212E02E9008C0C20 /* vpx */,
+                               4105EBA9212E02F3008C0C20 /* vpx_dsp */,
+                               4105EBAA212E02FE008C0C20 /* vpx_mem */,
+                               4105EBAB212E030B008C0C20 /* vpx_ports */,
+                               4105EBAC212E0319008C0C20 /* vpx_scale */,
+                               4105EBAD212E0327008C0C20 /* vpx_util */,
+                       );
+                       path = libvpx;
+                       sourceTree = "<group>";
+               };
+               4105EB87212E0240008C0C20 /* ios */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EB89212E0296008C0C20 /* arm64 */,
+                       );
+                       path = ios;
+                       sourceTree = "<group>";
+               };
+               4105EB88212E0245008C0C20 /* mac */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EB98212E02BA008C0C20 /* x64 */,
+                       );
+                       path = mac;
+                       sourceTree = "<group>";
+               };
+               4105EB89212E0296008C0C20 /* arm64 */ = {
+                       isa = PBXGroup;
+                       children = (
+                               414502112152E16F0033B4D3 /* vp8_rtcd.h */,
+                               414502122152E16F0033B4D3 /* vp9_rtcd.h */,
+                               4191009C2152E18D00A6F17B /* vpx_config.asm */,
+                               4191009D2152E18D00A6F17B /* vpx_config.c */,
+                               414502132152E16F0033B4D3 /* vpx_config.h */,
+                               4191009E2152E18D00A6F17B /* vpx_dsp_rtcd.h */,
+                               414502142152E16F0033B4D3 /* vpx_scale_rtcd.h */,
+                       );
+                       path = arm64;
+                       sourceTree = "<group>";
+               };
+               4105EB98212E02BA008C0C20 /* x64 */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EB9B212E02CC008C0C20 /* vp8_rtcd.h */,
+                               4105EB9E212E02CC008C0C20 /* vp9_rtcd.h */,
+                               4105EB9F212E02CC008C0C20 /* vpx_config.asm */,
+                               4105EB99212E02CB008C0C20 /* vpx_config.c */,
+                               4105EB9D212E02CC008C0C20 /* vpx_config.h */,
+                               4105EB9C212E02CC008C0C20 /* vpx_dsp_rtcd.h */,
+                               4105EB9A212E02CB008C0C20 /* vpx_scale_rtcd.h */,
+                       );
+                       path = x64;
+                       sourceTree = "<group>";
+               };
+               4105EBA7212E02D8008C0C20 /* vp8 */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EBAE212E0339008C0C20 /* common */,
+                               4105EBB0212E0348008C0C20 /* decoder */,
+                               4105EBAF212E0344008C0C20 /* encoder */,
+                               411ED031212E04CC004320BA /* vp8_cx_iface.c */,
+                               411ED032212E04CC004320BA /* vp8_dx_iface.c */,
+                       );
+                       path = vp8;
+                       sourceTree = "<group>";
+               };
+               4105EBA8212E02E9008C0C20 /* vpx */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41EAF1B8212E2A93009F73EC /* src */,
+                       );
+                       path = vpx;
+                       sourceTree = "<group>";
+               };
+               4105EBA9212E02F3008C0C20 /* vpx_dsp */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419100E62152ECF800A6F17B /* arm */,
+                               41BAE3C4212E2D5100E22482 /* x86 */,
+                               413309E9212E2BD400280939 /* add_noise.c */,
+                               413309E5212E2BD400280939 /* avg.c */,
+                               413309E6212E2BD400280939 /* bitreader.c */,
+                               41EAF1CB212E2B69009F73EC /* bitreader_buffer.c */,
+                               413309F1212E2BD600280939 /* bitwriter.c */,
+                               41EAF1CD212E2B6A009F73EC /* bitwriter_buffer.c */,
+                               413309F2212E2BD600280939 /* deblock.c */,
+                               413309F9212E2BD800280939 /* fastssim.c */,
+                               413309EB212E2BD500280939 /* fwd_txfm.c */,
+                               41EAF1CC212E2B69009F73EC /* fwd_txfm.h */,
+                               413309EC212E2BD500280939 /* intrapred.c */,
+                               413309F6212E2BD700280939 /* inv_txfm.c */,
+                               413309EE212E2BD600280939 /* loopfilter.c */,
+                               413309EF212E2BD600280939 /* prob.c */,
+                               41EAF1CA212E2B69009F73EC /* psnr.c */,
+                               413309EA212E2BD500280939 /* psnrhvs.c */,
+                               413309E7212E2BD400280939 /* quantize.c */,
+                               413309F0212E2BD600280939 /* sad.c */,
+                               413309F7212E2BD800280939 /* skin_detection.c */,
+                               413309E8212E2BD400280939 /* ssim.c */,
+                               413309ED212E2BD500280939 /* subtract.c */,
+                               413309F3212E2BD700280939 /* sum_squares.c */,
+                               413309F4212E2BD700280939 /* variance.c */,
+                               413309F5212E2BD700280939 /* vpx_convolve.c */,
+                               413309F8212E2BD800280939 /* vpx_dsp_rtcd.c */,
+                       );
+                       path = vpx_dsp;
+                       sourceTree = "<group>";
+               };
+               4105EBAA212E02FE008C0C20 /* vpx_mem */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41330A2D212E2BEE00280939 /* vpx_mem.c */,
+                               41330A2C212E2BED00280939 /* vpx_mem.h */,
+                       );
+                       path = vpx_mem;
+                       sourceTree = "<group>";
+               };
+               4105EBAB212E030B008C0C20 /* vpx_ports */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41EED7BB2152EEC8000F2A16 /* arm.h */,
+                               41EED7BC2152EEC8000F2A16 /* arm_cpudetect.c */,
+                               41239B1E21475F0700396F81 /* emms.asm.o */,
+                       );
+                       path = vpx_ports;
+                       sourceTree = "<group>";
+               };
+               4105EBAC212E0319008C0C20 /* vpx_scale */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41239B072147579B00396F81 /* generic */,
+                               41330A33212E2C1E00280939 /* vpx_scale.h */,
+                               41330A32212E2C1E00280939 /* vpx_scale_rtcd.c */,
+                       );
+                       path = vpx_scale;
+                       sourceTree = "<group>";
+               };
+               4105EBAD212E0327008C0C20 /* vpx_util */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41330A39212E2C3600280939 /* vpx_thread.c */,
+                               41330A36212E2C3500280939 /* vpx_thread.h */,
+                               41330A37212E2C3600280939 /* vpx_write_yuv_frame.c */,
+                               41330A38212E2C3600280939 /* vpx_write_yuv_frame.h */,
+                       );
+                       path = vpx_util;
+                       sourceTree = "<group>";
+               };
+               4105EBAE212E0339008C0C20 /* common */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419100B42152ECB700A6F17B /* arm */,
+                               41239B3921476AD400396F81 /* generic */,
+                               410994F92147565500347814 /* x86 */,
+                               41673201212E0490001280EB /* alloccommon.c */,
+                               416731EC212E048B001280EB /* blockd.c */,
+                               414502072152E01B0033B4D3 /* blockd.h */,
+                               416731F3212E048D001280EB /* context.c */,
+                               416731FF212E048F001280EB /* copy_c.c */,
+                               416731F7212E048E001280EB /* debugmodes.c */,
+                               414502092152E01B0033B4D3 /* default_coef_probs.h */,
+                               41673200212E048F001280EB /* dequantize.c */,
+                               416731FC212E048F001280EB /* entropy.c */,
+                               416731F9212E048E001280EB /* entropymode.c */,
+                               416731EE212E048C001280EB /* entropymv.c */,
+                               416731FB212E048E001280EB /* extend.c */,
+                               416731F6212E048D001280EB /* filter.c */,
+                               416731FE212E048F001280EB /* findnearmv.c */,
+                               41673206212E0491001280EB /* idct_blk.c */,
+                               41673204212E0491001280EB /* idctllm.c */,
+                               41673202212E0490001280EB /* loopfilter_filters.c */,
+                               416731FD212E048F001280EB /* mbpitch.c */,
+                               416731ED212E048C001280EB /* mfqe.c */,
+                               416731EB212E048B001280EB /* modecont.c */,
+                               414502052152E01A0033B4D3 /* onyxd.h */,
+                               41673205212E0491001280EB /* postproc.c */,
+                               411ED02F212E04BD004320BA /* quant_common.c */,
+                               416731F2212E048D001280EB /* reconinter.c */,
+                               416731F4212E048D001280EB /* reconintra.c */,
+                               41673203212E0490001280EB /* reconintra4x4.c */,
+                               416731F0212E048C001280EB /* rtcd.c */,
+                               416731EF212E048C001280EB /* setupintrarecon.c */,
+                               416731F8212E048E001280EB /* swapyv12buffer.c */,
+                               414502082152E01B0033B4D3 /* threading.h */,
+                               416731F1212E048C001280EB /* treecoder.c */,
+                               4145020A2152E01B0033B4D3 /* vp8_entropymodedata.h */,
+                               416731FA212E048E001280EB /* vp8_loopfilter.c */,
+                               416731F5212E048D001280EB /* vp8_skin_detection.c */,
+                               414502062152E01B0033B4D3 /* vp8_skin_detection.h */,
+                       );
+                       path = common;
+                       sourceTree = "<group>";
+               };
+               4105EBAF212E0344008C0C20 /* encoder */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419100A62152EC5800A6F17B /* arm */,
+                               416731D8212E044B001280EB /* x86 */,
+                               41CBAFA7212E03AD00DE1E1D /* bitstream.c */,
+                               41CBAFA6212E03AD00DE1E1D /* bitstream.h */,
+                               41EEFDA0212E03EC00E54E93 /* block.h */,
+                               416731A6212E0425001280EB /* boolhuff.c */,
+                               41EEFDA5212E03EE00E54E93 /* dct.c */,
+                               41EEFDAA212E03F000E54E93 /* dct_value_tokens.h */,
+                               41EEFDAC212E03F000E54E93 /* defaultcoefcounts.h */,
+                               416731AF212E0428001280EB /* denoising.c */,
+                               41CBAFA4212E03AC00DE1E1D /* denoising.h */,
+                               41EEFDA8212E03EF00E54E93 /* encodeframe.c */,
+                               41EEFDA3212E03EE00E54E93 /* encodeframe.h */,
+                               41EEFDA6212E03EF00E54E93 /* encodeintra.c */,
+                               41EEFDA9212E03F000E54E93 /* encodeintra.h */,
+                               41EEFDA1212E03ED00E54E93 /* encodemb.c */,
+                               41EEFD9E212E03EB00E54E93 /* encodemv.c */,
+                               41EEFDAD212E03F100E54E93 /* encodemv.h */,
+                               416731B0212E0428001280EB /* ethreading.c */,
+                               41CBAFA9212E03AD00DE1E1D /* firstpass.c */,
+                               41EEFDA4212E03EE00E54E93 /* firstpass.h */,
+                               416731AC212E0427001280EB /* lookahead.c */,
+                               416731AE212E0428001280EB /* mcomp.c */,
+                               41CBAFA5212E03AC00DE1E1D /* mcomp.h */,
+                               416731AB212E0427001280EB /* modecosts.c */,
+                               416731AA212E0426001280EB /* mr_dissim.c */,
+                               416731A8212E0426001280EB /* onyx_if.c */,
+                               41EEFDA7212E03EF00E54E93 /* onyx_int.h */,
+                               41CBAFAA212E03AD00DE1E1D /* pickinter.c */,
+                               416731AD212E0427001280EB /* picklpf.c */,
+                               41EEFD9F212E03EB00E54E93 /* picklpf.h */,
+                               416731A7212E0425001280EB /* ratectrl.c */,
+                               416731A5212E0425001280EB /* rdopt.c */,
+                               416731A9212E0426001280EB /* segmentation.c */,
+                               41EEFDAB212E03F000E54E93 /* temporal_filter.c */,
+                               416731B1212E0429001280EB /* tokenize.c */,
+                               41EEFDA2212E03ED00E54E93 /* tokenize.h */,
+                               416731B2212E0429001280EB /* treewriter.c */,
+                               41CBAFA8212E03AD00DE1E1D /* vp8_quantize.c */,
+                       );
+                       name = encoder;
+                       sourceTree = "<group>";
+               };
+               4105EBB0212E0348008C0C20 /* decoder */ = {
+                       isa = PBXGroup;
+                       children = (
+                               4105EBB5212E035D008C0C20 /* dboolhuff.c */,
+                               4105EBB2212E035C008C0C20 /* decodeframe.c */,
+                               41CBAF90212E037E00DE1E1D /* decodemv.c */,
+                               4105EBB7212E035D008C0C20 /* decoderthreading.h */,
+                               4105EBB4212E035D008C0C20 /* detokenize.c */,
+                               41CBAF91212E037F00DE1E1D /* error_concealment.c */,
+                               4105EBB1212E035C008C0C20 /* onyxd_if.c */,
+                               4105EBB3212E035C008C0C20 /* threading.c */,
+                               4105EBB6212E035D008C0C20 /* treereader.h */,
+                       );
+                       name = decoder;
+                       sourceTree = "<group>";
+               };
+               410994F92147565500347814 /* x86 */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41239AD6214756A200396F81 /* copy_sse2.asm.o */,
+                               410995022147567A00347814 /* copy_sse3.asm.o */,
+                               410994FA2147567800347814 /* dequantize_mmx.asm.o */,
+                               41239AE6214756C700396F81 /* filter_x86.c */,
+                               41239AE9214756C700396F81 /* filter_x86.h */,
+                               41239AE7214756C700396F81 /* idct_blk_mmx.c */,
+                               41239AEB214756C800396F81 /* idct_blk_sse2.c */,
+                               410994FE2147567900347814 /* idctllm_mmx.asm.o */,
+                               41239AD5214756A200396F81 /* idctllm_sse2.asm.o */,
+                               410994FB2147567800347814 /* iwalsh_sse2.asm.o */,
+                               410995032147567A00347814 /* loopfilter_block_sse2_x86_64.asm.o */,
+                               410995002147567900347814 /* loopfilter_sse2.asm.o */,
+                               41239AEA214756C800396F81 /* loopfilter_x86.c */,
+                               410995042147567A00347814 /* mfqe_sse2.asm.o */,
+                               41239AD7214756A300396F81 /* recon_mmx.asm.o */,
+                               410995012147567900347814 /* recon_sse2.asm.o */,
+                               410994FC2147567800347814 /* subpixel_mmx.asm.o */,
+                               410994FD2147567900347814 /* subpixel_sse2.asm.o */,
+                               410994FF2147567900347814 /* subpixel_ssse3.asm.o */,
+                               41239AE8214756C700396F81 /* vp8_asm_stubs.c */,
+                       );
+                       path = x86;
+                       sourceTree = "<group>";
+               };
                41109AA41E5FA18100C0955A /* include */ = {
                        isa = PBXGroup;
                        children = (
                        name = include;
                        sourceTree = "<group>";
                };
+               41239B072147579B00396F81 /* generic */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41239B0B214757AE00396F81 /* gen_scalers.c */,
+                               41239B08214757AD00396F81 /* vpx_scale.c */,
+                               41239B09214757AD00396F81 /* yv12config.c */,
+                               41239B0A214757AE00396F81 /* yv12extend.c */,
+                       );
+                       path = generic;
+                       sourceTree = "<group>";
+               };
+               41239B3921476AD400396F81 /* generic */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41239B3A21476AE500396F81 /* systemdependent.c */,
+                       );
+                       path = generic;
+                       sourceTree = "<group>";
+               };
                412455581EF88AD900F11809 /* video_codecs */ = {
                        isa = PBXGroup;
                        children = (
                        name = include;
                        sourceTree = "<group>";
                };
+               416731D8212E044B001280EB /* x86 */ = {
+                       isa = PBXGroup;
+                       children = (
+                               416731DC212E045D001280EB /* dct_sse2.asm */,
+                               41239B19214759B600396F81 /* dct_sse2.asm.o */,
+                               416731DE212E045E001280EB /* denoising_sse2.c */,
+                               416731D9212E045D001280EB /* encodeopt.asm */,
+                               41239B18214759B600396F81 /* encodeopt.asm.o */,
+                               416731E1212E045E001280EB /* fwalsh_sse2.asm */,
+                               41239B17214759B500396F81 /* fwalsh_sse2.asm.o */,
+                               416731DA212E045D001280EB /* quantize_sse4.c */,
+                               416731E0212E045E001280EB /* temporal_filter_apply_sse2.asm */,
+                               416731DD212E045E001280EB /* vp8_enc_stubs_sse2.c */,
+                               416731DB212E045D001280EB /* vp8_quantize_sse2.c */,
+                               416731DF212E045E001280EB /* vp8_quantize_ssse3.c */,
+                       );
+                       name = x86;
+                       path = encoder/x86;
+                       sourceTree = "<group>";
+               };
                417DA4551EF9CCD800E869DB /* Common */ = {
                        isa = PBXGroup;
                        children = (
                        name = Common;
                        sourceTree = "<group>";
                };
+               419100A62152EC5800A6F17B /* arm */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419100A72152EC6600A6F17B /* neon */,
+                       );
+                       name = arm;
+                       path = encoder/arm;
+                       sourceTree = "<group>";
+               };
+               419100A72152EC6600A6F17B /* neon */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419100A82152EC7400A6F17B /* denoising_neon.c */,
+                               419100AA2152EC7500A6F17B /* fastquantizeb_neon.c */,
+                               419100AB2152EC7500A6F17B /* shortfdct_neon.c */,
+                               419100A92152EC7400A6F17B /* vp8_shortwalsh4x4_neon.c */,
+                       );
+                       path = neon;
+                       sourceTree = "<group>";
+               };
+               419100B42152ECB700A6F17B /* arm */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419100B52152ECC400A6F17B /* neon */,
+                               419100B62152ECD300A6F17B /* loopfilter_arm.c */,
+                       );
+                       path = arm;
+                       sourceTree = "<group>";
+               };
+               419100B52152ECC400A6F17B /* neon */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419100BD2152ECDC00A6F17B /* bilinearpredict_neon.c */,
+                               419100BC2152ECDC00A6F17B /* copymem_neon.c */,
+                               419100B82152ECDB00A6F17B /* dc_only_idct_add_neon.c */,
+                               419100BB2152ECDC00A6F17B /* dequant_idct_neon.c */,
+                               419100C62152ECDE00A6F17B /* dequantizeb_neon.c */,
+                               419100BE2152ECDC00A6F17B /* idct_blk_neon.c */,
+                               419100BA2152ECDB00A6F17B /* idct_dequant_0_2x_neon.c */,
+                               419100C22152ECDD00A6F17B /* idct_dequant_full_2x_neon.c */,
+                               419100C12152ECDD00A6F17B /* iwalsh_neon.c */,
+                               419100C02152ECDD00A6F17B /* loopfiltersimplehorizontaledge_neon.c */,
+                               419100C42152ECDD00A6F17B /* loopfiltersimpleverticaledge_neon.c */,
+                               419100C32152ECDD00A6F17B /* mbloopfilter_neon.c */,
+                               419100BF2152ECDC00A6F17B /* shortidct4x4llm_neon.c */,
+                               419100C52152ECDE00A6F17B /* sixtappredict_neon.c */,
+                               419100B92152ECDB00A6F17B /* vp8_loopfilter_neon.c */,
+                       );
+                       path = neon;
+                       sourceTree = "<group>";
+               };
+               419100E62152ECF800A6F17B /* arm */ = {
+                       isa = PBXGroup;
+                       children = (
+                               419478832152ED4300275257 /* avg_neon.c */,
+                               4194786E2152ED3D00275257 /* avg_pred_neon.c */,
+                               41953C042152ED6300136625 /* deblock_neon.c */,
+                               4194788B2152ED4600275257 /* fdct16x16_neon.c */,
+                               419478802152ED4300275257 /* fdct32x32_neon.c */,
+                               419100F02152ED1800A6F17B /* fdct_neon.c */,
+                               419478812152ED4300275257 /* fdct_partial_neon.c */,
+                               41953C062152ED6300136625 /* fwd_txfm_neon.c */,
+                               419478752152ED4000275257 /* hadamard_neon.c */,
+                               419478702152ED3E00275257 /* highbd_idct16x16_add_neon.c */,
+                               4194788A2152ED4600275257 /* highbd_idct32x32_1024_add_neon.c */,
+                               419478762152ED4000275257 /* highbd_idct32x32_135_add_neon.c */,
+                               419100F12152ED1800A6F17B /* highbd_idct32x32_34_add_neon.c */,
+                               419100E82152ED1600A6F17B /* highbd_idct32x32_add_neon.c */,
+                               41953C002152ED6200136625 /* highbd_idct4x4_add_neon.c */,
+                               4194788D2152ED4700275257 /* highbd_idct8x8_add_neon.c */,
+                               419100EB2152ED1700A6F17B /* highbd_idct_neon.h */,
+                               419478742152ED3F00275257 /* highbd_intrapred_neon.c */,
+                               4194787C2152ED4200275257 /* highbd_loopfilter_neon.c */,
+                               419478772152ED4000275257 /* highbd_vpx_convolve8_neon.c */,
+                               419478852152ED4400275257 /* highbd_vpx_convolve_avg_neon.c */,
+                               419478862152ED4400275257 /* highbd_vpx_convolve_copy_neon.c */,
+                               41953C082152ED6400136625 /* highbd_vpx_convolve_neon.c */,
+                               419100F22152ED1800A6F17B /* idct16x16_1_add_neon.c */,
+                               4194787F2152ED4300275257 /* idct16x16_add_neon.c */,
+                               419478792152ED4100275257 /* idct32x32_135_add_neon.c */,
+                               419478782152ED4100275257 /* idct32x32_1_add_neon.c */,
+                               419100E72152ED1600A6F17B /* idct32x32_34_add_neon.c */,
+                               419478892152ED4500275257 /* idct32x32_add_neon.c */,
+                               41953C012152ED6200136625 /* idct4x4_1_add_neon.asm */,
+                               419100EC2152ED1700A6F17B /* idct4x4_1_add_neon.c */,
+                               419478882152ED4500275257 /* idct4x4_add_neon.asm */,
+                               419478872152ED4500275257 /* idct4x4_add_neon.c */,
+                               41953C072152ED6400136625 /* idct8x8_1_add_neon.c */,
+                               419100ED2152ED1700A6F17B /* idct8x8_add_neon.c */,
+                               419100EE2152ED1800A6F17B /* idct_neon.asm */,
+                               41953BFF2152ED6100136625 /* idct_neon.h */,
+                               419478822152ED4300275257 /* intrapred_neon.c */,
+                               41EED77A2152ED83000F2A16 /* intrapred_neon_asm.asm */,
+                               41EED7792152ED83000F2A16 /* loopfilter_16_neon.asm */,
+                               4194788C2152ED4700275257 /* loopfilter_4_neon.asm */,
+                               4194788E2152ED4700275257 /* loopfilter_8_neon.asm */,
+                               4194787E2152ED4200275257 /* loopfilter_neon.c */,
+                               419100E92152ED1700A6F17B /* mem_neon.h */,
+                               41953C092152ED6400136625 /* quantize_neon.c */,
+                               419100F52152ED1900A6F17B /* sad4d_neon.c */,
+                               41953C022152ED6200136625 /* sad_neon.c */,
+                               41EED7782152ED83000F2A16 /* save_reg_neon.asm */,
+                               419478712152ED3E00275257 /* subpel_variance_neon.c */,
+                               4194787B2152ED4200275257 /* subtract_neon.c */,
+                               419478842152ED4400275257 /* sum_neon.h */,
+                               419100EF2152ED1800A6F17B /* transpose_neon.h */,
+                               4194787D2152ED4200275257 /* variance_neon.c */,
+                               41953C052152ED6300136625 /* vpx_convolve8_avg_neon_asm.asm */,
+                               419100F32152ED1800A6F17B /* vpx_convolve8_neon.c */,
+                               4194786F2152ED3D00275257 /* vpx_convolve8_neon.h */,
+                               41953C032152ED6300136625 /* vpx_convolve8_neon_asm.asm */,
+                               419478732152ED3F00275257 /* vpx_convolve_avg_neon.c */,
+                               4194787A2152ED4100275257 /* vpx_convolve_avg_neon_asm.asm */,
+                               419100EA2152ED1700A6F17B /* vpx_convolve_copy_neon.c */,
+                               419478722152ED3F00275257 /* vpx_convolve_copy_neon_asm.asm */,
+                               41EED77B2152ED84000F2A16 /* vpx_convolve_neon.c */,
+                               419100F42152ED1900A6F17B /* vpx_scaled_convolve8_neon.c */,
+                       );
+                       path = arm;
+                       sourceTree = "<group>";
+               };
                4192415C2127379200634FCF /* synchronization */ = {
                        isa = PBXGroup;
                        children = (
                        path = curve25519/asm;
                        sourceTree = "<group>";
                };
+               41BAE3C4212E2D5100E22482 /* x86 */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41C6296D212E3655002313D4 /* add_noise_sse2.asm */,
+                               4107626B2147558500D3D2BF /* add_noise_sse2.asm.o */,
+                               41BAE3D5212E2D9300E22482 /* avg_intrin_avx2.c */,
+                               41BAE3CC212E2D9100E22482 /* avg_intrin_sse2.c */,
+                               41C62911212E2DE4002313D4 /* avg_pred_sse2.c */,
+                               4107626D2147558600D3D2BF /* avg_ssse3_x86_64.asm.o */,
+                               41C62967212E3653002313D4 /* deblock_sse2.asm */,
+                               4107626E2147558600D3D2BF /* deblock_sse2.asm.o */,
+                               41BAE3D4212E2D9200E22482 /* fwd_txfm_avx2.c */,
+                               41BAE3D0212E2D9200E22482 /* fwd_txfm_sse2.c */,
+                               41C62972212E3656002313D4 /* fwd_txfm_ssse3_x86_64.asm */,
+                               4107626C2147558600D3D2BF /* fwd_txfm_ssse3_x86_64.asm.o */,
+                               41BAE3D9212E2D9300E22482 /* highbd_convolve_avx2.c */,
+                               41BAE3CF212E2D9100E22482 /* highbd_idct16x16_add_sse2.c */,
+                               41BAE3D6212E2D9300E22482 /* highbd_idct16x16_add_sse4.c */,
+                               41C6290E212E2DE2002313D4 /* highbd_idct32x32_add_sse2.c */,
+                               41C62918212E2DE7002313D4 /* highbd_idct32x32_add_sse4.c */,
+                               41C62910212E2DE3002313D4 /* highbd_idct4x4_add_sse2.c */,
+                               41BAE3C7212E2D9000E22482 /* highbd_idct4x4_add_sse4.c */,
+                               41BAE3D1212E2D9200E22482 /* highbd_idct8x8_add_sse2.c */,
+                               41BAE3CD212E2D9100E22482 /* highbd_idct8x8_add_sse4.c */,
+                               41BAE3C6212E2D8F00E22482 /* highbd_intrapred_intrin_sse2.c */,
+                               41BAE3D8212E2D9300E22482 /* highbd_intrapred_intrin_ssse3.c */,
+                               4107626A2147558500D3D2BF /* highbd_intrapred_sse2.asm.o */,
+                               41BAE3C5212E2D8F00E22482 /* highbd_loopfilter_sse2.c */,
+                               41C62912212E2DE4002313D4 /* highbd_quantize_intrin_sse2.c */,
+                               41C6296C212E3654002313D4 /* highbd_sad4d_sse2.asm */,
+                               4107628B214755E500D3D2BF /* highbd_sad4d_sse2.asm.o */,
+                               41C62961212E3652002313D4 /* highbd_sad_sse2.asm */,
+                               41076290214755E600D3D2BF /* highbd_sad_sse2.asm.o */,
+                               41C62964212E3653002313D4 /* highbd_subpel_variance_impl_sse2.asm */,
+                               41076298214755E800D3D2BF /* highbd_subpel_variance_impl_sse2.asm.o */,
+                               41C62966212E3653002313D4 /* highbd_variance_impl_sse2.asm */,
+                               41076292214755E700D3D2BF /* highbd_variance_impl_sse2.asm.o */,
+                               41C62916212E2DE6002313D4 /* highbd_variance_sse2.c */,
+                               41C62970212E3655002313D4 /* intrapred_sse2.asm */,
+                               41076299214755E800D3D2BF /* intrapred_sse2.asm.o */,
+                               41C6296A212E3654002313D4 /* intrapred_ssse3.asm */,
+                               41076291214755E600D3D2BF /* intrapred_ssse3.asm.o */,
+                               41C62917212E2DE6002313D4 /* inv_txfm_sse2.c */,
+                               41C62919212E2DE7002313D4 /* inv_txfm_ssse3.c */,
+                               41C62960212E3652002313D4 /* inv_wht_sse2.asm */,
+                               4107628C214755E500D3D2BF /* inv_wht_sse2.asm.o */,
+                               41BAE3D7212E2D9300E22482 /* loopfilter_avx2.c */,
+                               41BAE3CA212E2D9000E22482 /* loopfilter_sse2.c */,
+                               41BAE3D2212E2D9200E22482 /* quantize_avx.c */,
+                               41C6290F212E2DE3002313D4 /* quantize_sse2.c */,
+                               41C62915212E2DE5002313D4 /* quantize_ssse3.c */,
+                               41C62913212E2DE4002313D4 /* sad4d_avx2.c */,
+                               41BAE3D3212E2D9200E22482 /* sad4d_avx512.c */,
+                               41C62969212E3654002313D4 /* sad4d_sse2.asm */,
+                               41076293214755E700D3D2BF /* sad4d_sse2.asm.o */,
+                               41BAE3CB212E2D9000E22482 /* sad_avx2.c */,
+                               41C6296E212E3655002313D4 /* sad_sse2.asm */,
+                               4107628F214755E600D3D2BF /* sad_sse2.asm.o */,
+                               410994E12147561300347814 /* sad_sse3.asm.o */,
+                               41C62968212E3654002313D4 /* sad_sse4.asm */,
+                               41076294214755E700D3D2BF /* sad_sse4.asm.o */,
+                               41C6295E212E3652002313D4 /* sad_ssse3.asm */,
+                               41076297214755E800D3D2BF /* sad_ssse3.asm.o */,
+                               41C6295F212E3652002313D4 /* ssim_opt_x86_64.asm */,
+                               4107628A214755E500D3D2BF /* ssim_opt_x86_64.asm.o */,
+                               41C62973212E3656002313D4 /* subpel_variance_sse2.asm */,
+                               4107628D214755E600D3D2BF /* subpel_variance_sse2.asm.o */,
+                               41C62963212E3653002313D4 /* subtract_sse2.asm */,
+                               4107629A214755E800D3D2BF /* subtract_sse2.asm.o */,
+                               41C6291A212E2DE8002313D4 /* sum_squares_sse2.c */,
+                               41C6291B212E2DE8002313D4 /* variance_avx2.c */,
+                               41C62914212E2DE5002313D4 /* variance_sse2.c */,
+                               41BAE3CE212E2D9100E22482 /* vpx_asm_stubs.c */,
+                               41C62962212E3652002313D4 /* vpx_convolve_copy_sse2.asm */,
+                               41076296214755E700D3D2BF /* vpx_convolve_copy_sse2.asm.o */,
+                               41C62965212E3653002313D4 /* vpx_high_subpixel_8t_sse2.asm */,
+                               410994DF2147561200347814 /* vpx_high_subpixel_8t_sse2.asm.o */,
+                               4107629B214755E900D3D2BF /* vpx_high_subpixel_bilinear_sse2.asm.o */,
+                               41BAE3C8212E2D9000E22482 /* vpx_subpixel_8t_intrin_avx2.c */,
+                               41BAE3C9212E2D9000E22482 /* vpx_subpixel_8t_intrin_ssse3.c */,
+                               41C62971212E3656002313D4 /* vpx_subpixel_8t_sse2.asm */,
+                               410994E22147561300347814 /* vpx_subpixel_8t_sse2.asm.o */,
+                               41C6296B212E3654002313D4 /* vpx_subpixel_8t_ssse3.asm */,
+                               41076295214755E700D3D2BF /* vpx_subpixel_8t_ssse3.asm.o */,
+                               41C6296F212E3655002313D4 /* vpx_subpixel_bilinear_sse2.asm */,
+                               4107628E214755E600D3D2BF /* vpx_subpixel_bilinear_sse2.asm.o */,
+                               41C62974212E3656002313D4 /* vpx_subpixel_bilinear_ssse3.asm */,
+                               410994E02147561300347814 /* vpx_subpixel_bilinear_ssse3.asm.o */,
+                       );
+                       path = x86;
+                       sourceTree = "<group>";
+               };
                41DDB24521265B8200296D47 /* container */ = {
                        isa = PBXGroup;
                        children = (
                        path = asm;
                        sourceTree = "<group>";
                };
+               41EAF1B8212E2A93009F73EC /* src */ = {
+                       isa = PBXGroup;
+                       children = (
+                               41EAF1BD212E2AAD009F73EC /* svc_encodeframe.c */,
+                               41EAF1B9212E2AAD009F73EC /* vpx_codec.c */,
+                               41EAF1BB212E2AAD009F73EC /* vpx_decoder.c */,
+                               41EAF1BA212E2AAD009F73EC /* vpx_encoder.c */,
+                               41EAF1BC212E2AAD009F73EC /* vpx_image.c */,
+                       );
+                       path = src;
+                       sourceTree = "<group>";
+               };
                41ECEAB2206300E3009D5141 /* PeerConnection */ = {
                        isa = PBXGroup;
                        children = (
+                               41EAF1B2212E29C1009F73EC /* RTCDefaultVideoDecoderFactory.m */,
+                               41EAF1B3212E29C1009F73EC /* RTCDefaultVideoEncoderFactory.m */,
                                41ECEAC720641328009D5141 /* RTCEncodedImage.mm */,
                                4192423F21276D4700634FCF /* RTCPeerConnectionFactory.mm */,
                                41ECEAD9206414A6009D5141 /* RTCRtpFragmentationHeader.mm */,
                                41ECEAB320630107009D5141 /* RTCVideoCodec+Private.h */,
                                41ECEAB420630107009D5141 /* RTCVideoCodec.mm */,
                                41ECEAB520630108009D5141 /* RTCVideoCodecH264.mm */,
+                               41EAF1B4212E29C1009F73EC /* RTCVideoCodecVP8.mm */,
                                41ECEAE920641812009D5141 /* RTCVideoEncoderSettings.mm */,
                                41ECEAC92064134E009D5141 /* RTCVideoFrame.mm */,
                                41ECEADF206416FE009D5141 /* RTCWrappedNativeVideoDecoder.h */,
                                4145F6151FE1EF5C00EB9CAF /* include */,
                                419C842B1FE24E7E0040C30F /* default_temporal_layers.cc */,
                                419C84311FE24E800040C30F /* default_temporal_layers.h */,
+                               41294090212E128C00AD95E7 /* libvpx_vp8_decoder.cc */,
+                               41294091212E128C00AD95E7 /* libvpx_vp8_decoder.h */,
+                               4129408E212E128B00AD95E7 /* libvpx_vp8_encoder.cc */,
+                               4129408F212E128C00AD95E7 /* libvpx_vp8_encoder.h */,
                                419C84301FE24E7F0040C30F /* screenshare_layers.cc */,
                                419C842C1FE24E7F0040C30F /* screenshare_layers.h */,
                                419C842A1FE24E7E0040C30F /* temporal_layers.cc */,
                                419C84331FE24E800040C30F /* temporal_layers.h */,
-                               41F411BE1EF8DBA500343C26 /* vp8_noop.cc */,
                        );
                        name = vp8;
                        sourceTree = "<group>";
                                5C63FC631E4184C0002CA531 /* boringssl */,
                                5C63F8CC1E416CEB002CA531 /* jsoncpp */,
                                5CDD90841E43D30300621E92 /* libsrtp */,
+                               4105EB64212E018C008C0C20 /* libvpx */,
                                5C4B4D2D1E4323AA002651C8 /* libyuv */,
                                5C4B4A901E42C4C8002651C8 /* opus */,
                                419241912127583900634FCF /* rnnnoise */,
                                5C4B43B01E42877A002651C8 /* boringssl.xcconfig */,
                                5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */,
                                5C0884891E4A978C00403995 /* libsrtp.xcconfig */,
+                               411ED035212E05DE004320BA /* libvpx.xcconfig */,
                                41433D2B1F79B39200387B4D /* libwebrtc.iOS.exp */,
                                41433D2D1F79B39200387B4D /* libwebrtc.iOSsim.exp */,
                                41433D2C1F79B39200387B4D /* libwebrtc.mac.exp */,
                                5C4B4A8E1E42C336002651C8 /* libopus.a */,
                                5C0884D11E4A97E300403995 /* libsrtp.a */,
                                5C11A12D1E4577E1004F0987 /* libusrsctp.a */,
+                               4105EB83212E01D2008C0C20 /* libvpx.a */,
                                FB39D0D11200F0E300088E69 /* libwebrtc.dylib */,
                                5C088C0B1E4AA3B100403995 /* libwebrtcpcrtc.a */,
                                5C0884DE1E4A980100403995 /* libyuv.a */,
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
+               4105EB6C212E01D2008C0C20 /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               41EED7BD2152EEC9000F2A16 /* arm.h in Headers */,
+                               416731D2212E0430001280EB /* bitstream.h in Headers */,
+                               416731C1212E0430001280EB /* block.h in Headers */,
+                               416731C2212E0430001280EB /* dct_value_tokens.h in Headers */,
+                               41CBAF97212E039300DE1E1D /* decoderthreading.h in Headers */,
+                               416731C4212E0430001280EB /* defaultcoefcounts.h in Headers */,
+                               416731D3212E0430001280EB /* denoising.h in Headers */,
+                               4105EB84212E0207008C0C20 /* elf.h in Headers */,
+                               416731C6212E0430001280EB /* encodeframe.h in Headers */,
+                               416731C8212E0430001280EB /* encodeintra.h in Headers */,
+                               416731CB212E0430001280EB /* encodemv.h in Headers */,
+                               41239AF5214756FC00396F81 /* filter_x86.h in Headers */,
+                               416731CC212E0430001280EB /* firstpass.h in Headers */,
+                               41330A2A212E2BDF00280939 /* fwd_txfm.h in Headers */,
+                               41EED7942152ED8E000F2A16 /* idct_neon.h in Headers */,
+                               416731D5212E0430001280EB /* mcomp.h in Headers */,
+                               41EED7A72152ED8E000F2A16 /* mem_neon.h in Headers */,
+                               416731CD212E0430001280EB /* onyx_int.h in Headers */,
+                               416731CE212E0430001280EB /* picklpf.h in Headers */,
+                               41EED7AE2152ED8E000F2A16 /* sum_neon.h in Headers */,
+                               416731D0212E0430001280EB /* tokenize.h in Headers */,
+                               41EED7AF2152ED8E000F2A16 /* transpose_neon.h in Headers */,
+                               41CBAF9C212E039300DE1E1D /* treereader.h in Headers */,
+                               41C62953212E2FA6002313D4 /* vp8_rtcd.h in Headers */,
+                               41EED7B92152ED8E000F2A16 /* vpx_convolve8_neon.h in Headers */,
+                               41330A31212E2BF500280939 /* vpx_mem.h in Headers */,
+                               41330A35212E2C1F00280939 /* vpx_scale.h in Headers */,
+                               41BAE3C1212E2C5B00E22482 /* vpx_thread.h in Headers */,
+                               41BAE3C3212E2C5B00E22482 /* vpx_write_yuv_frame.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                5C08848E1E4A97E300403995 /* Headers */ = {
                        isa = PBXHeadersBuildPhase;
                        buildActionMask = 2147483647;
                                5C4B46E71E42AA97002651C8 /* internal.h in Headers */,
                                5C4B47411E42AAEA002651C8 /* internal.h in Headers */,
                                41A391811EFC447C00C4516A /* internal.h in Headers */,
-                               41BCE753214C81A800A748F1 /* VideoProcessingSoftLink.h in Headers */,
                                41A3917C1EFC447C00C4516A /* internal.h in Headers */,
                                41A391851EFC447C00C4516A /* internal.h in Headers */,
                                41EA53AE1EFC2C4D002FF04C /* md32_common.h in Headers */,
                                41EA53CE1EFC2C8B002FF04C /* p256-x86_64.h in Headers */,
                                5C4B464C1E42AA34002651C8 /* pcy_int.h in Headers */,
                                41EA540F1EFC2D1B002FF04C /* rsaz_exp.h in Headers */,
+                               41BCE753214C81A800A748F1 /* VideoProcessingSoftLink.h in Headers */,
                                5C4B467F1E42AA3C002651C8 /* vpm_int.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                                5CDD86881E43B93900621E92 /* block_mean_calculator.h in Headers */,
                                5CD285B11E6A63430094FDC8 /* block_processor.h in Headers */,
                                5CD285AF1E6A63430094FDC8 /* block_processor_metrics.h in Headers */,
+                               4145020D2152E01C0033B4D3 /* blockd.h in Headers */,
                                5C4B4C621E431F9C002651C8 /* blocker.h in Headers */,
                                413A238E1FE18E0700373E99 /* buffer.h in Headers */,
                                5CDD8A0B1E43BFB300621E92 /* buffer_level_filter.h in Headers */,
                                41E02C87212734B900C27CD6 /* decoder_database.h in Headers */,
                                5CDD8B921E43C2B500621E92 /* decoder_interpolate_lsf.h in Headers */,
                                5CDD83CB1E439A6F00621E92 /* decoding_state.h in Headers */,
+                               4145020F2152E01C0033B4D3 /* default_coef_probs.h in Headers */,
                                5CD284981E6A5F410094FDC8 /* default_output_rate_calculator.h in Headers */,
                                419C843B1FE24E800040C30F /* default_temporal_layers.h in Headers */,
                                5CD2853A1E6A61980094FDC8 /* default_video_bitrate_allocator.h in Headers */,
                                5C4B4C711E431F9C002651C8 /* lapped_transform.h in Headers */,
                                5CDD84201E439B2900621E92 /* legacy_encoded_audio_frame.h in Headers */,
                                5CDD84B91E43AF1300621E92 /* level_estimator_impl.h in Headers */,
+                               41294095212E128D00AD95E7 /* libvpx_vp8_decoder.h in Headers */,
+                               41294093212E128D00AD95E7 /* libvpx_vp8_encoder.h in Headers */,
                                415F1FB321272FBA00064CBF /* limiter.h in Headers */,
                                5CD284F71E6A60570094FDC8 /* localaudiosource.h in Headers */,
                                413A23EC1FE18E0800373E99 /* location.h in Headers */,
                                413A23C01FE18E0800373E99 /* nullsocketserver.h in Headers */,
                                5CD285331E6A61110094FDC8 /* nullwebrtcvideoengine.h in Headers */,
                                413A23361FE18E0700373E99 /* onetimeevent.h in Headers */,
+                               4145020B2152E01C0033B4D3 /* onyxd.h in Headers */,
                                5CDD86951E43B93900621E92 /* ooura_fft.h in Headers */,
                                5CDD86921E43B93900621E92 /* ooura_fft_tables_common.h in Headers */,
                                41DDB266212679A300296D47 /* opensslcertificate.h in Headers */,
                                413A22C61FE18E0700373E99 /* thread_annotations.h in Headers */,
                                413A22E81FE18E0700373E99 /* thread_checker.h in Headers */,
                                413A22B81FE18E0700373E99 /* thread_checker_impl.h in Headers */,
+                               4145020E2152E01C0033B4D3 /* threading.h in Headers */,
                                5CDD84C41E43AF1300621E92 /* three_band_filter_bank.h in Headers */,
                                5CDD8A581E43BFB300621E92 /* tick_timer.h in Headers */,
                                419241DD21275A3000634FCF /* time_delta.h in Headers */,
                                4102F6DE21273416006AE8D7 /* video_stream_decoder_create.h in Headers */,
                                4102F6CE212733B7006AE8D7 /* video_stream_decoder_impl.h in Headers */,
                                4102F6CA212733B7006AE8D7 /* video_stream_encoder.h in Headers */,
-                               41A08BB3212681C8001D5D7B /* video_stream_encoder_create.h in Headers */,
+                               41239B4C2147716D00396F81 /* video_stream_encoder_create.h in Headers */,
                                41A08BB4212681C8001D5D7B /* video_stream_encoder_interface.h in Headers */,
                                41A08BB5212681C8001D5D7B /* video_stream_encoder_observer.h in Headers */,
                                4102F6E121273416006AE8D7 /* video_stream_encoder_settings.h in Headers */,
                                5CDD89871E43BF3A00621E92 /* voip_metric.h in Headers */,
                                4145F6171FE1EFCA00EB9CAF /* vp8.h in Headers */,
                                419241F421275C3200634FCF /* vp8_encoder_simulcast_proxy.h in Headers */,
+                               414502102152E01C0033B4D3 /* vp8_entropymodedata.h in Headers */,
                                5CDD83861E439A3500621E92 /* vp8_header_parser.h in Headers */,
+                               4145020C2152E01C0033B4D3 /* vp8_skin_detection.h in Headers */,
                                5CDD8BF41E43C2B500621E92 /* vq3.h in Headers */,
                                5CDD8BF61E43C2B500621E92 /* vq4.h in Headers */,
                                5C4B4C811E431F9C002651C8 /* wav_file.h in Headers */,
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
+               4105EB69212E01D2008C0C20 /* vpx */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 4105EB7F212E01D2008C0C20 /* Build configuration list for PBXNativeTarget "vpx" */;
+                       buildPhases = (
+                               4105EB6C212E01D2008C0C20 /* Headers */,
+                               4105EB74212E01D2008C0C20 /* Sources */,
+                               4105EB7C212E01D2008C0C20 /* Frameworks */,
+                               4105EB7D212E01D2008C0C20 /* CopyFiles */,
+                               4105EB7E212E01D2008C0C20 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               4105EB6A212E01D2008C0C20 /* PBXTargetDependency */,
+                       );
+                       name = vpx;
+                       productName = libwebrtc;
+                       productReference = 4105EB83212E01D2008C0C20 /* libvpx.a */;
+                       productType = "com.apple.product-type.library.static";
+               };
                5C08848B1E4A97E300403995 /* srtp */ = {
                        isa = PBXNativeTarget;
                        buildConfigurationList = 5C0884CD1E4A97E300403995 /* Build configuration list for PBXNativeTarget "srtp" */;
                        buildRules = (
                        );
                        dependencies = (
+                               411ED040212E0811004320BA /* PBXTargetDependency */,
                                5C088C0D1E4AA3FD00403995 /* PBXTargetDependency */,
                                5C0884E01E4A982000403995 /* PBXTargetDependency */,
                                5C0884E21E4A982000403995 /* PBXTargetDependency */,
                                5C08848B1E4A97E300403995 /* srtp */,
                                5C0884D21E4A980100403995 /* yuv */,
                                5C0885371E4AA3B100403995 /* webrtcpcrtc */,
+                               4105EB69212E01D2008C0C20 /* vpx */,
                        );
                };
 /* End PBXProject section */
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+               4105EB74212E01D2008C0C20 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               41330A13212E2BDF00280939 /* add_noise.c in Sources */,
+                               41C62937212E2F1E002313D4 /* alloccommon.c in Sources */,
+                               41EED7BE2152EEC9000F2A16 /* arm_cpudetect.c in Sources */,
+                               41330A14212E2BDF00280939 /* avg.c in Sources */,
+                               41C628FA212E2DB0002313D4 /* avg_intrin_sse2.c in Sources */,
+                               41EED77C2152ED8E000F2A16 /* avg_neon.c in Sources */,
+                               41EED77D2152ED8E000F2A16 /* avg_pred_neon.c in Sources */,
+                               41C6291F212E2DE9002313D4 /* avg_pred_sse2.c in Sources */,
+                               419100D72152ECE700A6F17B /* bilinearpredict_neon.c in Sources */,
+                               41330A15212E2BDF00280939 /* bitreader.c in Sources */,
+                               41330A28212E2BDF00280939 /* bitreader_buffer.c in Sources */,
+                               416731D1212E0430001280EB /* bitstream.c in Sources */,
+                               41330A16212E2BDF00280939 /* bitwriter.c in Sources */,
+                               41330A29212E2BDF00280939 /* bitwriter_buffer.c in Sources */,
+                               41C62938212E2F1E002313D4 /* blockd.c in Sources */,
+                               416731B3212E0430001280EB /* boolhuff.c in Sources */,
+                               41C62939212E2F1E002313D4 /* context.c in Sources */,
+                               41C6293A212E2F1E002313D4 /* copy_c.c in Sources */,
+                               419100D82152ECE700A6F17B /* copymem_neon.c in Sources */,
+                               41CBAF94212E039300DE1E1D /* dboolhuff.c in Sources */,
+                               419100D92152ECE700A6F17B /* dc_only_idct_add_neon.c in Sources */,
+                               416731C3212E0430001280EB /* dct.c in Sources */,
+                               41330A17212E2BDF00280939 /* deblock.c in Sources */,
+                               41EED77E2152ED8E000F2A16 /* deblock_neon.c in Sources */,
+                               41C6293B212E2F1E002313D4 /* debugmodes.c in Sources */,
+                               41CBAF95212E039300DE1E1D /* decodeframe.c in Sources */,
+                               41CBAF96212E039300DE1E1D /* decodemv.c in Sources */,
+                               416731B4212E0430001280EB /* denoising.c in Sources */,
+                               419100B02152EC9000A6F17B /* denoising_neon.c in Sources */,
+                               411ED037212E07A9004320BA /* denoising_sse2.c in Sources */,
+                               419100DA2152ECE700A6F17B /* dequant_idct_neon.c in Sources */,
+                               41C6293C212E2F1E002313D4 /* dequantize.c in Sources */,
+                               419100DB2152ECE700A6F17B /* dequantizeb_neon.c in Sources */,
+                               41CBAF98212E039300DE1E1D /* detokenize.c in Sources */,
+                               416731C5212E0430001280EB /* encodeframe.c in Sources */,
+                               416731C7212E0430001280EB /* encodeintra.c in Sources */,
+                               416731C9212E0430001280EB /* encodemb.c in Sources */,
+                               416731CA212E0430001280EB /* encodemv.c in Sources */,
+                               41C6293D212E2F1E002313D4 /* entropy.c in Sources */,
+                               41C6293E212E2F1E002313D4 /* entropymode.c in Sources */,
+                               41C6293F212E2F1E002313D4 /* entropymv.c in Sources */,
+                               416731B5212E0430001280EB /* ethreading.c in Sources */,
+                               41C62940212E2F1E002313D4 /* extend.c in Sources */,
+                               419100B12152EC9000A6F17B /* fastquantizeb_neon.c in Sources */,
+                               41330A18212E2BDF00280939 /* fastssim.c in Sources */,
+                               41EED7812152ED8E000F2A16 /* fdct16x16_neon.c in Sources */,
+                               41EED7822152ED8E000F2A16 /* fdct32x32_neon.c in Sources */,
+                               41EED77F2152ED8E000F2A16 /* fdct_neon.c in Sources */,
+                               41EED7802152ED8E000F2A16 /* fdct_partial_neon.c in Sources */,
+                               41C62941212E2F1E002313D4 /* filter.c in Sources */,
+                               41239AF4214756FC00396F81 /* filter_x86.c in Sources */,
+                               41C62942212E2F1E002313D4 /* findnearmv.c in Sources */,
+                               416731D4212E0430001280EB /* firstpass.c in Sources */,
+                               41330A19212E2BDF00280939 /* fwd_txfm.c in Sources */,
+                               41EED7832152ED8E000F2A16 /* fwd_txfm_neon.c in Sources */,
+                               41C628FC212E2DB0002313D4 /* fwd_txfm_sse2.c in Sources */,
+                               41239B10214757B200396F81 /* gen_scalers.c in Sources */,
+                               41EED7842152ED8E000F2A16 /* hadamard_neon.c in Sources */,
+                               41239B4721476F5E00396F81 /* highbd_idct16x16_add_sse2.c in Sources */,
+                               41239B4921476F5E00396F81 /* highbd_idct32x32_add_sse2.c in Sources */,
+                               41239B4321476F5E00396F81 /* highbd_idct4x4_add_sse2.c in Sources */,
+                               41239B4521476F5E00396F81 /* highbd_idct8x8_add_sse2.c in Sources */,
+                               41239B2C21475F7A00396F81 /* highbd_intrapred_intrin_sse2.c in Sources */,
+                               41239B2D21475F7A00396F81 /* highbd_intrapred_intrin_ssse3.c in Sources */,
+                               41239B2E21475F7A00396F81 /* highbd_loopfilter_sse2.c in Sources */,
+                               41239B2F21475F7A00396F81 /* highbd_quantize_intrin_sse2.c in Sources */,
+                               41239B3021475F7A00396F81 /* highbd_variance_sse2.c in Sources */,
+                               41EED79B2152ED8E000F2A16 /* idct16x16_1_add_neon.c in Sources */,
+                               41EED79C2152ED8E000F2A16 /* idct16x16_add_neon.c in Sources */,
+                               41EED79F2152ED8E000F2A16 /* idct32x32_135_add_neon.c in Sources */,
+                               41EED79D2152ED8E000F2A16 /* idct32x32_1_add_neon.c in Sources */,
+                               41EED79E2152ED8E000F2A16 /* idct32x32_34_add_neon.c in Sources */,
+                               41EED7A02152ED8E000F2A16 /* idct32x32_add_neon.c in Sources */,
+                               41EED7962152ED8E000F2A16 /* idct4x4_1_add_neon.c in Sources */,
+                               41EED7982152ED8E000F2A16 /* idct4x4_add_neon.c in Sources */,
+                               41EED7992152ED8E000F2A16 /* idct8x8_1_add_neon.c in Sources */,
+                               41EED79A2152ED8E000F2A16 /* idct8x8_add_neon.c in Sources */,
+                               41C62943212E2F1E002313D4 /* idct_blk.c in Sources */,
+                               41239AF6214756FC00396F81 /* idct_blk_mmx.c in Sources */,
+                               419100DC2152ECE700A6F17B /* idct_blk_neon.c in Sources */,
+                               41239AF2214756F200396F81 /* idct_blk_sse2.c in Sources */,
+                               419100DD2152ECE700A6F17B /* idct_dequant_0_2x_neon.c in Sources */,
+                               419100DE2152ECE700A6F17B /* idct_dequant_full_2x_neon.c in Sources */,
+                               41C62944212E2F1E002313D4 /* idctllm.c in Sources */,
+                               41330A1A212E2BDF00280939 /* intrapred.c in Sources */,
+                               41EED7A22152ED8E000F2A16 /* intrapred_neon.c in Sources */,
+                               41330A1B212E2BDF00280939 /* inv_txfm.c in Sources */,
+                               41C62925212E2DE9002313D4 /* inv_txfm_sse2.c in Sources */,
+                               41C62927212E2DE9002313D4 /* inv_txfm_ssse3.c in Sources */,
+                               419100DF2152ECE700A6F17B /* iwalsh_neon.c in Sources */,
+                               416731B6212E0430001280EB /* lookahead.c in Sources */,
+                               41330A1C212E2BDF00280939 /* loopfilter.c in Sources */,
+                               419100D62152ECE200A6F17B /* loopfilter_arm.c in Sources */,
+                               41C62945212E2F1E002313D4 /* loopfilter_filters.c in Sources */,
+                               41EED7A62152ED8E000F2A16 /* loopfilter_neon.c in Sources */,
+                               41C62907212E2DB0002313D4 /* loopfilter_sse2.c in Sources */,
+                               41239AF7214756FC00396F81 /* loopfilter_x86.c in Sources */,
+                               419100E02152ECE700A6F17B /* loopfiltersimplehorizontaledge_neon.c in Sources */,
+                               419100E12152ECE700A6F17B /* loopfiltersimpleverticaledge_neon.c in Sources */,
+                               419100E22152ECE700A6F17B /* mbloopfilter_neon.c in Sources */,
+                               41C62946212E2F1E002313D4 /* mbpitch.c in Sources */,
+                               416731B7212E0430001280EB /* mcomp.c in Sources */,
+                               41C62947212E2F1E002313D4 /* mfqe.c in Sources */,
+                               41C62948212E2F1E002313D4 /* modecont.c in Sources */,
+                               416731B8212E0430001280EB /* modecosts.c in Sources */,
+                               416731B9212E0430001280EB /* mr_dissim.c in Sources */,
+                               41EED7BF2152F1FB000F2A16 /* onyx_if.c in Sources */,
+                               41CBAF9A212E039300DE1E1D /* onyxd_if.c in Sources */,
+                               416731D6212E0430001280EB /* pickinter.c in Sources */,
+                               416731BB212E0430001280EB /* picklpf.c in Sources */,
+                               41C62949212E2F1E002313D4 /* postproc.c in Sources */,
+                               41330A1D212E2BDF00280939 /* prob.c in Sources */,
+                               41330A2B212E2BDF00280939 /* psnr.c in Sources */,
+                               41330A1E212E2BDF00280939 /* psnrhvs.c in Sources */,
+                               411ED030212E04BE004320BA /* quant_common.c in Sources */,
+                               41330A1F212E2BDF00280939 /* quantize.c in Sources */,
+                               41EED7A82152ED8E000F2A16 /* quantize_neon.c in Sources */,
+                               41C6291D212E2DE9002313D4 /* quantize_sse2.c in Sources */,
+                               41C62923212E2DE9002313D4 /* quantize_ssse3.c in Sources */,
+                               416731BC212E0430001280EB /* ratectrl.c in Sources */,
+                               416731BD212E0430001280EB /* rdopt.c in Sources */,
+                               41C6294A212E2F1E002313D4 /* reconinter.c in Sources */,
+                               41C6294B212E2F1E002313D4 /* reconintra.c in Sources */,
+                               41C6294C212E2F1E002313D4 /* reconintra4x4.c in Sources */,
+                               41C6294D212E2F1E002313D4 /* rtcd.c in Sources */,
+                               41EED7DC21531E5F000F2A16 /* sad.c in Sources */,
+                               41EED7AA2152ED8E000F2A16 /* sad4d_neon.c in Sources */,
+                               41EED7A92152ED8E000F2A16 /* sad_neon.c in Sources */,
+                               416731BE212E0430001280EB /* segmentation.c in Sources */,
+                               41C6294E212E2F1E002313D4 /* setupintrarecon.c in Sources */,
+                               419100B22152EC9000A6F17B /* shortfdct_neon.c in Sources */,
+                               419100E32152ECE700A6F17B /* shortidct4x4llm_neon.c in Sources */,
+                               419100E42152ECE700A6F17B /* sixtappredict_neon.c in Sources */,
+                               41330A21212E2BDF00280939 /* skin_detection.c in Sources */,
+                               41EED7AC2152ED8E000F2A16 /* subpel_variance_neon.c in Sources */,
+                               41330A23212E2BDF00280939 /* subtract.c in Sources */,
+                               41EED7AD2152ED8E000F2A16 /* subtract_neon.c in Sources */,
+                               41330A24212E2BDF00280939 /* sum_squares.c in Sources */,
+                               41C62928212E2DE9002313D4 /* sum_squares_sse2.c in Sources */,
+                               41EAF1C3212E2AB2009F73EC /* svc_encodeframe.c in Sources */,
+                               41C6294F212E2F1E002313D4 /* swapyv12buffer.c in Sources */,
+                               41239B3B21476AE600396F81 /* systemdependent.c in Sources */,
+                               416731CF212E0430001280EB /* temporal_filter.c in Sources */,
+                               41CBAF9B212E039300DE1E1D /* threading.c in Sources */,
+                               416731BF212E0430001280EB /* tokenize.c in Sources */,
+                               41C62950212E2F1E002313D4 /* treecoder.c in Sources */,
+                               416731C0212E0430001280EB /* treewriter.c in Sources */,
+                               41239B4B2147711600396F81 /* variance.c in Sources */,
+                               41EED7B02152ED8E000F2A16 /* variance_neon.c in Sources */,
+                               41C62922212E2DE9002313D4 /* variance_sse2.c in Sources */,
+                               41239AF8214756FC00396F81 /* vp8_asm_stubs.c in Sources */,
+                               41EAF1C8212E2B2F009F73EC /* vp8_cx_iface.c in Sources */,
+                               41EAF1C9212E2B32009F73EC /* vp8_dx_iface.c in Sources */,
+                               411ED03C212E07A9004320BA /* vp8_enc_stubs_sse2.c in Sources */,
+                               41C62951212E2F1E002313D4 /* vp8_loopfilter.c in Sources */,
+                               419100E52152ECE700A6F17B /* vp8_loopfilter_neon.c in Sources */,
+                               416731D7212E0430001280EB /* vp8_quantize.c in Sources */,
+                               411ED03D212E07A9004320BA /* vp8_quantize_sse2.c in Sources */,
+                               411ED03E212E07A9004320BA /* vp8_quantize_ssse3.c in Sources */,
+                               419100B32152EC9000A6F17B /* vp8_shortwalsh4x4_neon.c in Sources */,
+                               41C62952212E2F1E002313D4 /* vp8_skin_detection.c in Sources */,
+                               41C6290B212E2DB0002313D4 /* vpx_asm_stubs.c in Sources */,
+                               41EAF1C4212E2AB2009F73EC /* vpx_codec.c in Sources */,
+                               4129408A212E0CC400AD95E7 /* vpx_config.c in Sources */,
+                               41330A26212E2BDF00280939 /* vpx_convolve.c in Sources */,
+                               41EED7B82152ED8E000F2A16 /* vpx_convolve8_neon.c in Sources */,
+                               41EED7B22152ED8E000F2A16 /* vpx_convolve_avg_neon.c in Sources */,
+                               41EED7B42152ED8E000F2A16 /* vpx_convolve_copy_neon.c in Sources */,
+                               41EED7B52152ED8E000F2A16 /* vpx_convolve_neon.c in Sources */,
+                               41EAF1C5212E2AB2009F73EC /* vpx_decoder.c in Sources */,
+                               41330A27212E2BDF00280939 /* vpx_dsp_rtcd.c in Sources */,
+                               41EAF1C6212E2AB2009F73EC /* vpx_encoder.c in Sources */,
+                               41EAF1C7212E2AB2009F73EC /* vpx_image.c in Sources */,
+                               41330A30212E2BF500280939 /* vpx_mem.c in Sources */,
+                               41239B11214757B200396F81 /* vpx_scale.c in Sources */,
+                               41330A34212E2C1F00280939 /* vpx_scale_rtcd.c in Sources */,
+                               41EED7BA2152ED8E000F2A16 /* vpx_scaled_convolve8_neon.c in Sources */,
+                               41C6290D212E2DB0002313D4 /* vpx_subpixel_8t_intrin_ssse3.c in Sources */,
+                               41BAE3C0212E2C5B00E22482 /* vpx_thread.c in Sources */,
+                               41BAE3C2212E2C5B00E22482 /* vpx_write_yuv_frame.c in Sources */,
+                               41239B12214757B200396F81 /* yv12config.c in Sources */,
+                               41239B13214757B200396F81 /* yv12extend.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                5C0884B51E4A97E300403995 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                                5C088C1C1E4AA44400403995 /* mediasession.cc in Sources */,
                                5C088C1E1E4AA44400403995 /* rtcpmuxfilter.cc in Sources */,
                                5C088C201E4AA44400403995 /* srtpfilter.cc in Sources */,
+                               41239B4D2147743A00396F81 /* video_stream_encoder_create.cc in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                5CDD8B911E43C2B500621E92 /* decoder_interpolate_lsf.c in Sources */,
                                5CDD83CA1E439A6F00621E92 /* decoding_state.cc in Sources */,
                                5CD284971E6A5F410094FDC8 /* default_output_rate_calculator.cc in Sources */,
+                               41C62936212E2EE5002313D4 /* default_temporal_layers.cc in Sources */,
                                5CD285391E6A61980094FDC8 /* default_video_bitrate_allocator.cc in Sources */,
                                4102F6BB21273382006AE8D7 /* degraded_call.cc in Sources */,
                                41E02CA52127352D00C27CD6 /* delay_based_bwe.cc in Sources */,
                                5CDD841F1E439B2900621E92 /* legacy_encoded_audio_frame.cc in Sources */,
                                5CDD84B81E43AF1300621E92 /* level_estimator_impl.cc in Sources */,
                                5CDD865A1E43B8B500621E92 /* levinson_durbin.c in Sources */,
+                               41294094212E128D00AD95E7 /* libvpx_vp8_decoder.cc in Sources */,
+                               41294092212E128D00AD95E7 /* libvpx_vp8_encoder.cc in Sources */,
                                416D3BE6212731C200775F09 /* limiter.cc in Sources */,
                                5CD284F61E6A60570094FDC8 /* localaudiosource.cc in Sources */,
                                413A23EB1FE18E0800373E99 /* location.cc in Sources */,
                                413A230F1FE18E0700373E99 /* rtccertificate.cc in Sources */,
                                413A22BE1FE18E0700373E99 /* rtccertificategenerator.cc in Sources */,
                                41ECEAC620641303009D5141 /* RTCCVPixelBuffer.mm in Sources */,
+                               41239B3E21476DC000396F81 /* RTCDefaultVideoDecoderFactory.m in Sources */,
+                               41EAF1B6212E29C1009F73EC /* RTCDefaultVideoEncoderFactory.m in Sources */,
                                41ECEAC820641328009D5141 /* RTCEncodedImage.mm in Sources */,
                                41F411B01EF8DA0100343C26 /* rtcerror.cc in Sources */,
                                41ECEACF20641370009D5141 /* RTCI420Buffer.mm in Sources */,
                                5C63FA791E417AED002CA531 /* rtcstatsreport.cc in Sources */,
                                4102F69221273206006AE8D7 /* rtcstatstraversal.cc in Sources */,
                                41ECEAB720630108009D5141 /* RTCVideoCodec.mm in Sources */,
-                               41AF2D13212CD6AC00D033D5 /* RTCVideoCodecH264.mm in Sources */,
+                               41F773FD215AF94C00E72967 /* RTCVideoCodecH264.mm in Sources */,
+                               41EAF1B7212E29C1009F73EC /* RTCVideoCodecVP8.mm in Sources */,
                                41AF2D14212CD6AF00D033D5 /* RTCVideoDecoderH264.mm in Sources */,
                                41ECEAC4206411E5009D5141 /* RTCVideoEncoderH264.mm in Sources */,
                                41ECEAEA20641812009D5141 /* RTCVideoEncoderSettings.mm in Sources */,
                                5CFD53941E4BD3A300482908 /* scale_neon64.cc in Sources */,
                                41F9BFB52051C93600ABF0B9 /* scopedvideodecoder.cc in Sources */,
                                41F9BFB92051C93600ABF0B9 /* scopedvideoencoder.cc in Sources */,
+                               41239B3F21476DC400396F81 /* screenshare_layers.cc in Sources */,
                                5CD2863C1E6A681C0094FDC8 /* sctptransport.cc in Sources */,
                                5CD2850D1E6A60570094FDC8 /* sctputils.cc in Sources */,
                                5CDD896F1E43BF3A00621E92 /* sdes.cc in Sources */,
                                4102F6DB21273416006AE8D7 /* video_stream_decoder_create.cc in Sources */,
                                4102F6CB212733B7006AE8D7 /* video_stream_decoder_impl.cc in Sources */,
                                419C831F1FE242E60040C30F /* video_stream_encoder.cc in Sources */,
-                               4102F6DF21273416006AE8D7 /* video_stream_encoder_create.cc in Sources */,
                                419C84101FE249AB0040C30F /* video_timing.cc in Sources */,
                                5C4B48FC1E42C1E3002651C8 /* videoadapter.cc in Sources */,
                                5C4B48FF1E42C1E3002651C8 /* videobroadcaster.cc in Sources */,
                                5CDD89861E43BF3A00621E92 /* voip_metric.cc in Sources */,
                                419241F521275C3200634FCF /* vp8_encoder_simulcast_proxy.cc in Sources */,
                                5CDD83851E439A3500621E92 /* vp8_header_parser.cc in Sources */,
-                               41F411BF1EF8DBA500343C26 /* vp8_noop.cc in Sources */,
                                5CDD8C141E43C3B400621E92 /* vp9_noop.cc in Sources */,
                                5CDD8BF31E43C2B500621E92 /* vq3.c in Sources */,
                                5CDD8BF51E43C2B500621E92 /* vq4.c in Sources */,
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+               4105EB6A212E01D2008C0C20 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 5C63F6611E414AB6002CA531 /* Copy webrtc headers */;
+                       targetProxy = 4105EB6B212E01D2008C0C20 /* PBXContainerItemProxy */;
+               };
+               411ED040212E0811004320BA /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 4105EB69212E01D2008C0C20 /* vpx */;
+                       targetProxy = 411ED03F212E0811004320BA /* PBXContainerItemProxy */;
+               };
                5C08848C1E4A97E300403995 /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        target = 5C63F6611E414AB6002CA531 /* Copy webrtc headers */;
 /* End PBXTargetDependency section */
 
 /* Begin XCBuildConfiguration section */
+               4105EB80212E01D2008C0C20 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       baseConfigurationReference = 411ED035212E05DE004320BA /* libvpx.xcconfig */;
+                       buildSettings = {
+                               CLANG_WARN_STRICT_PROTOTYPES = NO;
+                               CLANG_X86_VECTOR_INSTRUCTIONS = default;
+                               HEADER_SEARCH_PATHS = "$(inherited)";
+                               OTHER_CFLAGS = "";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               USE_HEADERMAP = NO;
+                       };
+                       name = Debug;
+               };
+               4105EB81212E01D2008C0C20 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       baseConfigurationReference = 411ED035212E05DE004320BA /* libvpx.xcconfig */;
+                       buildSettings = {
+                               CLANG_WARN_STRICT_PROTOTYPES = NO;
+                               CLANG_X86_VECTOR_INSTRUCTIONS = default;
+                               HEADER_SEARCH_PATHS = "$(inherited)";
+                               OTHER_CFLAGS = "";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               USE_HEADERMAP = NO;
+                       };
+                       name = Release;
+               };
+               4105EB82212E01D2008C0C20 /* Production */ = {
+                       isa = XCBuildConfiguration;
+                       baseConfigurationReference = 411ED035212E05DE004320BA /* libvpx.xcconfig */;
+                       buildSettings = {
+                               CLANG_WARN_STRICT_PROTOTYPES = NO;
+                               CLANG_X86_VECTOR_INSTRUCTIONS = default;
+                               HEADER_SEARCH_PATHS = "$(inherited)";
+                               OTHER_CFLAGS = "";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               USE_HEADERMAP = NO;
+                       };
+                       name = Production;
+               };
                5C0884CE1E4A97E300403995 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        baseConfigurationReference = 5C0884891E4A978C00403995 /* libsrtp.xcconfig */;
                                        "$(inherited)",
                                        "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
                                );
-                               HEADER_SEARCH_PATHS = (
-                                       Source,
-                                       Source/third_party/jsoncpp/source/include,
-                                       Source/third_party/libsrtp/crypto/include,
-                                       Source/third_party/libsrtp/include,
-                                       Source/third_party/boringssl/src/include,
-                                       Source/third_party/libyuv/include,
-                                       Source/third_party/usrsctp,
-                                       Source/third_party/usrsctp/usrsctplib,
-                                       Source/webrtc/sdk/objc/Framework/Headers,
-                                       Source/webrtc/common_audio/signal_processing/include,
-                                       Source/webrtc/modules/audio_coding/codecs/isac/main/include,
-                                       Source/third_party/opus/src/celt,
-                                       Source/third_party/opus/src/include,
-                                       Source/third_party/opus/src/src,
-                                       Source/webrtc/modules/audio_device/mac,
-                                       Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet,
-                                       Source/webrtc/modules/audio_device/ios,
-                                       Source/webrtc,
-                                       Source/webrtc/sdk/objc/Framework/Classes/,
-                                       Source/third_party/libsrtp/config,
-                                       Source/webrtc/sdk/objc/Framework/Classes/Common,
-                                       Source/webrtc/sdk/objc/Framework/Classes/Video,
-                                       Source/webrtc/sdk/objc/Framework/Classes/PeerConnection,
-                                       "Source/third_party/abseil-cpp",
-                               );
+                               HEADER_SEARCH_PATHS = "$(inherited)";
                                OTHER_CFLAGS = "";
                        };
                        name = Production;
                                        "$(inherited)",
                                        "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
                                );
-                               HEADER_SEARCH_PATHS = (
-                                       Source,
-                                       Source/third_party/jsoncpp/source/include,
-                                       Source/third_party/libsrtp/crypto/include,
-                                       Source/third_party/libsrtp/include,
-                                       Source/third_party/boringssl/src/include,
-                                       Source/third_party/libyuv/include,
-                                       Source/third_party/usrsctp,
-                                       Source/third_party/usrsctp/usrsctplib,
-                                       Source/webrtc/sdk/objc/Framework/Headers,
-                                       Source/webrtc/common_audio/signal_processing/include,
-                                       Source/webrtc/modules/audio_coding/codecs/isac/main/include,
-                                       Source/third_party/opus/src/celt,
-                                       Source/third_party/opus/src/include,
-                                       Source/third_party/opus/src/src,
-                                       Source/webrtc/modules/audio_device/mac,
-                                       Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet,
-                                       Source/webrtc/modules/audio_device/ios,
-                                       Source/webrtc,
-                                       Source/webrtc/sdk/objc/Framework/Classes/,
-                                       Source/third_party/libsrtp/config,
-                                       Source/webrtc/sdk/objc/Framework/Classes/Common,
-                                       Source/webrtc/sdk/objc/Framework/Classes/Video,
-                                       Source/webrtc/sdk/objc/Framework/Classes/PeerConnection,
-                                       "Source/third_party/abseil-cpp",
-                               );
+                               HEADER_SEARCH_PATHS = "$(inherited)";
                        };
                        name = Debug;
                };
                                        "$(inherited)",
                                        "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
                                );
-                               HEADER_SEARCH_PATHS = (
-                                       Source,
-                                       Source/third_party/jsoncpp/source/include,
-                                       Source/third_party/libsrtp/crypto/include,
-                                       Source/third_party/libsrtp/include,
-                                       Source/third_party/boringssl/src/include,
-                                       Source/third_party/libyuv/include,
-                                       Source/third_party/usrsctp,
-                                       Source/third_party/usrsctp/usrsctplib,
-                                       Source/webrtc/sdk/objc/Framework/Headers,
-                                       Source/webrtc/common_audio/signal_processing/include,
-                                       Source/webrtc/modules/audio_coding/codecs/isac/main/include,
-                                       Source/third_party/opus/src/celt,
-                                       Source/third_party/opus/src/include,
-                                       Source/third_party/opus/src/src,
-                                       Source/webrtc/modules/audio_device/mac,
-                                       Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet,
-                                       Source/webrtc/modules/audio_device/ios,
-                                       Source/webrtc,
-                                       Source/webrtc/sdk/objc/Framework/Classes/,
-                                       Source/third_party/libsrtp/config,
-                                       Source/webrtc/sdk/objc/Framework/Classes/Common,
-                                       Source/webrtc/sdk/objc/Framework/Classes/Video,
-                                       Source/webrtc/sdk/objc/Framework/Classes/PeerConnection,
-                                       "Source/third_party/abseil-cpp",
-                               );
+                               HEADER_SEARCH_PATHS = "$(inherited)";
                                OTHER_CFLAGS = "";
                        };
                        name = Release;
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+               4105EB7F212E01D2008C0C20 /* Build configuration list for PBXNativeTarget "vpx" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               4105EB80212E01D2008C0C20 /* Debug */,
+                               4105EB81212E01D2008C0C20 /* Release */,
+                               4105EB82212E01D2008C0C20 /* Production */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Production;
+               };
                5C0884CD1E4A97E300403995 /* Build configuration list for PBXNativeTarget "srtp" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
index 789654e..629563f 100644 (file)
@@ -1,3 +1,27 @@
+2018-09-27  Youenn Fablet  <youenn@apple.com>
+
+        Add VP8 support to WebRTC
+        https://bugs.webkit.org/show_bug.cgi?id=189976
+
+        Reviewed by Eric Carlson.
+
+        Add a runtime flag to control activation of VP8 codec.
+        Bind this runtime flag to the video codec factories.
+        Test: webrtc/video-mute-vp8.html
+
+        * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
+        (WebCore::createLibWebRTCPeerConnectionBackend):
+        * page/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::webRTCVP8CodecEnabled const):
+        (WebCore::RuntimeEnabledFeatures::setWebRTCVP8CodecEnabled):
+        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
+        * platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:
+        (WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
+        (WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
+        * testing/Internals.cpp:
+        (WebCore::Internals::resetToConsistentState):
+        Enable VP8 codec for tests.
+
 2018-09-27  Chris Dumez  <cdumez@apple.com>
 
         Crash under WebCore::deleteCookiesForHostnames()
index 605f2e7..d20da65 100644 (file)
@@ -56,6 +56,10 @@ static std::unique_ptr<PeerConnectionBackend> createLibWebRTCPeerConnectionBacke
     auto* page = downcast<Document>(*peerConnection.scriptExecutionContext()).page();
     if (!page)
         return nullptr;
+
+#if USE(LIBWEBRTC)
+    page->libWebRTCProvider().supportsVP8(RuntimeEnabledFeatures::sharedFeatures().webRTCVP8CodecEnabled());
+#endif
     return std::make_unique<LibWebRTCPeerConnectionBackend>(peerConnection, page->libWebRTCProvider());
 }
 
index 0e84f04..88a3e41 100644 (file)
@@ -190,6 +190,8 @@ public:
 #endif
 
 #if ENABLE(WEB_RTC)
+    bool webRTCVP8CodecEnabled() const { return m_isWebRTCVP8CodecEnabled; }
+    void setWebRTCVP8CodecEnabled(bool isEnabled) { m_isWebRTCVP8CodecEnabled = isEnabled; }
     bool webRTCUnifiedPlanEnabled() const { return m_isWebRTCUnifiedPlanEnabled; }
     void setWebRTCUnifiedPlanEnabled(bool isEnabled) { m_isWebRTCUnifiedPlanEnabled = isEnabled; }
     bool peerConnectionEnabled() const { return m_isPeerConnectionEnabled; }
@@ -354,6 +356,7 @@ private:
 #endif
 
 #if ENABLE(WEB_RTC)
+    bool m_isWebRTCVP8CodecEnabled { false };
     bool m_isWebRTCUnifiedPlanEnabled { true };
     bool m_isPeerConnectionEnabled { true };
     bool m_mdnsICECandidatesEnabled { false };
index 7c2f518..1fb1db4 100644 (file)
@@ -109,6 +109,7 @@ public:
     void disableEnumeratingAllNetworkInterfaces();
     void enableEnumeratingAllNetworkInterfaces();
 
+    void supportsVP8(bool value) { m_isSupportingVP8 = value; }
     virtual void disableNonLocalhostConnections() { m_disableNonLocalhostConnections = true; }
 
 protected:
@@ -126,6 +127,7 @@ protected:
 
     rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> m_factory;
     bool m_disableNonLocalhostConnections { false };
+    bool m_isSupportingVP8 { false };
 #endif
 };
 
index 51d2ed3..c2b3d15 100644 (file)
@@ -57,12 +57,14 @@ void LibWebRTCProviderCocoa::setH264HardwareEncoderAllowed(bool allowed)
 
 std::unique_ptr<webrtc::VideoDecoderFactory> LibWebRTCProviderCocoa::createDecoderFactory()
 {
-    return webrtc::createWebKitDecoderFactory();
+    auto codecSupport = m_isSupportingVP8 ? webrtc::WebKitCodecSupport::H264AndVP8 : webrtc::WebKitCodecSupport::H264;
+    return webrtc::createWebKitDecoderFactory(codecSupport);
 }
 
 std::unique_ptr<webrtc::VideoEncoderFactory> LibWebRTCProviderCocoa::createEncoderFactory()
 {
-    return webrtc::createWebKitEncoderFactory();
+    auto codecSupport = m_isSupportingVP8 ? webrtc::WebKitCodecSupport::H264AndVP8 : webrtc::WebKitCodecSupport::H264;
+    return webrtc::createWebKitEncoderFactory(codecSupport);
 }
 
 void LibWebRTCProviderCocoa::setActive(bool value)
index 81b912f..994ce80 100644 (file)
@@ -504,7 +504,7 @@ void Internals::resetToConsistentState(Page& page)
     auto& rtcProvider = page.libWebRTCProvider();
     WebCore::useRealRTCPeerConnectionFactory(rtcProvider);
     rtcProvider.disableNonLocalhostConnections();
-    RuntimeEnabledFeatures::sharedFeatures().setWebRTCUnifiedPlanEnabled(true);
+    RuntimeEnabledFeatures::sharedFeatures().setWebRTCVP8CodecEnabled(true);
 #endif
 
     page.settings().setStorageAccessAPIEnabled(false);
index 0837fa9..9233faf 100644 (file)
@@ -1,3 +1,12 @@
+2018-09-27  Youenn Fablet  <youenn@apple.com>
+
+        Add VP8 support to WebRTC
+        https://bugs.webkit.org/show_bug.cgi?id=189976
+
+        Reviewed by Eric Carlson.
+
+        * Shared/WebPreferences.yaml:
+
 2018-09-27  Chris Dumez  <cdumez@apple.com>
 
         The WebContent process should not process incoming IPC while waiting for a sync IPC reply
index e2517a1..9452cd5 100644 (file)
@@ -499,6 +499,15 @@ WebRTCUnifiedPlanEnabled:
   humanReadableDescription: "Use WebRTC Unified Plan"
   category: experimental
 
+WebRTCVP8CodecEnabled:
+  type: bool
+  defaultValue: false
+  webcoreBinding: RuntimeEnabledFeatures
+  condition: ENABLE(WEB_RTC)
+  humanReadableName: "WebRTC VP8 codec"
+  humanReadableDescription: "Enable WebRTC VP8 codec"
+  category: experimental
+
 UseLegacyTextAlignPositionedElementBehavior:
   type: bool
   defaultValue: false