<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[218670] trunk/Source/ThirdParty/libwebrtc</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/218670">218670</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2017-06-21 18:22:40 -0700 (Wed, 21 Jun 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Update libyuv to 8cab2e31d76246263206318f3568d452e7f3ff3e
https://bugs.webkit.org/show_bug.cgi?id=173675

Patch by Youenn Fablet <youenn@apple.com> on 2017-06-21
Reviewed by Sam Weinig.

* Source/third_party/libyuv/.clang-format: Added.
* Source/third_party/libyuv/.gitignore: Added.
* Source/third_party/libyuv/Android.mk:
* Source/third_party/libyuv/BUILD.gn:
* Source/third_party/libyuv/CM_linux_packages.cmake: Added.
* Source/third_party/libyuv/CMakeLists.txt:
* Source/third_party/libyuv/DEPS:
* Source/third_party/libyuv/PRESUBMIT.py:
(_RunPythonTests):
(_RunPythonTests.join):
(_CommonChecks):
(CheckChangeOnUpload):
(CheckChangeOnCommit):
* Source/third_party/libyuv/README.chromium:
* Source/third_party/libyuv/build_overrides/build.gni:
* Source/third_party/libyuv/chromium/.gclient: Removed.
* Source/third_party/libyuv/chromium/README: Removed.
* Source/third_party/libyuv/cleanup_links.py: Added.
(WebRTCLinkSetup):
(WebRTCLinkSetup.__init__):
(WebRTCLinkSetup.CleanupLinks):
(_initialize_database):
(main):
* Source/third_party/libyuv/codereview.settings:
* Source/third_party/libyuv/docs/deprecated_builds.md:
* Source/third_party/libyuv/docs/getting_started.md:
* Source/third_party/libyuv/gyp_libyuv.py:
* Source/third_party/libyuv/include/libyuv/basic_types.h:
* Source/third_party/libyuv/include/libyuv/compare.h:
* Source/third_party/libyuv/include/libyuv/compare_row.h:
* Source/third_party/libyuv/include/libyuv/convert.h:
* Source/third_party/libyuv/include/libyuv/convert_argb.h:
* Source/third_party/libyuv/include/libyuv/convert_from.h:
* Source/third_party/libyuv/include/libyuv/convert_from_argb.h:
* Source/third_party/libyuv/include/libyuv/cpu_id.h:
* Source/third_party/libyuv/include/libyuv/macros_msa.h:
* Source/third_party/libyuv/include/libyuv/mjpeg_decoder.h:
* Source/third_party/libyuv/include/libyuv/planar_functions.h:
* Source/third_party/libyuv/include/libyuv/rotate.h:
* Source/third_party/libyuv/include/libyuv/rotate_argb.h:
* Source/third_party/libyuv/include/libyuv/rotate_row.h:
* Source/third_party/libyuv/include/libyuv/row.h:
* Source/third_party/libyuv/include/libyuv/scale.h:
* Source/third_party/libyuv/include/libyuv/scale_argb.h:
* Source/third_party/libyuv/include/libyuv/scale_row.h:
* Source/third_party/libyuv/include/libyuv/version.h:
* Source/third_party/libyuv/include/libyuv/video_common.h:
* Source/third_party/libyuv/infra/config/OWNERS: Added.
* Source/third_party/libyuv/infra/config/README.md: Added.
* Source/third_party/libyuv/infra/config/cq.cfg: Added.
* Source/third_party/libyuv/libyuv.gyp:
* Source/third_party/libyuv/libyuv.gypi:
* Source/third_party/libyuv/libyuv_test.gyp:
* Source/third_party/libyuv/linux.mk:
* Source/third_party/libyuv/pylintrc: Added.
* Source/third_party/libyuv/setup_links.py: Removed.
* Source/third_party/libyuv/source/compare.cc:
* Source/third_party/libyuv/source/compare_common.cc:
* Source/third_party/libyuv/source/compare_gcc.cc:
* Source/third_party/libyuv/source/compare_neon.cc:
* Source/third_party/libyuv/source/compare_neon64.cc:
* Source/third_party/libyuv/source/compare_win.cc:
* Source/third_party/libyuv/source/convert.cc:
* Source/third_party/libyuv/source/convert_argb.cc:
* Source/third_party/libyuv/source/convert_from.cc:
* Source/third_party/libyuv/source/convert_from_argb.cc:
* Source/third_party/libyuv/source/convert_jpeg.cc:
* Source/third_party/libyuv/source/convert_to_argb.cc:
* Source/third_party/libyuv/source/convert_to_i420.cc:
* Source/third_party/libyuv/source/cpu_id.cc:
* Source/third_party/libyuv/source/mjpeg_decoder.cc:
* Source/third_party/libyuv/source/mjpeg_validate.cc:
* Source/third_party/libyuv/source/planar_functions.cc:
* Source/third_party/libyuv/source/rotate.cc:
* Source/third_party/libyuv/source/rotate_any.cc:
* Source/third_party/libyuv/source/rotate_argb.cc:
* Source/third_party/libyuv/source/rotate_common.cc:
* Source/third_party/libyuv/source/rotate_dspr2.cc: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_mips.cc.
* Source/third_party/libyuv/source/rotate_gcc.cc:
* Source/third_party/libyuv/source/rotate_msa.cc: Added.
* Source/third_party/libyuv/source/rotate_neon.cc:
* Source/third_party/libyuv/source/rotate_neon64.cc:
* Source/third_party/libyuv/source/rotate_win.cc:
* Source/third_party/libyuv/source/row_any.cc:
* Source/third_party/libyuv/source/row_common.cc:
* Source/third_party/libyuv/source/row_dspr2.cc: Added.
* Source/third_party/libyuv/source/row_gcc.cc:
* Source/third_party/libyuv/source/row_mips.cc: Removed.
* Source/third_party/libyuv/source/row_msa.cc:
* Source/third_party/libyuv/source/row_neon.cc:
* Source/third_party/libyuv/source/row_neon64.cc:
* Source/third_party/libyuv/source/row_win.cc:
* Source/third_party/libyuv/source/scale.cc:
* Source/third_party/libyuv/source/scale_any.cc:
* Source/third_party/libyuv/source/scale_argb.cc:
* Source/third_party/libyuv/source/scale_common.cc:
* Source/third_party/libyuv/source/scale_dspr2.cc: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_mips.cc.
* Source/third_party/libyuv/source/scale_gcc.cc:
* Source/third_party/libyuv/source/scale_msa.cc: Added.
* Source/third_party/libyuv/source/scale_neon.cc:
* Source/third_party/libyuv/source/scale_neon64.cc:
* Source/third_party/libyuv/source/scale_win.cc:
* Source/third_party/libyuv/source/video_common.cc:
* Source/third_party/libyuv/sync_chromium.py: Removed.
* Source/third_party/libyuv/third_party/gflags/BUILD.gn: Removed.
* Source/third_party/libyuv/third_party/gflags/LICENSE: Removed.
* Source/third_party/libyuv/third_party/gflags/README.libyuv: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags_completions.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags_declare.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags_gflags.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/posix/include/private/config.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags_completions.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags_declare.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags_gflags.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gen/win/include/private/config.h: Removed.
* Source/third_party/libyuv/third_party/gflags/gflags.gyp: Removed.
* Source/third_party/libyuv/tools/gritsettings/README: Removed.
* Source/third_party/libyuv/tools/gritsettings/resource_ids: Removed.
* Source/third_party/libyuv/tools/valgrind-libyuv/tsan/OWNERS: Removed.
* Source/third_party/libyuv/tools/valgrind-libyuv/tsan/PRESUBMIT.py: Removed.
* Source/third_party/libyuv/tools/valgrind-libyuv/tsan/suppressions.txt: Removed.
* Source/third_party/libyuv/tools/valgrind-libyuv/tsan/suppressions_mac.txt: Removed.
* Source/third_party/libyuv/tools/valgrind-libyuv/tsan/suppressions_win32.txt: Removed.
* Source/third_party/libyuv/tools_libyuv/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/OWNERS.
* Source/third_party/libyuv/tools_libyuv/autoroller/roll_deps.py: Added.
(RollError):
(ParseDepsDict):
(ParseLocalDepsFile):
(ParseRemoteCrDepsFile):
(ParseCommitPosition):
(_RunCommand):
(_GetBranches):
(_ReadGitilesContent):
(ReadRemoteCrFile):
(ReadRemoteCrCommit):
(ReadUrlContent):
(GetMatchingDepsEntries):
(BuildDepsentryDict):
(BuildDepsentryDict.AddDepsEntries):
(CalculateChangedDeps):
(CalculateChangedClang):
(CalculateChangedClang.GetClangRev):
(GenerateCommitMessage):
(UpdateDepsFile):
(_IsTreeClean):
(_EnsureUpdatedMasterBranch):
(_CreateRollBranch):
(_RemovePreviousRollBranch):
(_LocalCommit):
(_UploadCL):
(_SendToCQ):
(main):
* Source/third_party/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py: Added.
(TestError):
(FakeCmd):
(FakeCmd.__init__):
(FakeCmd.add_expectation):
(FakeCmd.__call__):
(TestRollChromiumRevision):
(TestRollChromiumRevision.setUp):
(TestRollChromiumRevision.tearDown):
(TestRollChromiumRevision.testUpdateDepsFile):
(TestRollChromiumRevision.testParseDepsDict):
(TestRollChromiumRevision.testParseDepsDict.assertVar):
(TestRollChromiumRevision.testGetMatchingDepsEntriesReturnsPathInSimpleCase):
(TestRollChromiumRevision.testGetMatchingDepsEntriesHandlesSimilarStartingPaths):
(TestRollChromiumRevision.testGetMatchingDepsEntriesHandlesTwoPathsWithIdenticalFirstParts):
(TestRollChromiumRevision.testCalculateChangedDeps):
(_SetupGitLsRemoteCall):
* Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS: Added.
* Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new: Added.
* Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old: Added.
* Source/third_party/libyuv/tools_libyuv/get_landmines.py: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/get_landmines.py.
* Source/third_party/libyuv/tools_libyuv/msan/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/msan/OWNERS.
* Source/third_party/libyuv/tools_libyuv/msan/blacklist.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/msan/blacklist.txt.
* Source/third_party/libyuv/tools_libyuv/ubsan/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/ubsan/OWNERS.
* Source/third_party/libyuv/tools_libyuv/ubsan/blacklist.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/ubsan/blacklist.txt.
* Source/third_party/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/ubsan/vptr_blacklist.txt.
* Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.bat: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/libyuv_tests.bat.
* Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.py: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/libyuv_tests.py.
(LibyuvTest._DefaultCommand):
* Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.sh: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/libyuv_tests.sh.
* Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/OWNERS.
* Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/PRESUBMIT.py: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/PRESUBMIT.py.
(CheckChange):
* Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/suppressions.txt.
* Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions_mac.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/suppressions_mac.txt.
* Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions_win32.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/suppressions_win32.txt.
* Source/third_party/libyuv/unit_test/color_test.cc:
* Source/third_party/libyuv/unit_test/compare_test.cc:
* Source/third_party/libyuv/unit_test/convert_test.cc:
* Source/third_party/libyuv/unit_test/cpu_test.cc:
* Source/third_party/libyuv/unit_test/cpu_thread_test.cc: Added.
* Source/third_party/libyuv/unit_test/math_test.cc:
* Source/third_party/libyuv/unit_test/planar_test.cc:
* Source/third_party/libyuv/unit_test/rotate_argb_test.cc:
* Source/third_party/libyuv/unit_test/rotate_test.cc:
* Source/third_party/libyuv/unit_test/scale_argb_test.cc:
* Source/third_party/libyuv/unit_test/scale_test.cc:
* Source/third_party/libyuv/unit_test/unit_test.cc:
* Source/third_party/libyuv/unit_test/unit_test.h:
(SizeValid):
* Source/third_party/libyuv/unit_test/video_common_test.cc:
* Source/third_party/libyuv/util/compare.cc:
* Source/third_party/libyuv/util/cpuid.c:
(main):
* Source/third_party/libyuv/util/psnr.cc:
* Source/third_party/libyuv/util/psnr_main.cc:
* Source/third_party/libyuv/util/ssim.cc:
* Source/third_party/libyuv/util/ssim.h:
* Source/third_party/libyuv/util/yuvconvert.cc: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/convert.cc.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceThirdPartylibwebrtcChangeLog">trunk/Source/ThirdParty/libwebrtc/ChangeLog</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvAndroidmk">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/Android.mk</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvBUILDgn">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/BUILD.gn</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvCMakeListstxt">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CMakeLists.txt</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvDEPS">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/DEPS</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvPRESUBMITpy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/PRESUBMIT.py</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvREADMEchromium">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/README.chromium</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvbuild_overridesbuildgni">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/build_overrides/build.gni</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvcodereviewsettings">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/codereview.settings</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvdocsdeprecated_buildsmd">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/deprecated_builds.md</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvdocsgetting_startedmd">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/getting_started.md</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvgyp_libyuvpy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/gyp_libyuv.py</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvbasic_typesh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/basic_types.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvcompareh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvcompare_rowh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare_row.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconverth">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconvert_argbh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_argb.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconvert_fromh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconvert_from_argbh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from_argb.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvcpu_idh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/cpu_id.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvmacros_msah">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/macros_msa.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvmjpeg_decoderh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/mjpeg_decoder.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvplanar_functionsh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/planar_functions.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrotateh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrotate_argbh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_argb.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrotate_rowh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_row.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrowh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/row.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvscaleh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/scale.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvscale_argbh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/scale_argb.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvscale_rowh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/scale_row.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvversionh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/version.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvvideo_commonh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/video_common.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvlibyuvgyp">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/libyuv.gyp</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvlibyuvgypi">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/libyuv.gypi</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvlibyuv_testgyp">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/libyuv_test.gyp</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvlinuxmk">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/linux.mk</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcecomparecc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/compare.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcecompare_commoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/compare_common.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcecompare_gcccc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/compare_gcc.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcecompare_neoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/compare_neon.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcecompare_neon64cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/compare_neon64.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcecompare_wincc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/compare_win.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceconvertcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/convert.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceconvert_argbcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/convert_argb.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceconvert_fromcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/convert_from.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceconvert_from_argbcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/convert_from_argb.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceconvert_jpegcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/convert_jpeg.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceconvert_to_argbcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/convert_to_argb.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceconvert_to_i420cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/convert_to_i420.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcecpu_idcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/cpu_id.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcemjpeg_decodercc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/mjpeg_decoder.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcemjpeg_validatecc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/mjpeg_validate.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourceplanar_functionscc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/planar_functions.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotatecc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_anycc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_any.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_argbcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_argb.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_commoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_common.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_gcccc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_gcc.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_neoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_neon.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_neon64cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_neon64.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_wincc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_win.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_anycc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_any.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_commoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_common.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_gcccc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_gcc.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_msacc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_msa.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_neoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_neon.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_neon64cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_neon64.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_wincc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_win.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescalecc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_anycc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_any.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_argbcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_argb.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_commoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_common.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_gcccc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_gcc.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_neoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_neon.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_neon64cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_neon64.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_wincc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_win.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcevideo_commoncc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/video_common.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testcolor_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/color_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testcompare_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/compare_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testconvert_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/convert_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testcpu_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/cpu_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testmath_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/math_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testplanar_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/planar_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testrotate_argb_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/rotate_argb_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testrotate_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/rotate_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testscale_argb_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/scale_argb_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testscale_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/scale_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testunit_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/unit_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testunit_testh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/unit_test.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testvideo_common_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/video_common_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilcomparecc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/compare.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilcpuidc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/cpuid.c</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilpsnrcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/psnr.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilpsnr_maincc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/psnr_main.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilssimcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/ssim.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilssimh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/ssim.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvclangformat">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.clang-format</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvgitignore">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.gitignore</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvCM_linux_packagescmake">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CM_linux_packages.cmake</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvcleanup_linkspy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/cleanup_links.py</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/infra/</li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/infra/config/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvinfraconfigOWNERS">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/infra/config/OWNERS</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvinfraconfigREADMEmd">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/infra/config/README.md</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvinfraconfigcqcfg">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/infra/config/cq.cfg</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvpylintrc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/pylintrc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_dspr2cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_dspr2.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_msacc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_msa.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_dspr2cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_dspr2.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_dspr2cc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_dspr2.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_msacc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_msa.cc</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvOWNERS">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/OWNERS</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvautorollerroll_depspy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/roll_deps.py</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/unittests/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvautorollerunittestsroll_deps_testpy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvautorollerunitteststestdataDEPS">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvautorollerunitteststestdataDEPSchromiumnew">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvautorollerunitteststestdataDEPSchromiumold">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvget_landminespy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/get_landmines.py</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/msan/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvmsanOWNERS">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/msan/OWNERS</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvmsanblacklisttxt">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/msan/blacklist.txt</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/ubsan/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvubsanOWNERS">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/ubsan/OWNERS</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvubsanblacklisttxt">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/ubsan/blacklist.txt</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvubsanvptr_blacklisttxt">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindlibyuv_testsbat">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.bat</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindlibyuv_testspy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.py</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindlibyuv_testssh">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.sh</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindmemcheckOWNERS">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/OWNERS</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindmemcheckPRESUBMITpy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/PRESUBMIT.py</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindmemchecksuppressionstxt">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions.txt</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindmemchecksuppressions_mactxt">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions_mac.txt</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvtools_libyuvvalgrindmemchecksuppressions_win32txt">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions_win32.txt</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvunit_testcpu_thread_testcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/unit_test/cpu_thread_test.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilyuvconvertcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/yuvconvert.cc</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/chromium/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsetup_linkspy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/setup_links.py</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerotate_mipscc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_mips.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcerow_mipscc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/row_mips.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsourcescale_mipscc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_mips.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvsync_chromiumpy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/sync_chromium.py</a></li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/third_party/</li>
<li>trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/</li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvutilconvertcc">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/convert.cc</a></li>
</ul>

<h3>Property Changed</h3>
<ul>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvPRESUBMITpy">trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/PRESUBMIT.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceThirdPartylibwebrtcChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/ChangeLog (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/ChangeLog      2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/ChangeLog 2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -1,5 +1,226 @@
</span><span class="cx"> 2017-06-21  Youenn Fablet  <youenn@apple.com>
</span><span class="cx"> 
</span><ins>+        Update libyuv to 8cab2e31d76246263206318f3568d452e7f3ff3e
+        https://bugs.webkit.org/show_bug.cgi?id=173675
+
+        Reviewed by Sam Weinig.
+
+        * Source/third_party/libyuv/.clang-format: Added.
+        * Source/third_party/libyuv/.gitignore: Added.
+        * Source/third_party/libyuv/Android.mk:
+        * Source/third_party/libyuv/BUILD.gn:
+        * Source/third_party/libyuv/CM_linux_packages.cmake: Added.
+        * Source/third_party/libyuv/CMakeLists.txt:
+        * Source/third_party/libyuv/DEPS:
+        * Source/third_party/libyuv/PRESUBMIT.py:
+        (_RunPythonTests):
+        (_RunPythonTests.join):
+        (_CommonChecks):
+        (CheckChangeOnUpload):
+        (CheckChangeOnCommit):
+        * Source/third_party/libyuv/README.chromium:
+        * Source/third_party/libyuv/build_overrides/build.gni:
+        * Source/third_party/libyuv/chromium/.gclient: Removed.
+        * Source/third_party/libyuv/chromium/README: Removed.
+        * Source/third_party/libyuv/cleanup_links.py: Added.
+        (WebRTCLinkSetup):
+        (WebRTCLinkSetup.__init__):
+        (WebRTCLinkSetup.CleanupLinks):
+        (_initialize_database):
+        (main):
+        * Source/third_party/libyuv/codereview.settings:
+        * Source/third_party/libyuv/docs/deprecated_builds.md:
+        * Source/third_party/libyuv/docs/getting_started.md:
+        * Source/third_party/libyuv/gyp_libyuv.py:
+        * Source/third_party/libyuv/include/libyuv/basic_types.h:
+        * Source/third_party/libyuv/include/libyuv/compare.h:
+        * Source/third_party/libyuv/include/libyuv/compare_row.h:
+        * Source/third_party/libyuv/include/libyuv/convert.h:
+        * Source/third_party/libyuv/include/libyuv/convert_argb.h:
+        * Source/third_party/libyuv/include/libyuv/convert_from.h:
+        * Source/third_party/libyuv/include/libyuv/convert_from_argb.h:
+        * Source/third_party/libyuv/include/libyuv/cpu_id.h:
+        * Source/third_party/libyuv/include/libyuv/macros_msa.h:
+        * Source/third_party/libyuv/include/libyuv/mjpeg_decoder.h:
+        * Source/third_party/libyuv/include/libyuv/planar_functions.h:
+        * Source/third_party/libyuv/include/libyuv/rotate.h:
+        * Source/third_party/libyuv/include/libyuv/rotate_argb.h:
+        * Source/third_party/libyuv/include/libyuv/rotate_row.h:
+        * Source/third_party/libyuv/include/libyuv/row.h:
+        * Source/third_party/libyuv/include/libyuv/scale.h:
+        * Source/third_party/libyuv/include/libyuv/scale_argb.h:
+        * Source/third_party/libyuv/include/libyuv/scale_row.h:
+        * Source/third_party/libyuv/include/libyuv/version.h:
+        * Source/third_party/libyuv/include/libyuv/video_common.h:
+        * Source/third_party/libyuv/infra/config/OWNERS: Added.
+        * Source/third_party/libyuv/infra/config/README.md: Added.
+        * Source/third_party/libyuv/infra/config/cq.cfg: Added.
+        * Source/third_party/libyuv/libyuv.gyp:
+        * Source/third_party/libyuv/libyuv.gypi:
+        * Source/third_party/libyuv/libyuv_test.gyp:
+        * Source/third_party/libyuv/linux.mk:
+        * Source/third_party/libyuv/pylintrc: Added.
+        * Source/third_party/libyuv/setup_links.py: Removed.
+        * Source/third_party/libyuv/source/compare.cc:
+        * Source/third_party/libyuv/source/compare_common.cc:
+        * Source/third_party/libyuv/source/compare_gcc.cc:
+        * Source/third_party/libyuv/source/compare_neon.cc:
+        * Source/third_party/libyuv/source/compare_neon64.cc:
+        * Source/third_party/libyuv/source/compare_win.cc:
+        * Source/third_party/libyuv/source/convert.cc:
+        * Source/third_party/libyuv/source/convert_argb.cc:
+        * Source/third_party/libyuv/source/convert_from.cc:
+        * Source/third_party/libyuv/source/convert_from_argb.cc:
+        * Source/third_party/libyuv/source/convert_jpeg.cc:
+        * Source/third_party/libyuv/source/convert_to_argb.cc:
+        * Source/third_party/libyuv/source/convert_to_i420.cc:
+        * Source/third_party/libyuv/source/cpu_id.cc:
+        * Source/third_party/libyuv/source/mjpeg_decoder.cc:
+        * Source/third_party/libyuv/source/mjpeg_validate.cc:
+        * Source/third_party/libyuv/source/planar_functions.cc:
+        * Source/third_party/libyuv/source/rotate.cc:
+        * Source/third_party/libyuv/source/rotate_any.cc:
+        * Source/third_party/libyuv/source/rotate_argb.cc:
+        * Source/third_party/libyuv/source/rotate_common.cc:
+        * Source/third_party/libyuv/source/rotate_dspr2.cc: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/rotate_mips.cc.
+        * Source/third_party/libyuv/source/rotate_gcc.cc:
+        * Source/third_party/libyuv/source/rotate_msa.cc: Added.
+        * Source/third_party/libyuv/source/rotate_neon.cc:
+        * Source/third_party/libyuv/source/rotate_neon64.cc:
+        * Source/third_party/libyuv/source/rotate_win.cc:
+        * Source/third_party/libyuv/source/row_any.cc:
+        * Source/third_party/libyuv/source/row_common.cc:
+        * Source/third_party/libyuv/source/row_dspr2.cc: Added.
+        * Source/third_party/libyuv/source/row_gcc.cc:
+        * Source/third_party/libyuv/source/row_mips.cc: Removed.
+        * Source/third_party/libyuv/source/row_msa.cc:
+        * Source/third_party/libyuv/source/row_neon.cc:
+        * Source/third_party/libyuv/source/row_neon64.cc:
+        * Source/third_party/libyuv/source/row_win.cc:
+        * Source/third_party/libyuv/source/scale.cc:
+        * Source/third_party/libyuv/source/scale_any.cc:
+        * Source/third_party/libyuv/source/scale_argb.cc:
+        * Source/third_party/libyuv/source/scale_common.cc:
+        * Source/third_party/libyuv/source/scale_dspr2.cc: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/source/scale_mips.cc.
+        * Source/third_party/libyuv/source/scale_gcc.cc:
+        * Source/third_party/libyuv/source/scale_msa.cc: Added.
+        * Source/third_party/libyuv/source/scale_neon.cc:
+        * Source/third_party/libyuv/source/scale_neon64.cc:
+        * Source/third_party/libyuv/source/scale_win.cc:
+        * Source/third_party/libyuv/source/video_common.cc:
+        * Source/third_party/libyuv/sync_chromium.py: Removed.
+        * Source/third_party/libyuv/third_party/gflags/BUILD.gn: Removed.
+        * Source/third_party/libyuv/third_party/gflags/LICENSE: Removed.
+        * Source/third_party/libyuv/third_party/gflags/README.libyuv: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags_completions.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags_declare.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/posix/include/gflags/gflags_gflags.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/posix/include/private/config.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags_completions.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags_declare.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/win/include/gflags/gflags_gflags.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gen/win/include/private/config.h: Removed.
+        * Source/third_party/libyuv/third_party/gflags/gflags.gyp: Removed.
+        * Source/third_party/libyuv/tools/gritsettings/README: Removed.
+        * Source/third_party/libyuv/tools/gritsettings/resource_ids: Removed.
+        * Source/third_party/libyuv/tools/valgrind-libyuv/tsan/OWNERS: Removed.
+        * Source/third_party/libyuv/tools/valgrind-libyuv/tsan/PRESUBMIT.py: Removed.
+        * Source/third_party/libyuv/tools/valgrind-libyuv/tsan/suppressions.txt: Removed.
+        * Source/third_party/libyuv/tools/valgrind-libyuv/tsan/suppressions_mac.txt: Removed.
+        * Source/third_party/libyuv/tools/valgrind-libyuv/tsan/suppressions_win32.txt: Removed.
+        * Source/third_party/libyuv/tools_libyuv/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/OWNERS.
+        * Source/third_party/libyuv/tools_libyuv/autoroller/roll_deps.py: Added.
+        (RollError):
+        (ParseDepsDict):
+        (ParseLocalDepsFile):
+        (ParseRemoteCrDepsFile):
+        (ParseCommitPosition):
+        (_RunCommand):
+        (_GetBranches):
+        (_ReadGitilesContent):
+        (ReadRemoteCrFile):
+        (ReadRemoteCrCommit):
+        (ReadUrlContent):
+        (GetMatchingDepsEntries):
+        (BuildDepsentryDict):
+        (BuildDepsentryDict.AddDepsEntries):
+        (CalculateChangedDeps):
+        (CalculateChangedClang):
+        (CalculateChangedClang.GetClangRev):
+        (GenerateCommitMessage):
+        (UpdateDepsFile):
+        (_IsTreeClean):
+        (_EnsureUpdatedMasterBranch):
+        (_CreateRollBranch):
+        (_RemovePreviousRollBranch):
+        (_LocalCommit):
+        (_UploadCL):
+        (_SendToCQ):
+        (main):
+        * Source/third_party/libyuv/tools_libyuv/autoroller/unittests/roll_deps_test.py: Added.
+        (TestError):
+        (FakeCmd):
+        (FakeCmd.__init__):
+        (FakeCmd.add_expectation):
+        (FakeCmd.__call__):
+        (TestRollChromiumRevision):
+        (TestRollChromiumRevision.setUp):
+        (TestRollChromiumRevision.tearDown):
+        (TestRollChromiumRevision.testUpdateDepsFile):
+        (TestRollChromiumRevision.testParseDepsDict):
+        (TestRollChromiumRevision.testParseDepsDict.assertVar):
+        (TestRollChromiumRevision.testGetMatchingDepsEntriesReturnsPathInSimpleCase):
+        (TestRollChromiumRevision.testGetMatchingDepsEntriesHandlesSimilarStartingPaths):
+        (TestRollChromiumRevision.testGetMatchingDepsEntriesHandlesTwoPathsWithIdenticalFirstParts):
+        (TestRollChromiumRevision.testCalculateChangedDeps):
+        (_SetupGitLsRemoteCall):
+        * Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS: Added.
+        * Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.new: Added.
+        * Source/third_party/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old: Added.
+        * Source/third_party/libyuv/tools_libyuv/get_landmines.py: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/get_landmines.py.
+        * Source/third_party/libyuv/tools_libyuv/msan/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/msan/OWNERS.
+        * Source/third_party/libyuv/tools_libyuv/msan/blacklist.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/msan/blacklist.txt.
+        * Source/third_party/libyuv/tools_libyuv/ubsan/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/ubsan/OWNERS.
+        * Source/third_party/libyuv/tools_libyuv/ubsan/blacklist.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/ubsan/blacklist.txt.
+        * Source/third_party/libyuv/tools_libyuv/ubsan/vptr_blacklist.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/ubsan/vptr_blacklist.txt.
+        * Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.bat: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/libyuv_tests.bat.
+        * Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.py: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/libyuv_tests.py.
+        (LibyuvTest._DefaultCommand):
+        * Source/third_party/libyuv/tools_libyuv/valgrind/libyuv_tests.sh: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/libyuv_tests.sh.
+        * Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/OWNERS: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/OWNERS.
+        * Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/PRESUBMIT.py: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/PRESUBMIT.py.
+        (CheckChange):
+        * Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/suppressions.txt.
+        * Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions_mac.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/suppressions_mac.txt.
+        * Source/third_party/libyuv/tools_libyuv/valgrind/memcheck/suppressions_win32.txt: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/tools/valgrind-libyuv/memcheck/suppressions_win32.txt.
+        * Source/third_party/libyuv/unit_test/color_test.cc:
+        * Source/third_party/libyuv/unit_test/compare_test.cc:
+        * Source/third_party/libyuv/unit_test/convert_test.cc:
+        * Source/third_party/libyuv/unit_test/cpu_test.cc:
+        * Source/third_party/libyuv/unit_test/cpu_thread_test.cc: Added.
+        * Source/third_party/libyuv/unit_test/math_test.cc:
+        * Source/third_party/libyuv/unit_test/planar_test.cc:
+        * Source/third_party/libyuv/unit_test/rotate_argb_test.cc:
+        * Source/third_party/libyuv/unit_test/rotate_test.cc:
+        * Source/third_party/libyuv/unit_test/scale_argb_test.cc:
+        * Source/third_party/libyuv/unit_test/scale_test.cc:
+        * Source/third_party/libyuv/unit_test/unit_test.cc:
+        * Source/third_party/libyuv/unit_test/unit_test.h:
+        (SizeValid):
+        * Source/third_party/libyuv/unit_test/video_common_test.cc:
+        * Source/third_party/libyuv/util/compare.cc:
+        * Source/third_party/libyuv/util/cpuid.c:
+        (main):
+        * Source/third_party/libyuv/util/psnr.cc:
+        * Source/third_party/libyuv/util/psnr_main.cc:
+        * Source/third_party/libyuv/util/ssim.cc:
+        * Source/third_party/libyuv/util/ssim.h:
+        * Source/third_party/libyuv/util/yuvconvert.cc: Renamed from Source/ThirdParty/libwebrtc/Source/third_party/libyuv/util/convert.cc.
+
+2017-06-21  Youenn Fablet  <youenn@apple.com>
+
</ins><span class="cx">         Fix build after r218645
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=173668
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvclangformat"></a>
<div class="addfile"><h4>Added: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.clang-format (0 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.clang-format                                (rev 0)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.clang-format   2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+# Defines the Chromium style for automatic reformatting.
+# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
+BasedOnStyle: Chromium
+---
+Language: Java
+BasedOnStyle: Google
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvgitignore"></a>
<div class="addfile"><h4>Added: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.gitignore (0 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.gitignore                           (rev 0)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/.gitignore      2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+*.pyc
+.landmines
+pin-log.txt
+/base
+/build
+/buildtools
+/google_apis
+/links
+/links.db
+/ios
+/mojo
+/native_client
+/net
+/out
+/sde-avx-sse-transition-out.txt
+/testing
+/third_party
+/tools
+
+# Files generated by CMake build
+cmake_install.cmake
+CMakeCache.txt
+CMakeFiles/
+yuvconvert
+libgtest.a
+libyuv.a
+libyuv_unittest
+
+# Files generated by winarm.mk build
+libyuv_arm.lib
+source/*.o
+
+# Files generated by perf
+perf.data
+perf.data.old
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvAndroidmk"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/Android.mk (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/Android.mk   2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/Android.mk      2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# This is the Android makefile for libyuv for both platform and NDK.
</del><ins>+# This is the Android makefile for libyuv for NDK.
</ins><span class="cx"> LOCAL_PATH:= $(call my-dir)
</span><span class="cx"> 
</span><span class="cx"> include $(CLEAR_VARS)
</span><span class="lines">@@ -8,8 +8,9 @@
</span><span class="cx"> LOCAL_SRC_FILES := \
</span><span class="cx">     source/compare.cc           \
</span><span class="cx">     source/compare_common.cc    \
</span><ins>+    source/compare_gcc.cc       \
+    source/compare_neon.cc      \
</ins><span class="cx">     source/compare_neon64.cc    \
</span><del>-    source/compare_gcc.cc       \
</del><span class="cx">     source/convert.cc           \
</span><span class="cx">     source/convert_argb.cc      \
</span><span class="cx">     source/convert_from.cc      \
</span><span class="lines">@@ -22,45 +23,43 @@
</span><span class="cx">     source/rotate_any.cc        \
</span><span class="cx">     source/rotate_argb.cc       \
</span><span class="cx">     source/rotate_common.cc     \
</span><del>-    source/rotate_mips.cc       \
</del><ins>+    source/rotate_dspr2.cc      \
+    source/rotate_gcc.cc        \
+    source/rotate_msa.cc        \
+    source/rotate_neon.cc       \
</ins><span class="cx">     source/rotate_neon64.cc     \
</span><del>-    source/rotate_gcc.cc        \
</del><span class="cx">     source/row_any.cc           \
</span><span class="cx">     source/row_common.cc        \
</span><del>-    source/row_mips.cc          \
</del><ins>+    source/row_dspr2.cc         \
+    source/row_gcc.cc           \
+    source/row_msa.cc           \
+    source/row_neon.cc          \
</ins><span class="cx">     source/row_neon64.cc        \
</span><del>-    source/row_gcc.cc          \
</del><span class="cx">     source/scale.cc             \
</span><span class="cx">     source/scale_any.cc         \
</span><span class="cx">     source/scale_argb.cc        \
</span><span class="cx">     source/scale_common.cc      \
</span><del>-    source/scale_mips.cc        \
</del><ins>+    source/scale_dspr2.cc       \
+    source/scale_gcc.cc         \
+    source/scale_msa.cc         \
+    source/scale_neon.cc        \
</ins><span class="cx">     source/scale_neon64.cc      \
</span><del>-    source/scale_gcc.cc         \
</del><span class="cx">     source/video_common.cc
</span><span class="cx"> 
</span><del>-# TODO(fbarchard): Enable mjpeg encoder.
-#   source/mjpeg_decoder.cc
-#   source/convert_jpeg.cc
-#   source/mjpeg_validate.cc
-
-ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
-    LOCAL_CFLAGS += -DLIBYUV_NEON
-    LOCAL_SRC_FILES += \
-        source/compare_neon.cc.neon    \
-        source/rotate_neon.cc.neon     \
-        source/row_neon.cc.neon        \
-        source/scale_neon.cc.neon
</del><ins>+common_CFLAGS := -Wall -fexceptions
+ifneq ($(LIBYUV_DISABLE_JPEG), "yes")
+LOCAL_SRC_FILES += \
+    source/convert_jpeg.cc      \
+    source/mjpeg_decoder.cc     \
+    source/mjpeg_validate.cc
+common_CFLAGS += -DHAVE_JPEG
+LOCAL_SHARED_LIBRARIES := libjpeg
</ins><span class="cx"> endif
</span><span class="cx"> 
</span><del>-ifeq ($(TARGET_ARCH_ABI),mips)
-    LOCAL_CFLAGS += -DLIBYUV_MSA
-    LOCAL_SRC_FILES += \
-        source/row_msa.cc
-endif
-
</del><ins>+LOCAL_CFLAGS += $(common_CFLAGS)
</ins><span class="cx"> LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
</span><span class="cx"> LOCAL_C_INCLUDES += $(LOCAL_PATH)/include
</span><ins>+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
</ins><span class="cx"> 
</span><span class="cx"> LOCAL_MODULE := libyuv_static
</span><span class="cx"> LOCAL_MODULE_TAGS := optional
</span><span class="lines">@@ -67,3 +66,37 @@
</span><span class="cx"> 
</span><span class="cx"> include $(BUILD_STATIC_LIBRARY)
</span><span class="cx"> 
</span><ins>+include $(CLEAR_VARS)
+
+LOCAL_WHOLE_STATIC_LIBRARIES := libyuv_static
+LOCAL_MODULE := libyuv
+ifneq ($(LIBYUV_DISABLE_JPEG), "yes")
+LOCAL_SHARED_LIBRARIES := libjpeg
+endif
+
+include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_STATIC_LIBRARIES := libyuv_static
+LOCAL_SHARED_LIBRARIES := libjpeg
+LOCAL_MODULE_TAGS := tests
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/include
+LOCAL_SRC_FILES := \
+    unit_test/unit_test.cc        \
+    unit_test/basictypes_test.cc  \
+    unit_test/color_test.cc       \
+    unit_test/compare_test.cc     \
+    unit_test/convert_test.cc     \
+    unit_test/cpu_test.cc         \
+    unit_test/cpu_thread_test.cc  \
+    unit_test/math_test.cc        \
+    unit_test/planar_test.cc      \
+    unit_test/rotate_argb_test.cc \
+    unit_test/rotate_test.cc      \
+    unit_test/scale_argb_test.cc  \
+    unit_test/scale_test.cc       \
+    unit_test/video_common_test.cc
+
+LOCAL_MODULE := libyuv_unittest
+include $(BUILD_NATIVE_TEST)
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvBUILDgn"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/BUILD.gn (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/BUILD.gn     2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/BUILD.gn        2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -9,9 +9,14 @@
</span><span class="cx"> import("libyuv.gni")
</span><span class="cx"> import("//testing/test.gni")
</span><span class="cx"> 
</span><ins>+declare_args() {
+  # Set to false to disable building with gflags.
+  libyuv_use_gflags = true
+}
+
</ins><span class="cx"> config("libyuv_config") {
</span><span class="cx">   include_dirs = [ "include" ]
</span><del>-  if (is_android && current_cpu=="arm64") {
</del><ins>+  if (is_android && current_cpu == "arm64") {
</ins><span class="cx">     ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64" ]
</span><span class="cx">   }
</span><span class="cx">   if (is_android && current_cpu != "arm64") {
</span><span class="lines">@@ -28,15 +33,41 @@
</span><span class="cx">   if (libyuv_include_tests) {
</span><span class="cx">     deps += [
</span><span class="cx">       ":compare",
</span><del>-      ":convert",
</del><span class="cx">       ":cpuid",
</span><span class="cx">       ":libyuv_unittest",
</span><span class="cx">       ":psnr",
</span><ins>+      ":yuvconvert",
</ins><span class="cx">     ]
</span><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static_library("libyuv") {
</del><ins>+group("libyuv") {
+  public_configs = [ ":libyuv_config" ]
+
+  if (is_win && target_cpu == "x64") {
+    # Compile with clang in order to get inline assembly
+    public_deps = [
+      ":libyuv_internal(//build/toolchain/win:clang_x64)",
+    ]
+  } else {
+    public_deps = [
+      ":libyuv_internal",
+    ]
+  }
+
+  if (!is_ios) {
+    # Make sure that clients of libyuv link with libjpeg. This can't go in
+    # libyuv_internal because in Windows x64 builds that will generate a clang
+    # build of libjpeg, and we don't want two copies.
+    deps = [
+      "//third_party:jpeg",
+    ]
+  }
+}
+
+static_library("libyuv_internal") {
+  visibility = [ ":*" ]
+
</ins><span class="cx">   sources = [
</span><span class="cx">     # Headers
</span><span class="cx">     "include/libyuv.h",
</span><span class="lines">@@ -79,12 +110,12 @@
</span><span class="cx">     "source/rotate_any.cc",
</span><span class="cx">     "source/rotate_argb.cc",
</span><span class="cx">     "source/rotate_common.cc",
</span><del>-    "source/rotate_mips.cc",
</del><ins>+    "source/rotate_dspr2.cc",
</ins><span class="cx">     "source/rotate_gcc.cc",
</span><span class="cx">     "source/rotate_win.cc",
</span><span class="cx">     "source/row_any.cc",
</span><span class="cx">     "source/row_common.cc",
</span><del>-    "source/row_mips.cc",
</del><ins>+    "source/row_dspr2.cc",
</ins><span class="cx">     "source/row_gcc.cc",
</span><span class="cx">     "source/row_win.cc",
</span><span class="cx">     "source/scale.cc",
</span><span class="lines">@@ -91,20 +122,22 @@
</span><span class="cx">     "source/scale_any.cc",
</span><span class="cx">     "source/scale_argb.cc",
</span><span class="cx">     "source/scale_common.cc",
</span><del>-    "source/scale_mips.cc",
</del><ins>+    "source/scale_dspr2.cc",
</ins><span class="cx">     "source/scale_gcc.cc",
</span><span class="cx">     "source/scale_win.cc",
</span><span class="cx">     "source/video_common.cc",
</span><span class="cx">   ]
</span><span class="cx"> 
</span><del>-  public_configs = [ ":libyuv_config" ]
-
</del><ins>+  configs += [ ":libyuv_config" ]
</ins><span class="cx">   defines = []
</span><span class="cx">   deps = []
</span><span class="cx"> 
</span><span class="cx">   if (!is_ios) {
</span><span class="cx">     defines += [ "HAVE_JPEG" ]
</span><del>-    deps += [ "//third_party:jpeg" ]
</del><ins>+
+    # Needed to pull in libjpeg headers. Can't add //third_party:jpeg to deps
+    # because in Windows x64 build it will get compiled with clang.
+    deps += [ "//third_party:jpeg_includes" ]
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   if (libyuv_use_neon) {
</span><span class="lines">@@ -119,13 +152,14 @@
</span><span class="cx">   # crbug.com/538243).
</span><span class="cx">   if (!is_debug || is_nacl) {
</span><span class="cx">     configs -= [ "//build/config/compiler:default_optimization" ]
</span><ins>+
</ins><span class="cx">     # Enable optimize for speed (-O2) over size (-Os).
</span><span class="cx">     configs += [ "//build/config/compiler:optimize_max" ]
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   # To enable AVX2 or other cpu optimization, pass flag here
</span><del>-  #  cflags = [ "-mavx2" ]
-
</del><ins>+  # cflags = [ "-mavx2" ]
+  # cflags = [ "-mpopcnt" ]
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> if (libyuv_use_neon) {
</span><span class="lines">@@ -148,6 +182,7 @@
</span><span class="cx">     # crbug.com/538243).
</span><span class="cx">     if (!is_debug) {
</span><span class="cx">       configs -= [ "//build/config/compiler:default_optimization" ]
</span><ins>+
</ins><span class="cx">       # Enable optimize for speed (-O2) over size (-Os).
</span><span class="cx">       configs += [ "//build/config/compiler:optimize_max" ]
</span><span class="cx">     }
</span><span class="lines">@@ -163,7 +198,9 @@
</span><span class="cx">   static_library("libyuv_msa") {
</span><span class="cx">     sources = [
</span><span class="cx">       # MSA Source Files
</span><ins>+      "source/rotate_msa.cc",
</ins><span class="cx">       "source/row_msa.cc",
</span><ins>+      "source/scale_msa.cc",
</ins><span class="cx">     ]
</span><span class="cx"> 
</span><span class="cx">     public_configs = [ ":libyuv_config" ]
</span><span class="lines">@@ -176,13 +213,13 @@
</span><span class="cx">       cflags = [
</span><span class="cx">         # TODO(fbarchard): Fix sign and unused variable warnings.
</span><span class="cx">         "-Wno-sign-compare",
</span><del>-        "-Wno-unused-variable"
</del><ins>+        "-Wno-unused-variable",
</ins><span class="cx">       ]
</span><span class="cx">     }
</span><span class="cx">     if (is_win) {
</span><span class="cx">       cflags = [
</span><del>-        "/wd4245", # signed/unsigned mismatch
-        "/wd4189", # local variable is initialized but not referenced
</del><ins>+        "/wd4245",  # signed/unsigned mismatch
+        "/wd4189",  # local variable is initialized but not referenced
</ins><span class="cx">       ]
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="lines">@@ -194,14 +231,14 @@
</span><span class="cx">     testonly = true
</span><span class="cx"> 
</span><span class="cx">     sources = [
</span><ins>+      # sources
</ins><span class="cx">       # headers
</span><del>-      "unit_test/unit_test.h",
-      # sources
</del><span class="cx">       "unit_test/basictypes_test.cc",
</span><ins>+      "unit_test/color_test.cc",
</ins><span class="cx">       "unit_test/compare_test.cc",
</span><del>-      "unit_test/color_test.cc",
</del><span class="cx">       "unit_test/convert_test.cc",
</span><span class="cx">       "unit_test/cpu_test.cc",
</span><ins>+      "unit_test/cpu_thread_test.cc",
</ins><span class="cx">       "unit_test/math_test.cc",
</span><span class="cx">       "unit_test/planar_test.cc",
</span><span class="cx">       "unit_test/rotate_argb_test.cc",
</span><span class="lines">@@ -209,6 +246,7 @@
</span><span class="cx">       "unit_test/scale_argb_test.cc",
</span><span class="cx">       "unit_test/scale_test.cc",
</span><span class="cx">       "unit_test/unit_test.cc",
</span><ins>+      "unit_test/unit_test.h",
</ins><span class="cx">       "unit_test/video_common_test.cc",
</span><span class="cx">     ]
</span><span class="cx"> 
</span><span class="lines">@@ -215,16 +253,21 @@
</span><span class="cx">     deps = [
</span><span class="cx">       ":libyuv",
</span><span class="cx">       "//testing/gtest",
</span><del>-      "//third_party/gflags",
</del><span class="cx">     ]
</span><span class="cx"> 
</span><ins>+    defines = []
+    if (libyuv_use_gflags) {
+      defines += [ "LIBYUV_USE_GFLAGS" ]
+      deps += [ "//third_party/gflags" ]
+    }
+
</ins><span class="cx">     configs += [ ":libyuv_unittest_warnings_config" ]
</span><span class="cx"> 
</span><del>-    public_deps = [ "//testing/gtest" ]
</del><ins>+    public_deps = [
+      "//testing/gtest",
+    ]
</ins><span class="cx">     public_configs = [ ":libyuv_unittest_config" ]
</span><span class="cx"> 
</span><del>-    defines = []
-
</del><span class="cx">     if (is_linux) {
</span><span class="cx">       cflags = [ "-fexceptions" ]
</span><span class="cx">     }
</span><span class="lines">@@ -242,8 +285,8 @@
</span><span class="cx"> 
</span><span class="cx">     # TODO(YangZhang): These lines can be removed when high accuracy
</span><span class="cx">     # YUV to RGB to Neon is ported.
</span><del>-    if ((target_cpu=="armv7" || target_cpu=="armv7s" ||
-        (target_cpu=="arm" && arm_version >= 7) || target_cpu=="arm64") &&
</del><ins>+    if ((target_cpu == "armv7" || target_cpu == "armv7s" ||
+         (target_cpu == "arm" && arm_version >= 7) || target_cpu == "arm64") &&
</ins><span class="cx">         (arm_use_neon || arm_optionally_use_neon)) {
</span><span class="cx">       defines += [ "LIBYUV_NEON" ]
</span><span class="cx">     }
</span><span class="lines">@@ -252,7 +295,7 @@
</span><span class="cx">       # Enable the following 3 macros to turn off assembly for specified CPU.
</span><span class="cx">       # "LIBYUV_DISABLE_X86",
</span><span class="cx">       # "LIBYUV_DISABLE_NEON",
</span><del>-      # "LIBYUV_DISABLE_MIPS",
</del><ins>+      # "LIBYUV_DISABLE_DSPR2",
</ins><span class="cx">       # Enable the following macro to build libyuv as a shared library (dll).
</span><span class="cx">       # "LIBYUV_USING_SHARED_LIBRARY"
</span><span class="cx">     ]
</span><span class="lines">@@ -261,20 +304,24 @@
</span><span class="cx">   executable("compare") {
</span><span class="cx">     sources = [
</span><span class="cx">       # sources
</span><del>-      "util/compare.cc"
</del><ins>+      "util/compare.cc",
</ins><span class="cx">     ]
</span><del>-    deps = [ ":libyuv" ]
</del><ins>+    deps = [
+      ":libyuv",
+    ]
</ins><span class="cx">     if (is_linux) {
</span><span class="cx">       cflags = [ "-fexceptions" ]
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  executable("convert") {
</del><ins>+  executable("yuvconvert") {
</ins><span class="cx">     sources = [
</span><span class="cx">       # sources
</span><del>-      "util/convert.cc"
</del><ins>+      "util/yuvconvert.cc",
</ins><span class="cx">     ]
</span><del>-    deps = [ ":libyuv" ]
</del><ins>+    deps = [
+      ":libyuv",
+    ]
</ins><span class="cx">     if (is_linux) {
</span><span class="cx">       cflags = [ "-fexceptions" ]
</span><span class="cx">     }
</span><span class="lines">@@ -283,11 +330,13 @@
</span><span class="cx">   executable("psnr") {
</span><span class="cx">     sources = [
</span><span class="cx">       # sources
</span><ins>+      "util/psnr.cc",
</ins><span class="cx">       "util/psnr_main.cc",
</span><del>-      "util/psnr.cc",
-      "util/ssim.cc"
</del><ins>+      "util/ssim.cc",
</ins><span class="cx">     ]
</span><del>-    deps = [ ":libyuv" ]
</del><ins>+    deps = [
+      ":libyuv",
+    ]
</ins><span class="cx"> 
</span><span class="cx">     if (!is_ios && !libyuv_disable_jpeg) {
</span><span class="cx">       defines = [ "HAVE_JPEG" ]
</span><span class="lines">@@ -297,8 +346,10 @@
</span><span class="cx">   executable("cpuid") {
</span><span class="cx">     sources = [
</span><span class="cx">       # sources
</span><del>-      "util/cpuid.c"
</del><ins>+      "util/cpuid.c",
</ins><span class="cx">     ]
</span><del>-    deps = [ ":libyuv" ]
</del><ins>+    deps = [
+      ":libyuv",
+    ]
</ins><span class="cx">   }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvCM_linux_packagescmake"></a>
<div class="addfile"><h4>Added: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CM_linux_packages.cmake (0 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CM_linux_packages.cmake                              (rev 0)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CM_linux_packages.cmake 2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+# determine the version number from the #define in libyuv/version.h
+EXECUTE_PROCESS (
+       COMMAND grep --perl-regex --only-matching "(?<=LIBYUV_VERSION )[0-9]+" include/libyuv/version.h
+       WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+       OUTPUT_VARIABLE YUV_VERSION_NUMBER
+       OUTPUT_STRIP_TRAILING_WHITESPACE )
+SET ( YUV_VER_MAJOR 0 )
+SET ( YUV_VER_MINOR 0 )
+SET ( YUV_VER_PATCH ${YUV_VERSION_NUMBER} )
+SET ( YUV_VERSION ${YUV_VER_MAJOR}.${YUV_VER_MINOR}.${YUV_VER_PATCH} )
+MESSAGE ( "Building ver.: ${YUV_VERSION}" )
+
+# is this a 32-bit or 64-bit build?
+IF ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
+       SET ( YUV_BIT_SIZE 64 )
+ELSEIF ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
+       SET ( YUV_BIT_SIZE 32 )
+ELSE ()
+       MESSAGE ( FATAL_ERROR "CMAKE_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P}" )
+ENDIF ()
+
+# detect if this is a ARM build
+STRING (FIND "${CMAKE_CXX_COMPILER}" "arm-linux-gnueabihf-g++" pos)
+IF ( ${pos} EQUAL -1 )
+       SET ( YUV_CROSS_COMPILE_FOR_ARM7 FALSE )
+ELSE ()
+       MESSAGE ( "Cross compiling for ARM7" )
+       SET ( YUV_CROSS_COMPILE_FOR_ARM7 TRUE )
+ENDIF ()
+STRING (FIND "${CMAKE_SYSTEM_PROCESSOR}" "arm" pos)
+IF ( ${pos} EQUAL -1 )
+       SET ( YUV_COMPILE_FOR_ARM7 FALSE )
+ELSE ()
+       MESSAGE ( "Compiling for ARM" )
+       SET ( YUV_COMPILE_FOR_ARM7 TRUE )
+ENDIF ()
+
+# setup the sytem name, such as "x86-32", "amd-64", and "arm-32
+IF ( ${YUV_CROSS_COMPILE_FOR_ARM7} OR ${YUV_COMPILE_FOR_ARM7} )
+       SET ( YUV_SYSTEM_NAME "armhf-${YUV_BIT_SIZE}" )
+ELSE ()
+       IF ( YUV_BIT_SIZE EQUAL 32 )
+               SET ( YUV_SYSTEM_NAME "x86-${YUV_BIT_SIZE}" )
+       ELSE ()
+               SET ( YUV_SYSTEM_NAME "amd-${YUV_BIT_SIZE}" )
+       ENDIF ()
+ENDIF ()
+MESSAGE ( "Packaging for: ${YUV_SYSTEM_NAME}" )
+
+# define all the variables needed by CPack to create .deb and .rpm packages
+SET ( CPACK_PACKAGE_VENDOR                                     "Frank Barchard" )
+SET ( CPACK_PACKAGE_CONTACT                                    "fbarchard@chromium.org" )
+SET ( CPACK_PACKAGE_VERSION                                    ${YUV_VERSION} )
+SET ( CPACK_PACKAGE_VERSION_MAJOR                      ${YUV_VER_MAJOR} )
+SET ( CPACK_PACKAGE_VERSION_MINOR                      ${YUV_VER_MINOR} )
+SET ( CPACK_PACKAGE_VERSION_PATCH                      ${YUV_VER_PATCH} )
+SET ( CPACK_RESOURCE_FILE_LICENSE                      ${PROJECT_SOURCE_DIR}/LICENSE )
+SET ( CPACK_SYSTEM_NAME                                                "linux-${YUV_SYSTEM_NAME}" )
+SET ( CPACK_PACKAGE_NAME                                       "libyuv" )
+SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY                "YUV library" )
+SET ( CPACK_PACKAGE_DESCRIPTION                                "YUV library and YUV conversion tool" )
+SET ( CPACK_DEBIAN_PACKAGE_SECTION                     "other" )
+SET ( CPACK_DEBIAN_PACKAGE_PRIORITY                    "optional" )
+SET ( CPACK_DEBIAN_PACKAGE_MAINTAINER          "Frank Barchard <fbarchard@chromium.org>" )
+SET ( CPACK_GENERATOR                                          "DEB;RPM" )
+
+# create the .deb and .rpm files (you'll need build-essential and rpm tools)
+INCLUDE( CPack )
+
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CMakeLists.txt (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CMakeLists.txt       2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/CMakeLists.txt  2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -1,112 +1,45 @@
</span><del>-cmake_minimum_required(VERSION 2.8)
-
</del><span class="cx"> # CMakeLists for libyuv
</span><span class="cx"> # Originally created for "roxlu build system" to compile libyuv on windows
</span><span class="cx"> # Run with -DTEST=ON to build unit tests
</span><del>-option(TEST "Built unit tests" OFF)
</del><span class="cx"> 
</span><del>-set(ly_base_dir ${CMAKE_CURRENT_LIST_DIR})
-set(ly_src_dir ${ly_base_dir}/source/)
-set(ly_inc_dir ${ly_base_dir}/include)
-set(ly_lib_name "yuv")
</del><ins>+PROJECT ( YUV C CXX )   # "C" is required even for C++ projects
+CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
+OPTION( TEST "Built unit tests" OFF )
</ins><span class="cx"> 
</span><del>-set(ly_source_files
-  ${ly_src_dir}/compare.cc
-  ${ly_src_dir}/compare_common.cc
-  ${ly_src_dir}/compare_neon.cc
-  ${ly_src_dir}/compare_neon64.cc
-  ${ly_src_dir}/compare_gcc.cc
-  ${ly_src_dir}/compare_win.cc
-  ${ly_src_dir}/convert.cc
-  ${ly_src_dir}/convert_argb.cc
-  ${ly_src_dir}/convert_from.cc
-  ${ly_src_dir}/convert_from_argb.cc
-  ${ly_src_dir}/convert_jpeg.cc
-  ${ly_src_dir}/convert_to_argb.cc
-  ${ly_src_dir}/convert_to_i420.cc
-  ${ly_src_dir}/cpu_id.cc
-  ${ly_src_dir}/mjpeg_decoder.cc
-  ${ly_src_dir}/mjpeg_validate.cc
-  ${ly_src_dir}/planar_functions.cc
-  ${ly_src_dir}/rotate.cc
-  ${ly_src_dir}/rotate_any.cc
-  ${ly_src_dir}/rotate_argb.cc
-  ${ly_src_dir}/rotate_common.cc
-  ${ly_src_dir}/rotate_mips.cc
-  ${ly_src_dir}/rotate_neon.cc
-  ${ly_src_dir}/rotate_neon64.cc
-  ${ly_src_dir}/rotate_gcc.cc
-  ${ly_src_dir}/rotate_win.cc
-  ${ly_src_dir}/row_any.cc
-  ${ly_src_dir}/row_common.cc
-  ${ly_src_dir}/row_mips.cc
-  ${ly_src_dir}/row_msa.cc
-  ${ly_src_dir}/row_neon.cc
-  ${ly_src_dir}/row_neon64.cc
-  ${ly_src_dir}/row_gcc.cc
-  ${ly_src_dir}/row_win.cc
-  ${ly_src_dir}/scale.cc
-  ${ly_src_dir}/scale_any.cc
-  ${ly_src_dir}/scale_argb.cc
-  ${ly_src_dir}/scale_common.cc
-  ${ly_src_dir}/scale_mips.cc
-  ${ly_src_dir}/scale_neon.cc
-  ${ly_src_dir}/scale_neon64.cc
-  ${ly_src_dir}/scale_gcc.cc
-  ${ly_src_dir}/scale_win.cc
-  ${ly_src_dir}/video_common.cc
-)
</del><ins>+SET ( ly_base_dir       ${PROJECT_SOURCE_DIR} )
+SET ( ly_src_dir       ${ly_base_dir}/source )
+SET ( ly_inc_dir       ${ly_base_dir}/include )
+SET ( ly_tst_dir       ${ly_base_dir}/unit_test )
+SET ( ly_lib_name      yuv )
+SET ( ly_lib_static    ${ly_lib_name} )
+SET ( ly_lib_shared    ${ly_lib_name}_shared )
</ins><span class="cx"> 
</span><del>-set(ly_unittest_sources
-  ${ly_base_dir}/unit_test/basictypes_test.cc
-  ${ly_base_dir}/unit_test/color_test.cc
-  ${ly_base_dir}/unit_test/compare_test.cc
-  ${ly_base_dir}/unit_test/convert_test.cc
-  ${ly_base_dir}/unit_test/cpu_test.cc
-  ${ly_base_dir}/unit_test/math_test.cc
-  ${ly_base_dir}/unit_test/planar_test.cc
-  ${ly_base_dir}/unit_test/rotate_argb_test.cc
-  ${ly_base_dir}/unit_test/rotate_test.cc
-  ${ly_base_dir}/unit_test/scale_argb_test.cc
-  ${ly_base_dir}/unit_test/scale_test.cc
-  ${ly_base_dir}/unit_test/unit_test.cc
-  ${ly_base_dir}/unit_test/video_common_test.cc
-)
</del><ins>+FILE ( GLOB_RECURSE     ly_source_files ${ly_src_dir}/*.cc )
+LIST ( SORT                    ly_source_files )
</ins><span class="cx"> 
</span><del>-set(ly_header_files
-  ${ly_inc_dir}/libyuv/basic_types.h
-  ${ly_inc_dir}/libyuv/compare.h
-  ${ly_inc_dir}/libyuv/convert.h
-  ${ly_inc_dir}/libyuv/convert_argb.h
-  ${ly_inc_dir}/libyuv/convert_from.h
-  ${ly_inc_dir}/libyuv/convert_from_argb.h
-  ${ly_inc_dir}/libyuv/cpu_id.h
-  ${ly_inc_dir}/libyuv/macros_msa.h
-  ${ly_inc_dir}/libyuv/planar_functions.h
-  ${ly_inc_dir}/libyuv/rotate.h
-  ${ly_inc_dir}/libyuv/rotate_argb.h
-  ${ly_inc_dir}/libyuv/rotate_row.h
-  ${ly_inc_dir}/libyuv/row.h
-  ${ly_inc_dir}/libyuv/scale.h
-  ${ly_inc_dir}/libyuv/scale_argb.h
-  ${ly_inc_dir}/libyuv/scale_row.h
-  ${ly_inc_dir}/libyuv/version.h
-  ${ly_inc_dir}/libyuv/video_common.h
-  ${ly_inc_dir}/libyuv/mjpeg_decoder.h
-)
</del><ins>+FILE ( GLOB_RECURSE     ly_unittest_sources ${ly_tst_dir}/*.cc )
+LIST ( SORT                    ly_unittest_sources )
</ins><span class="cx"> 
</span><del>-include_directories(${ly_inc_dir})
</del><ins>+INCLUDE_DIRECTORIES( BEFORE ${ly_inc_dir} )
</ins><span class="cx"> 
</span><del>-add_library(${ly_lib_name} STATIC ${ly_source_files})
</del><ins>+# this creates the static library (.a)
+ADD_LIBRARY                            ( ${ly_lib_static} STATIC ${ly_source_files} )
</ins><span class="cx"> 
</span><del>-add_executable(convert ${ly_base_dir}/util/convert.cc)
-target_link_libraries(convert ${ly_lib_name})
</del><ins>+# this creates the shared library (.so)
+ADD_LIBRARY                            ( ${ly_lib_shared} SHARED ${ly_source_files} )
+SET_TARGET_PROPERTIES  ( ${ly_lib_shared} PROPERTIES OUTPUT_NAME "${ly_lib_name}" )
+SET_TARGET_PROPERTIES  ( ${ly_lib_shared} PROPERTIES PREFIX "lib" )
</ins><span class="cx"> 
</span><del>-include(FindJPEG)
</del><ins>+# this creates the conversion tool
+ADD_EXECUTABLE                 ( yuvconvert ${ly_base_dir}/util/yuvconvert.cc )
+TARGET_LINK_LIBRARIES  ( yuvconvert ${ly_lib_static} )
+
+
+INCLUDE ( FindJPEG )
</ins><span class="cx"> if (JPEG_FOUND)
</span><del>-  include_directories(${JPEG_INCLUDE_DIR})
-  target_link_libraries(convert ${JPEG_LIBRARY})
-  add_definitions(-DHAVE_JPEG)
</del><ins>+  include_directories( ${JPEG_INCLUDE_DIR} )
+  target_link_libraries( yuvconvert ${JPEG_LIBRARY} )
+  add_definitions( -DHAVE_JPEG )
</ins><span class="cx"> endif()
</span><span class="cx"> 
</span><span class="cx"> if(TEST)
</span><span class="lines">@@ -130,15 +63,21 @@
</span><span class="cx">   if (JPEG_FOUND)
</span><span class="cx">     target_link_libraries(libyuv_unittest ${JPEG_LIBRARY})
</span><span class="cx">   endif()
</span><del>-  
</del><ins>+
</ins><span class="cx">   if(NACL AND NACL_LIBC STREQUAL "newlib")
</span><span class="cx">     target_link_libraries(libyuv_unittest glibc-compat)
</span><span class="cx">   endif()
</span><span class="cx"> 
</span><span class="cx">   target_link_libraries(libyuv_unittest gflags)
</span><del>-  
</del><span class="cx"> endif()
</span><span class="cx"> 
</span><del>-install(TARGETS ${ly_lib_name} DESTINATION lib)
-install(FILES ${ly_header_files} DESTINATION include/libyuv)
-install(FILES ${ly_inc_dir}/libyuv.h DESTINATION include/)
</del><ins>+
+# install the conversion tool, .so, .a, and all the header files
+INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert                      DESTINATION bin )
+INSTALL ( TARGETS ${ly_lib_static}                                             DESTINATION lib )
+INSTALL ( TARGETS ${ly_lib_shared} LIBRARY                             DESTINATION lib )
+INSTALL ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/             DESTINATION include )
+
+# create the .deb and .rpm packages using cpack
+INCLUDE ( CM_linux_packages.cmake )
+
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvDEPS"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/DEPS (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/DEPS 2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/DEPS    2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -1,40 +1,107 @@
</span><span class="cx"> vars = {
</span><del>-  # Override root_dir in your .gclient's custom_vars to specify a custom root
-  # folder name.
-  'root_dir': 'libyuv',
-  'extra_gyp_flag': '-Dextra_gyp_flag=0',
</del><span class="cx">   'chromium_git': 'https://chromium.googlesource.com',
</span><del>-
-  # Roll the Chromium Git hash to pick up newer versions of all the
-  # dependencies and tools linked to in setup_links.py.
-  'chromium_revision': '941118827f5240dedb40082cffb1ead6c6d621cc',
</del><ins>+  'chromium_revision': 'ce95e5d83f3538e5797b85f986e52afda8a7a40a',
+  'swarming_revision': '11e31afa5d330756ff87aa12064bb5d032896cb5',
+  # Three lines of non-changing comments so that
+  # the commit queue can handle CLs rolling lss
+  # and whatever else without interference from each other.
+  'lss_revision': '63f24c8221a229f677d26ebe8f3d1528a9d787ac',
+  # Three lines of non-changing comments so that
+  # the commit queue can handle CLs rolling catapult
+  # and whatever else without interference from each other.
+  'catapult_revision': 'e8775f0f64bcae6b0789df6d4a2a5aca9f5cf4ac',
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-# NOTE: Use http rather than https; the latter can cause problems for users
-# behind proxies.
</del><span class="cx"> deps = {
</span><del>-  Var('root_dir') + '/third_party/gflags/src':
-    Var('chromium_git') + '/external/github.com/gflags/gflags@03bebcb065c83beff83d50ae025a55a4bf94dfca',
</del><ins>+  'src/build':
+    Var('chromium_git') + '/chromium/src/build' + '@' + 'bca1cbe2aaed610e412eed70a3a7d22799c65259',
+  'src/buildtools':
+    Var('chromium_git') + '/chromium/buildtools.git' + '@' + '88811f48a6b79786ef35be86825642fc33011151',
+  'src/testing':
+    Var('chromium_git') + '/chromium/src/testing' + '@' + '7b3e681f96c5bc54d1ba4a47285a9874ed18514f',
+  'src/testing/gtest':
+    Var('chromium_git') + '/external/github.com/google/googletest.git' + '@' + '6f8a66431cb592dad629028a50b3dd418a408c87',
+  'src/testing/gmock':
+    Var('chromium_git') + '/external/googlemock.git' + '@' + '0421b6f358139f02e102c9c332ce19a33faf75be', # from svn revision 566
+  'src/third_party':
+    Var('chromium_git') + '/chromium/src/third_party' + '@' + 'b28b3325f9374dd79d3a874d6dd688222d61f4f1',
+  'src/third_party/catapult':
+   Var('chromium_git') + '/external/github.com/catapult-project/catapult.git' + '@' + Var('catapult_revision'),
+  'src/third_party/colorama/src':
+    Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8',
+  'src/third_party/libjpeg_turbo':
+    Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + '7260e4d8b8e1e40b17f03fafdf1cd83296900f76',
+  'src/third_party/yasm/source/patched-yasm':
+    Var('chromium_git') + '/chromium/deps/yasm/patched-yasm.git' + '@' + '7da28c6c7c6a1387217352ce02b31754deb54d2a',
+  'src/tools':
+    Var('chromium_git') + '/chromium/src/tools' + '@' + '5c327d115e2022cbeb2e8f51f3a0b4dbcb1dd451',
+  'src/tools/gyp':
+    Var('chromium_git') + '/external/gyp.git' + '@' + 'eb296f67da078ec01f5e3a9ea9cdc6d26d680161',
+   'src/tools/swarming_client':
+     Var('chromium_git') + '/external/swarming.client.git' + '@' +  Var('swarming_revision'),
+
+  # libyuv-only dependencies (not present in Chromium).
+  'src/third_party/gflags':
+    Var('chromium_git') + '/external/webrtc/deps/third_party/gflags' + '@' + '892576179b45861b53e04a112996a738309cf364',
+  'src/third_party/gflags/src':
+    Var('chromium_git') + '/external/github.com/gflags/gflags' + '@' + '03bebcb065c83beff83d50ae025a55a4bf94dfca',
+  'src/third_party/gtest-parallel':
+    Var('chromium_git') + '/external/webrtc/deps/third_party/gtest-parallel' + '@' + '1dad0e9f6d82ff994130b529d7d814b40eb32b0e',
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+deps_os = {
+  'android': {
+    'src/base':
+      Var('chromium_git') + '/chromium/src/base' + '@' + 'f6489f4fd2be9f4245492fd4a708740bba073f13',
+    'src/third_party/android_tools':
+      Var('chromium_git') + '/android_tools.git' + '@' + 'b65c4776dac2cf1b80e969b3b2d4e081b9c84f29',
+    'src/third_party/ced/src':
+      Var('chromium_git') + '/external/github.com/google/compact_enc_det.git' + '@' + 'e21eb6aed10b9f6e2727f136c52420033214d458',
+    'src/third_party/icu':
+      Var('chromium_git') + '/chromium/deps/icu.git' + '@' + 'b34251f8b762f8e2112a89c587855ca4297fed96',
+    'src/third_party/jsr-305/src':
+      Var('chromium_git') + '/external/jsr-305.git' + '@' + '642c508235471f7220af6d5df2d3210e3bfc0919',
+    'src/third_party/junit/src':
+      Var('chromium_git') + '/external/junit.git' + '@' + '64155f8a9babcfcf4263cf4d08253a1556e75481',
+    'src/third_party/lss':
+      Var('chromium_git') + '/linux-syscall-support.git' + '@' + Var('lss_revision'),
+    'src/third_party/mockito/src':
+      Var('chromium_git') + '/external/mockito/mockito.git' + '@' + 'de83ad4598ad4cf5ea53c69a8a8053780b04b850',
+    'src/third_party/requests/src':
+      Var('chromium_git') + '/external/github.com/kennethreitz/requests.git' + '@' + 'f172b30356d821d180fa4ecfa3e71c7274a32de4',
+    'src/third_party/robolectric/robolectric':
+      Var('chromium_git') + '/external/robolectric.git' + '@' + '2a0b6ba221c14f3371813a676ce06143353e448d',
+  },
+  'ios': {
+    'src/ios':
+      Var('chromium_git') + '/chromium/src/ios' + '@' + '9595ed7ed6ab7bcb3b1f990a4455f56d6ed01ef3',
+  },
+  'unix': {
+    'src/third_party/lss':
+      Var('chromium_git') + '/linux-syscall-support.git' + '@' + Var('lss_revision'),
+  },
+  'win': {
+    # Dependencies used by libjpeg-turbo
+    'src/third_party/yasm/binaries':
+      Var('chromium_git') + '/chromium/deps/yasm/binaries.git' + '@' + '52f9b3f4b0aa06da24ef8b123058bb61ee468881',
+  },
+}
+
</ins><span class="cx"> # Define rules for which include paths are allowed in our source.
</span><span class="cx"> include_rules = [ '+gflags' ]
</span><span class="cx"> 
</span><del>-hooks = [
</del><ins>+pre_deps_hooks = [
</ins><span class="cx">   {
</span><del>-    # Clone chromium and its deps.
-    'name': 'sync chromium',
</del><ins>+    # Remove any symlinks from before 177567c518b121731e507e9b9c4049c4dc96e4c8.
+    # TODO(kjellander): Remove this in March 2017.
+    'name': 'cleanup_links',
</ins><span class="cx">     'pattern': '.',
</span><del>-    'action': ['python', '-u', Var('root_dir') + '/sync_chromium.py',
-               '--target-revision', Var('chromium_revision')],
</del><ins>+    'action': ['python', 'src/cleanup_links.py'],
</ins><span class="cx">   },
</span><ins>+]
+
+hooks = [
</ins><span class="cx">   {
</span><del>-    # Create links to shared dependencies in Chromium.
-    'name': 'setup_links',
-    'pattern': '.',
-    'action': ['python', Var('root_dir') + '/setup_links.py'],
-  },
-  {
</del><span class="cx">     # This clobbers when necessary (based on get_landmines.py). It should be
</span><span class="cx">     # an early hook but it will need to be run after syncing Chromium and
</span><span class="cx">     # setting up the links, so the script actually exists.
</span><span class="lines">@@ -42,16 +109,333 @@
</span><span class="cx">     'pattern': '.',
</span><span class="cx">     'action': [
</span><span class="cx">         'python',
</span><del>-        Var('root_dir') + '/build/landmines.py',
</del><ins>+        'src/build/landmines.py',
</ins><span class="cx">         '--landmine-scripts',
</span><del>-        Var('root_dir') + '/tools/get_landmines.py',
</del><ins>+        'src/tools_libyuv/get_landmines.py',
</ins><span class="cx">         '--src-dir',
</span><del>-        Var('root_dir'),
</del><ins>+        'src',
</ins><span class="cx">     ],
</span><span class="cx">   },
</span><ins>+  # Android dependencies. Many are downloaded using Google Storage these days.
+  # They're copied from https://cs.chromium.org/chromium/src/DEPS for all
+  # such dependencies we share with Chromium.
</ins><span class="cx">   {
</span><del>-    # A change to a .gyp, .gypi, or to GYP itself should run the generator.
</del><ins>+    # This downloads SDK extras and puts them in the
+    # third_party/android_tools/sdk/extras directory.
+    'name': 'sdkextras',
</ins><span class="cx">     'pattern': '.',
</span><del>-    'action': ['python', Var('root_dir') + '/gyp_libyuv'],
</del><ins>+    # When adding a new sdk extras package to download, add the package
+    # directory and zip file to .gitignore in third_party/android_tools.
+    'action': ['python',
+               'src/build/android/play_services/update.py',
+               'download'
+    ],
</ins><span class="cx">   },
</span><ins>+  {
+    'name': 'intellij',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-intellij',
+               '-l', 'third_party/intellij'
+    ],
+  },
+  {
+    'name': 'javax_inject',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-javax-inject',
+               '-l', 'third_party/javax_inject'
+    ],
+  },
+  {
+    'name': 'hamcrest',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-hamcrest',
+               '-l', 'third_party/hamcrest'
+    ],
+  },
+  {
+    'name': 'guava',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-guava',
+               '-l', 'third_party/guava'
+    ],
+  },
+  {
+    'name': 'android_support_test_runner',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-android-support-test-runner',
+               '-l', 'third_party/android_support_test_runner'
+    ],
+  },
+  {
+    'name': 'byte_buddy',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-byte-buddy',
+               '-l', 'third_party/byte_buddy'
+    ],
+  },
+  {
+    'name': 'espresso',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-espresso',
+               '-l', 'third_party/espresso'
+    ],
+  },
+  {
+    'name': 'robolectric_libs',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-robolectric',
+               '-l', 'third_party/robolectric'
+    ],
+  },
+  {
+    'name': 'apache_velocity',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-apache-velocity',
+               '-l', 'third_party/apache_velocity'
+    ],
+  },
+  {
+    'name': 'ow2_asm',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-ow2-asm',
+               '-l', 'third_party/ow2_asm'
+    ],
+  },
+  {
+    'name': 'icu4j',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-icu4j',
+               '-l', 'third_party/icu4j'
+    ],
+  },
+  {
+    'name': 'accessibility_test_framework',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-accessibility-test-framework',
+               '-l', 'third_party/accessibility_test_framework'
+    ],
+  },
+  {
+    'name': 'bouncycastle',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-bouncycastle',
+               '-l', 'third_party/bouncycastle'
+    ],
+  },
+  {
+    'name': 'sqlite4java',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-sqlite4java',
+               '-l', 'third_party/sqlite4java'
+    ],
+  },
+  {
+    'name': 'objenesis',
+    'pattern': '.',
+    'action': ['python',
+               'src/build/android/update_deps/update_third_party_deps.py',
+               'download',
+               '-b', 'chromium-objenesis',
+               '-l', 'third_party/objenesis'
+    ],
+  },
+  {
+    # Downloads the current stable linux sysroot to build/linux/ if needed.
+    # This sysroot updates at about the same rate that the chrome build deps
+    # change. This script is a no-op except for linux users who are doing
+    # official chrome builds or cross compiling.
+    'name': 'sysroot',
+    'pattern': '.',
+    'action': ['python', 'src/build/linux/sysroot_scripts/install-sysroot.py',
+               '--running-as-hook'],
+  },
+  {
+    # Update the Windows toolchain if necessary.
+    'name': 'win_toolchain',
+    'pattern': '.',
+    'action': ['python', 'src/build/vs_toolchain.py', 'update'],
+  },
+  # Pull binutils for linux, enabled debug fission for faster linking /
+  # debugging when used with clang on Ubuntu Precise.
+  # https://code.google.com/p/chromium/issues/detail?id=352046
+  {
+    'name': 'binutils',
+    'pattern': 'src/third_party/binutils',
+    'action': [
+        'python',
+        'src/third_party/binutils/download.py',
+    ],
+  },
+  {
+    # Pull clang if needed or requested via GYP_DEFINES.
+    # Note: On Win, this should run after win_toolchain, as it may use it.
+    'name': 'clang',
+    'pattern': '.',
+    'action': ['python', 'src/tools/clang/scripts/update.py', '--if-needed'],
+  },
+  {
+    # Update LASTCHANGE.
+    'name': 'lastchange',
+    'pattern': '.',
+    'action': ['python', 'src/build/util/lastchange.py',
+               '-o', 'src/build/util/LASTCHANGE'],
+  },
+  # Pull GN binaries.
+  {
+    'name': 'gn_win',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=win32',
+                '--no_auth',
+                '--bucket', 'chromium-gn',
+                '-s', 'src/buildtools/win/gn.exe.sha1',
+    ],
+  },
+  {
+    'name': 'gn_mac',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=darwin',
+                '--no_auth',
+                '--bucket', 'chromium-gn',
+                '-s', 'src/buildtools/mac/gn.sha1',
+    ],
+  },
+  {
+    'name': 'gn_linux64',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=linux*',
+                '--no_auth',
+                '--bucket', 'chromium-gn',
+                '-s', 'src/buildtools/linux64/gn.sha1',
+    ],
+  },
+  # Pull clang-format binaries using checked-in hashes.
+  {
+    'name': 'clang_format_win',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=win32',
+                '--no_auth',
+                '--bucket', 'chromium-clang-format',
+                '-s', 'src/buildtools/win/clang-format.exe.sha1',
+    ],
+  },
+  {
+    'name': 'clang_format_mac',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=darwin',
+                '--no_auth',
+                '--bucket', 'chromium-clang-format',
+                '-s', 'src/buildtools/mac/clang-format.sha1',
+    ],
+  },
+  {
+    'name': 'clang_format_linux',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=linux*',
+                '--no_auth',
+                '--bucket', 'chromium-clang-format',
+                '-s', 'src/buildtools/linux64/clang-format.sha1',
+    ],
+  },
+  # Pull luci-go binaries (isolate, swarming) using checked-in hashes.
+  {
+    'name': 'luci-go_win',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=win32',
+                '--no_auth',
+                '--bucket', 'chromium-luci',
+                '-d', 'src/tools/luci-go/win64',
+    ],
+  },
+  {
+    'name': 'luci-go_mac',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=darwin',
+                '--no_auth',
+                '--bucket', 'chromium-luci',
+                '-d', 'src/tools/luci-go/mac64',
+    ],
+  },
+  {
+    'name': 'luci-go_linux',
+    'pattern': '.',
+    'action': [ 'download_from_google_storage',
+                '--no_resume',
+                '--platform=linux*',
+                '--no_auth',
+                '--bucket', 'chromium-luci',
+                '-d', 'src/tools/luci-go/linux64',
+    ],
+  },
+  {
+    'name': 'clang_format_merge_driver',
+    'pattern': '.',
+    'action': [ 'python',
+                'src/tools/clang_format_merge_driver/install_git_hook.py',
+    ],
+  },
</ins><span class="cx"> ]
</span><ins>+
+recursedeps = [
+  # buildtools provides clang_format, libc++, and libc++abi.
+  'src/buildtools',
+  # android_tools manages the NDK.
+  'src/third_party/android_tools',
+]
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvPRESUBMITpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/PRESUBMIT.py (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/PRESUBMIT.py 2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/PRESUBMIT.py    2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-# Copyright 2014 The LibYuv Project Authors. All rights reserved.
</del><ins>+# Copyright 2017 The LibYuv Project Authors. All rights reserved.
</ins><span class="cx"> #
</span><span class="cx"> # Use of this source code is governed by a BSD-style license
</span><span class="cx"> # that can be found in the LICENSE file in the root of the source
</span><span class="lines">@@ -6,52 +6,67 @@
</span><span class="cx"> # in the file PATENTS. All contributing project authors may
</span><span class="cx"> # be found in the AUTHORS file in the root of the source tree.
</span><span class="cx"> 
</span><del>-import re
-import sys
</del><ins>+import os
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-def GetDefaultTryConfigs(bots=None):
-  """Returns a list of ('bot', set(['tests']), optionally filtered by [bots].
</del><ins>+def _RunPythonTests(input_api, output_api):
+  def join(*args):
+    return input_api.os_path.join(input_api.PresubmitLocalPath(), *args)
</ins><span class="cx"> 
</span><del>-  For WebRTC purposes, we always return an empty list of tests, since we want
-  to run all tests by default on all our trybots.
-  """
-  return { 'tryserver.libyuv': dict((bot, []) for bot in bots)}
</del><ins>+  test_directories = [
+      root for root, _, files in os.walk(join('tools_libyuv'))
+      if any(f.endswith('_test.py') for f in files)
+  ]
</ins><span class="cx"> 
</span><ins>+  tests = []
+  for directory in test_directories:
+    tests.extend(
+      input_api.canned_checks.GetUnitTestsInDirectory(
+          input_api,
+          output_api,
+          directory,
+          whitelist=[r'.+_test\.py$']))
+  return input_api.RunTests(tests, parallel=True)
</ins><span class="cx"> 
</span><del>-# pylint: disable=W0613
-def GetPreferredTryMasters(project, change):
-  files = change.LocalPaths()
-  bots = [
-    'win',
-    'win_rel',
-    'win_x64_rel',
-    'win_clang',
-    'win_clang_rel',
-    'win_x64_clang_rel',
-    'mac',
-    'mac_rel',
-    'mac_asan',
-    'ios',
-    'ios_rel',
-    'ios_arm64',
-    'ios_arm64_rel',
-    'linux',
-    'linux_rel',
-    'linux_memcheck',
-    'linux_tsan2',
-    'linux_asan',
-    'linux_msan',
-    'linux_ubsan',
-    'linux_ubsan_vptr',
-    'android',
-    'android_rel',
-    'android_clang',
-    'android_arm64',
-    'android_mips',
-    'android_x64',
-    'android_x86',
-  ]
-  if not files or all(re.search(r'[\\/]OWNERS$', f) for f in files):
-    return {}
-  return GetDefaultTryConfigs(bots)
</del><ins>+
+def _CommonChecks(input_api, output_api):
+  """Checks common to both upload and commit."""
+  results = []
+  results.extend(input_api.canned_checks.RunPylint(input_api, output_api,
+      black_list=(r'^base[\\\/].*\.py$',
+                  r'^build[\\\/].*\.py$',
+                  r'^buildtools[\\\/].*\.py$',
+                  r'^ios[\\\/].*\.py$',
+                  r'^out.*[\\\/].*\.py$',
+                  r'^testing[\\\/].*\.py$',
+                  r'^third_party[\\\/].*\.py$',
+                  r'^tools[\\\/].*\.py$',
+                  # TODO(kjellander): should arguably be checked.
+                  r'^tools_libyuv[\\\/]valgrind[\\\/].*\.py$',
+                  r'^xcodebuild.*[\\\/].*\.py$',),
+      disabled_warnings=['F0401',  # Failed to import x
+                         'E0611',  # No package y in x
+                         'W0232',  # Class has no __init__ method
+                        ],
+      pylintrc='pylintrc'))
+  results.extend(_RunPythonTests(input_api, output_api))
+  return results
+
+
+def CheckChangeOnUpload(input_api, output_api):
+  results = []
+  results.extend(_CommonChecks(input_api, output_api))
+  results.extend(
+      input_api.canned_checks.CheckGNFormatted(input_api, output_api))
+  return results
+
+
+def CheckChangeOnCommit(input_api, output_api):
+  results = []
+  results.extend(_CommonChecks(input_api, output_api))
+  results.extend(input_api.canned_checks.CheckOwners(input_api, output_api))
+  results.extend(input_api.canned_checks.CheckChangeWasUploaded(
+      input_api, output_api))
+  results.extend(input_api.canned_checks.CheckChangeHasDescription(
+      input_api, output_api))
+  return results
</ins><span class="cx">Property changes on: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/PRESUBMIT.py
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnexecutable"></a>
<div class="delfile"><h4>Deleted: svn:executable</h4></div>
<del>-*
</del><span class="cx">\ No newline at end of property
</span><a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvREADMEchromium"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/README.chromium (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/README.chromium      2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/README.chromium 2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> Name: libyuv
</span><span class="cx"> URL: http://code.google.com/p/libyuv/
</span><del>-Version: 1629
</del><ins>+Version: 1658
</ins><span class="cx"> License: BSD
</span><span class="cx"> License File: LICENSE
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvbuild_overridesbuildgni"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/build_overrides/build.gni (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/build_overrides/build.gni    2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/build_overrides/build.gni       2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -23,3 +23,24 @@
</span><span class="cx"> 
</span><span class="cx"> # Some non-Chromium builds don't support building java targets.
</span><span class="cx"> enable_java_templates = true
</span><ins>+
+# Allow using custom suppressions files (currently not used by libyuv).
+asan_suppressions_file = "//build/sanitizers/asan_suppressions.cc"
+lsan_suppressions_file = "//build/sanitizers/lsan_suppressions.cc"
+tsan_suppressions_file = "//build/sanitizers/tsan_suppressions.cc"
+
+msan_blacklist_path =
+    rebase_path("//tools_libyuv/msan/blacklist.txt", root_build_dir)
+ubsan_blacklist_path =
+    rebase_path("//tools_libyuv/ubsan/blacklist.txt", root_build_dir)
+ubsan_vptr_blacklist_path =
+    rebase_path("//tools_libyuv/ubsan/vptr_blacklist.txt", root_build_dir)
+
+# For Chromium, Android 32-bit non-component, non-clang builds hit a 4GiB size
+# limit, making them requiring symbol_level=2. WebRTC doesn't hit that problem
+# so we just ignore that assert. See https://crbug.com/648948 for more info.
+ignore_elf32_limitations = true
+
+# Use system Xcode installation instead of the Chromium bundled Mac toolchain,
+# since it contains only SDK 10.11, not 10.12 which WebRTC needs.
+use_system_xcode = true
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvcleanup_linkspy"></a>
<div class="addfile"><h4>Added: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/cleanup_links.py (0 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/cleanup_links.py                             (rev 0)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/cleanup_links.py        2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -0,0 +1,107 @@
</span><ins>+#!/usr/bin/env python
+# Copyright 2017 The LibYuv Project Authors. All rights reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS. All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# This is a copy of the file from WebRTC in:
+# https://chromium.googlesource.com/external/webrtc/+/master/cleanup_links.py
+
+"""Script to cleanup symlinks created from setup_links.py.
+
+Before 177567c518b121731e507e9b9c4049c4dc96e4c8 (#15754) we had a Chromium
+checkout which we created symlinks into. In order to do clean syncs after
+landing that change, this script cleans up any old symlinks, avoiding annoying
+manual cleanup needed in order to complete gclient sync.
+"""
+
+import logging
+import optparse
+import os
+import shelve
+import subprocess
+import sys
+
+
+ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
+LINKS_DB = 'links'
+
+# Version management to make future upgrades/downgrades easier to support.
+SCHEMA_VERSION = 1
+
+class WebRTCLinkSetup(object):
+  def __init__(self, links_db, dry_run=False):
+    self._dry_run = dry_run
+    self._links_db = links_db
+
+  def CleanupLinks(self):
+    logging.debug('CleanupLinks')
+    for source, link_path  in self._links_db.iteritems():
+      if source == 'SCHEMA_VERSION':
+        continue
+      if os.path.islink(link_path) or sys.platform.startswith('win'):
+        # os.path.islink() always returns false on Windows
+        # See http://bugs.python.org/issue13143.
+        logging.debug('Removing link to %s at %s', source, link_path)
+        if not self._dry_run:
+          if os.path.exists(link_path):
+            if sys.platform.startswith('win') and os.path.isdir(link_path):
+              subprocess.check_call(['rmdir', '/q', '/s', link_path],
+                                    shell=True)
+            else:
+              os.remove(link_path)
+          del self._links_db[source]
+
+
+def _initialize_database(filename):
+  links_database = shelve.open(filename)
+  # Wipe the database if this version of the script ends up looking at a
+  # newer (future) version of the links db, just to be sure.
+  version = links_database.get('SCHEMA_VERSION')
+  if version and version != SCHEMA_VERSION:
+    logging.info('Found database with schema version %s while this script only '
+                 'supports %s. Wiping previous database contents.', version,
+                 SCHEMA_VERSION)
+    links_database.clear()
+  links_database['SCHEMA_VERSION'] = SCHEMA_VERSION
+  return links_database
+
+
+def main():
+  parser = optparse.OptionParser()
+  parser.add_option('-d', '--dry-run', action='store_true', default=False,
+                    help='Print what would be done, but don\'t perform any '
+                         'operations. This will automatically set logging to '
+                         'verbose.')
+  parser.add_option('-v', '--verbose', action='store_const',
+                    const=logging.DEBUG, default=logging.INFO,
+                    help='Print verbose output for debugging.')
+  options, _ = parser.parse_args()
+
+  if options.dry_run:
+    options.verbose = logging.DEBUG
+  logging.basicConfig(format='%(message)s', level=options.verbose)
+
+  # Work from the root directory of the checkout.
+  script_dir = os.path.dirname(os.path.abspath(__file__))
+  os.chdir(script_dir)
+
+  # The database file gets .db appended on some platforms.
+  db_filenames = [LINKS_DB, LINKS_DB + '.db']
+  if any(os.path.isfile(f) for f in db_filenames):
+    links_database = _initialize_database(LINKS_DB)
+    try:
+      symlink_creator = WebRTCLinkSetup(links_database, options.dry_run)
+      symlink_creator.CleanupLinks()
+    finally:
+      for f in db_filenames:
+        if os.path.isfile(f):
+          os.remove(f)
+  return 0
+
+
+if __name__ == '__main__':
+  sys.exit(main())
</ins><span class="cx">Property changes on: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/cleanup_links.py
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnexecutable"></a>
<div class="addfile"><h4>Added: svn:executable</h4></div>
<ins>+*
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvcodereviewsettings"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/codereview.settings (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/codereview.settings  2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/codereview.settings     2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -1,11 +1,6 @@
</span><del>-# This file is used by gcl to get repository specific information.
</del><ins>+# This file is used by git cl to get repository specific information.
</ins><span class="cx"> CODE_REVIEW_SERVER: codereview.chromium.org
</span><del>-#CC_LIST:
-VIEW_VC: https://chromium.googlesource.com/libyuv/libyuv/+/
-#STATUS:
-FORCE_HTTPS_COMMIT_URL: True
</del><ins>+GERRIT_HOST: True
</ins><span class="cx"> PROJECT: libyuv
</span><span class="cx"> TRY_ON_UPLOAD: False
</span><del>-TRYSERVER_ROOT: src
-#GITCL_PREUPLOAD:
-#GITCL_PREDCOMMIT:
</del><ins>+VIEW_VC: https://chromium.googlesource.com/libyuv/libyuv/+/
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvdocsdeprecated_buildsmd"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/deprecated_builds.md (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/deprecated_builds.md    2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/deprecated_builds.md       2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -173,15 +173,15 @@
</span><span class="cx"> 
</span><span class="cx"> Running tests:
</span><span class="cx"> 
</span><del>-    util/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=*
</del><ins>+    build/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=*
</ins><span class="cx"> 
</span><span class="cx"> Running test as benchmark:
</span><span class="cx"> 
</span><del>-    util/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1"
</del><ins>+    build/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1"
</ins><span class="cx"> 
</span><span class="cx"> Running test with C code:
</span><span class="cx"> 
</span><del>-    util/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=1 --libyuv_cpu_info=1"
</del><ins>+    build/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=1 --libyuv_cpu_info=1"
</ins><span class="cx"> 
</span><span class="cx"> #### Building with GN
</span><span class="cx"> 
</span><span class="lines">@@ -238,7 +238,7 @@
</span><span class="cx">     ninja -C out/Debug libyuv
</span><span class="cx">     ninja -C out/Debug libyuv_unittest
</span><span class="cx">     ninja -C out/Debug compare
</span><del>-    ninja -C out/Debug convert
</del><ins>+    ninja -C out/Debug yuvconvert
</ins><span class="cx">     ninja -C out/Debug psnr
</span><span class="cx">     ninja -C out/Debug cpuid
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvdocsgetting_startedmd"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/getting_started.md (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/getting_started.md      2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/docs/getting_started.md 2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -11,13 +11,13 @@
</span><span class="cx"> 
</span><span class="cx"> Create a working directory, enter it, and run:
</span><span class="cx"> 
</span><del>-    gclient config https://chromium.googlesource.com/libyuv/libyuv
</del><ins>+    gclient config --name src https://chromium.googlesource.com/libyuv/libyuv
</ins><span class="cx">     gclient sync
</span><span class="cx"> 
</span><span class="cx"> Then you'll get a .gclient file like:
</span><span class="cx"> 
</span><span class="cx">     solutions = [
</span><del>-      { "name"        : "libyuv",
</del><ins>+      { "name"        : "src",
</ins><span class="cx">         "url"         : "https://chromium.googlesource.com/libyuv/libyuv",
</span><span class="cx">         "deps_file"   : "DEPS",
</span><span class="cx">         "managed"     : True,
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> For Android add `;target_os=['android'];` to your Linux .gclient
</span><span class="cx"> 
</span><span class="cx">     solutions = [
</span><del>-      { "name"        : "libyuv",
</del><ins>+      { "name"        : "src",
</ins><span class="cx">         "url"         : "https://chromium.googlesource.com/libyuv/libyuv",
</span><span class="cx">         "deps_file"   : "DEPS",
</span><span class="cx">         "managed"     : True,
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">         "safesync_url": "",
</span><span class="cx">       },
</span><span class="cx">     ];
</span><del>-    target_os = ["android", "unix"];
</del><ins>+    target_os = ["android", "linux"];
</ins><span class="cx"> 
</span><span class="cx"> Then run:
</span><span class="cx"> 
</span><span class="lines">@@ -51,14 +51,6 @@
</span><span class="cx">     export GYP_DEFINES="OS=android"
</span><span class="cx">     gclient sync
</span><span class="cx"> 
</span><del>-Caveat: Theres an error with Google Play services updates.  If you get the error "Your version of the Google Play services library is not up to date", run the following:
-
-    cd chromium/src
-    ./build/android/play_services/update.py download
-    cd ../..
-
-For Windows the gclient sync must be done from an Administrator command prompt.
-
</del><span class="cx"> The sync will generate native build files for your environment using gyp (Windows: Visual Studio, OSX: XCode, Linux: make). This generation can also be forced manually: `gclient runhooks`
</span><span class="cx"> 
</span><span class="cx"> To get just the source (not buildable):
</span><span class="lines">@@ -72,13 +64,13 @@
</span><span class="cx"> 
</span><span class="cx">     call gn gen out/Release "--args=is_debug=false target_cpu=\"x86\""
</span><span class="cx">     call gn gen out/Debug "--args=is_debug=true target_cpu=\"x86\""
</span><del>-    ninja -j7 -v -C out/Release
-    ninja -j7 -v -C out/Debug
</del><ins>+    ninja -v -C out/Release
+    ninja -v -C out/Debug
</ins><span class="cx"> 
</span><span class="cx">     call gn gen out/Release "--args=is_debug=false target_cpu=\"x64\""
</span><span class="cx">     call gn gen out/Debug "--args=is_debug=true target_cpu=\"x64\""
</span><del>-    ninja -j7 -v -C out/Release
-    ninja -j7 -v -C out/Debug
</del><ins>+    ninja -v -C out/Release
+    ninja -v -C out/Debug
</ins><span class="cx"> 
</span><span class="cx"> #### Building with clang-cl
</span><span class="cx"> 
</span><span class="lines">@@ -87,20 +79,20 @@
</span><span class="cx"> 
</span><span class="cx">     call gn gen out/Release "--args=is_debug=false is_official_build=false is_clang=true target_cpu=\"x86\""
</span><span class="cx">     call gn gen out/Debug "--args=is_debug=true is_official_build=false is_clang=true target_cpu=\"x86\""
</span><del>-    ninja -j7 -v -C out/Release
-    ninja -j7 -v -C out/Debug
</del><ins>+    ninja -v -C out/Release
+    ninja -v -C out/Debug
</ins><span class="cx"> 
</span><span class="cx">     call gn gen out/Release "--args=is_debug=false is_official_build=false is_clang=true target_cpu=\"x64\""
</span><span class="cx">     call gn gen out/Debug "--args=is_debug=true is_official_build=false is_clang=true target_cpu=\"x64\""
</span><del>-    ninja -j7 -v -C out/Release
-    ninja -j7 -v -C out/Debug
</del><ins>+    ninja -v -C out/Release
+    ninja -v -C out/Debug
</ins><span class="cx"> 
</span><span class="cx"> ### macOS and Linux
</span><span class="cx"> 
</span><span class="cx">     gn gen out/Release "--args=is_debug=false"
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true"
</span><del>-    ninja -j7 -v -C out/Release
-    ninja -j7 -v -C out/Debug
</del><ins>+    ninja -v -C out/Release
+    ninja -v -C out/Debug
</ins><span class="cx"> 
</span><span class="cx"> ### Building Offical with GN
</span><span class="cx"> 
</span><span class="lines">@@ -108,35 +100,24 @@
</span><span class="cx">     ninja -C out/Official
</span><span class="cx"> 
</span><span class="cx"> ### iOS
</span><del>-This section needs an update to GN build documentation.
</del><span class="cx"> http://www.chromium.org/developers/how-tos/build-instructions-ios
</span><span class="cx"> 
</span><span class="cx"> Add to .gclient last line: `target_os=['ios'];`
</span><span class="cx"> 
</span><del>-armv7
-
-    GYP_DEFINES="OS=ios target_arch=armv7 target_subarch=arm32" GYP_CROSSCOMPILE=1 GYP_GENERATOR_FLAGS="output_dir=out_ios" ./gyp_libyuv
-    ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
-    ninja -j7 -C out_ios/Release-iphoneos libyuv_unittest
-
</del><span class="cx"> arm64
</span><span class="cx"> 
</span><del>-    GYP_DEFINES="OS=ios target_arch=arm64 target_subarch=arm64" GYP_CROSSCOMPILE=1 GYP_GENERATOR_FLAGS="output_dir=out_ios" ./gyp_libyuv
-    ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
-    ninja -j7 -C out_ios/Release-iphoneos libyuv_unittest
</del><ins>+    gn gen out/Release "--args=is_debug=false target_os=\"ios\" ios_enable_code_signing=false target_cpu=\"arm64\""
+    gn gen out/Debug "--args=is_debug=true target_os=\"ios\" ios_enable_code_signing=false target_cpu=\"arm64\""
+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><del>-both armv7 and arm64 (fat)
</del><ins>+ios simulator
</ins><span class="cx"> 
</span><del>-    GYP_DEFINES="OS=ios target_arch=armv7 target_subarch=both" GYP_CROSSCOMPILE=1 GYP_GENERATOR_FLAGS="output_dir=out_ios" ./gyp_libyuv
-    ninja -j7 -C out_ios/Debug-iphoneos libyuv_unittest
-    ninja -j7 -C out_ios/Release-iphoneos libyuv_unittest
</del><ins>+    gn gen out/Release "--args=is_debug=false target_os=\"ios\" ios_enable_code_signing=false target_cpu=\"x86\""
+    gn gen out/Debug "--args=is_debug=true target_os=\"ios\" ios_enable_code_signing=false target_cpu=\"x86\""
+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><del>-simulator
-
-    GYP_DEFINES="OS=ios target_arch=ia32 target_subarch=arm32" GYP_CROSSCOMPILE=1 GYP_GENERATOR_FLAGS="output_dir=out_sim" ./gyp_libyuv
-    ninja -j7 -C out_sim/Debug-iphonesimulator libyuv_unittest
-    ninja -j7 -C out_sim/Release-iphonesimulator libyuv_unittest
-
</del><span class="cx"> ### Android
</span><span class="cx"> https://code.google.com/p/chromium/wiki/AndroidBuildInstructions
</span><span class="cx"> 
</span><span class="lines">@@ -146,34 +127,34 @@
</span><span class="cx"> 
</span><span class="cx">     gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"arm\""
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true target_os=\"android\" target_cpu=\"arm\""
</span><del>-    ninja -j7 -v -C out/Debug libyuv_unittest
-    ninja -j7 -v -C out/Release libyuv_unittest
</del><ins>+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><span class="cx"> arm64
</span><span class="cx"> 
</span><span class="cx">     gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"arm64\""
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true target_os=\"android\" target_cpu=\"arm64\""
</span><del>-    ninja -j7 -v -C out/Debug libyuv_unittest
-    ninja -j7 -v -C out/Release libyuv_unittest
</del><ins>+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><span class="cx"> ia32
</span><span class="cx"> 
</span><span class="cx">     gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"x86\""
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true target_os=\"android\" target_cpu=\"x86\""
</span><del>-    ninja -j7 -v -C out/Debug libyuv_unittest
-    ninja -j7 -v -C out/Release libyuv_unittest
</del><ins>+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><span class="cx"> mipsel
</span><span class="cx"> 
</span><span class="cx">     gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"mipsel\" mips_arch_variant=\"r6\" mips_use_msa=true is_component_build=true is_clang=false"
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true target_os=\"android\" target_cpu=\"mipsel\" mips_arch_variant=\"r6\" mips_use_msa=true is_component_build=true is_clang=false"
</span><del>-    ninja -j7 -v -C out/Debug libyuv_unittest
-    ninja -j7 -v -C out/Release libyuv_unittest
</del><ins>+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><span class="cx">     gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"mips64el\" mips_arch_variant=\"r6\" mips_use_msa=true is_component_build=true is_clang=false"
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true target_os=\"android\" target_cpu=\"mips64el\" mips_arch_variant=\"r6\" mips_use_msa=true is_component_build=true is_clang=false"
</span><del>-    ninja -j7 -v -C out/Debug libyuv_unittest
-    ninja -j7 -v -C out/Release libyuv_unittest
</del><ins>+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><span class="cx"> arm disassembly:
</span><span class="cx"> 
</span><span class="lines">@@ -185,15 +166,15 @@
</span><span class="cx"> 
</span><span class="cx"> Running tests:
</span><span class="cx"> 
</span><del>-    util/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=*
</del><ins>+    build/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=*
</ins><span class="cx"> 
</span><span class="cx"> Running test as benchmark:
</span><span class="cx"> 
</span><del>-    util/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1  --libyuv_cpu_info=-1"
</del><ins>+    build/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1  --libyuv_cpu_info=-1"
</ins><span class="cx"> 
</span><span class="cx"> Running test with C code:
</span><span class="cx"> 
</span><del>-    util/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=1 --libyuv_cpu_info=1"
</del><ins>+    build/android/test_runner.py gtest -s libyuv_unittest -t 7200 --verbose --release --gtest_filter=* -a "--libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=1 --libyuv_cpu_info=1"
</ins><span class="cx"> 
</span><span class="cx"> ### Build targets
</span><span class="cx"> 
</span><span class="lines">@@ -208,22 +189,22 @@
</span><span class="cx"> 
</span><span class="cx">     gn gen out/Release "--args=is_debug=false target_cpu=\"arm64\""
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true target_cpu=\"arm64\""
</span><del>-    ninja -j7 -v -C out/Debug libyuv_unittest
-    ninja -j7 -v -C out/Release libyuv_unittest
</del><ins>+    ninja -v -C out/Debug libyuv_unittest
+    ninja -v -C out/Release libyuv_unittest
</ins><span class="cx"> 
</span><span class="cx"> ## Building the Library with make
</span><span class="cx"> 
</span><span class="cx"> ### Linux
</span><span class="cx"> 
</span><del>-    make -j7 V=1 -f linux.mk
-    make -j7 V=1 -f linux.mk clean
-    make -j7 V=1 -f linux.mk CXX=clang++
</del><ins>+    make V=1 -f linux.mk
+    make V=1 -f linux.mk clean
+    make V=1 -f linux.mk CXX=clang++
</ins><span class="cx"> 
</span><del>-## Building the Library with cmake
</del><ins>+## Building the library with cmake
</ins><span class="cx"> 
</span><span class="cx"> Install cmake: http://www.cmake.org/
</span><span class="cx"> 
</span><del>-Default debug build:
</del><ins>+### Default debug build:
</ins><span class="cx"> 
</span><span class="cx">     mkdir out
</span><span class="cx">     cd out
</span><span class="lines">@@ -230,7 +211,7 @@
</span><span class="cx">     cmake ..
</span><span class="cx">     cmake --build .
</span><span class="cx"> 
</span><del>-Release build/install
</del><ins>+### Release build/install
</ins><span class="cx"> 
</span><span class="cx">     mkdir out
</span><span class="cx">     cd out
</span><span class="lines">@@ -238,6 +219,32 @@
</span><span class="cx">     cmake --build . --config Release
</span><span class="cx">     sudo cmake --build . --target install --config Release
</span><span class="cx"> 
</span><ins>+### Build RPM/DEB packages
+
+    mkdir out
+    cd out
+    cmake -DCMAKE_BUILD_TYPE=Release ..
+    make -j4
+    make package
+
+## Setup for Arm Cross compile
+
+See also https://www.ccoderun.ca/programming/2015-12-20_CrossCompiling/index.html
+
+    sudo apt-get install ssh dkms build-essential linux-headers-generic
+    sudo apt-get install kdevelop cmake git subversion
+    sudo apt-get install graphviz doxygen doxygen-gui
+    sudo apt-get install manpages manpages-dev manpages-posix manpages-posix-dev
+    sudo apt-get install libboost-all-dev libboost-dev libssl-dev
+    sudo apt-get install rpm terminator fish
+    sudo apt-get install g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf
+
+### Build psnr tool
+
+    cd util
+    arm-linux-gnueabihf-g++ psnr_main.cc psnr.cc ssim.cc -o psnr
+    arm-linux-gnueabihf-objdump -d psnr
+
</ins><span class="cx"> ## Running Unittests
</span><span class="cx"> 
</span><span class="cx"> ### Windows
</span><span class="lines">@@ -271,7 +278,7 @@
</span><span class="cx"> ## Sanitizers
</span><span class="cx"> 
</span><span class="cx">     gn gen out/Debug "--args=is_debug=true is_asan=true"
</span><del>-    ninja -j7 -v -C out/Debug
</del><ins>+    ninja -v -C out/Debug
</ins><span class="cx"> 
</span><span class="cx">     Sanitizers available: tsan, msan, asan, ubsan, lsan
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvgyp_libyuvpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/gyp_libyuv.py (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/gyp_libyuv.py        2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/gyp_libyuv.py   2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -9,7 +9,7 @@
</span><span class="cx"> # be found in the AUTHORS file in the root of the source tree.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-# This script is a modified copy of the src/build/gyp_chromium.py file. 
</del><ins>+# This script is a modified copy of the src/build/gyp_chromium.py file.
</ins><span class="cx"> # It is needed for parallel processing.
</span><span class="cx"> 
</span><span class="cx"> # This file is (possibly, depending on python version) imported by
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvbasic_typesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/basic_types.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/basic_types.h 2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/basic_types.h    2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -26,31 +26,31 @@
</span><span class="cx"> typedef unsigned __int64 uint64;
</span><span class="cx"> typedef __int64 int64;
</span><span class="cx"> #ifndef INT64_C
</span><del>-#define INT64_C(x) x ## I64
</del><ins>+#define INT64_C(x) x##I64
</ins><span class="cx"> #endif
</span><span class="cx"> #ifndef UINT64_C
</span><del>-#define UINT64_C(x) x ## UI64
</del><ins>+#define UINT64_C(x) x##UI64
</ins><span class="cx"> #endif
</span><span class="cx"> #define INT64_F "I64"
</span><span class="cx"> #else  // COMPILER_MSVC
</span><span class="cx"> #if defined(__LP64__) && !defined(__OpenBSD__) && !defined(__APPLE__)
</span><span class="cx"> typedef unsigned long uint64;  // NOLINT
</span><del>-typedef long int64;  // NOLINT
</del><ins>+typedef long int64;            // NOLINT
</ins><span class="cx"> #ifndef INT64_C
</span><del>-#define INT64_C(x) x ## L
</del><ins>+#define INT64_C(x) x##L
</ins><span class="cx"> #endif
</span><span class="cx"> #ifndef UINT64_C
</span><del>-#define UINT64_C(x) x ## UL
</del><ins>+#define UINT64_C(x) x##UL
</ins><span class="cx"> #endif
</span><span class="cx"> #define INT64_F "l"
</span><span class="cx"> #else  // defined(__LP64__) && !defined(__OpenBSD__) && !defined(__APPLE__)
</span><span class="cx"> typedef unsigned long long uint64;  // NOLINT
</span><del>-typedef long long int64;  // NOLINT
</del><ins>+typedef long long int64;            // NOLINT
</ins><span class="cx"> #ifndef INT64_C
</span><del>-#define INT64_C(x) x ## LL
</del><ins>+#define INT64_C(x) x##LL
</ins><span class="cx"> #endif
</span><span class="cx"> #ifndef UINT64_C
</span><del>-#define UINT64_C(x) x ## ULL
</del><ins>+#define UINT64_C(x) x##ULL
</ins><span class="cx"> #endif
</span><span class="cx"> #define INT64_F "ll"
</span><span class="cx"> #endif  // __LP64__
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> typedef unsigned int uint32;
</span><span class="cx"> typedef int int32;
</span><span class="cx"> typedef unsigned short uint16;  // NOLINT
</span><del>-typedef short int16;  // NOLINT
</del><ins>+typedef short int16;            // NOLINT
</ins><span class="cx"> typedef unsigned char uint8;
</span><span class="cx"> typedef signed char int8;
</span><span class="cx"> #endif  // INT_TYPES_DEFINED
</span><span class="lines">@@ -65,8 +65,8 @@
</span><span class="cx"> #endif  // GG_LONGLONG
</span><span class="cx"> 
</span><span class="cx"> // Detect compiler is for x86 or x64.
</span><del>-#if defined(__x86_64__) || defined(_M_X64) || \
-    defined(__i386__) || defined(_M_IX86)
</del><ins>+#if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || \
+    defined(_M_IX86)
</ins><span class="cx"> #define CPU_X86 1
</span><span class="cx"> #endif
</span><span class="cx"> // Detect compiler is for ARM.
</span><span class="lines">@@ -76,12 +76,12 @@
</span><span class="cx"> 
</span><span class="cx"> #ifndef ALIGNP
</span><span class="cx"> #ifdef __cplusplus
</span><del>-#define ALIGNP(p, t) \
-    (reinterpret_cast<uint8*>(((reinterpret_cast<uintptr_t>(p) + \
-    ((t) - 1)) & ~((t) - 1))))
</del><ins>+#define ALIGNP(p, t)        \
+  reinterpret_cast<uint8*>( \
+      ((reinterpret_cast<uintptr_t>(p) + ((t)-1)) & ~((t)-1)))
</ins><span class="cx"> #else
</span><span class="cx"> #define ALIGNP(p, t) \
</span><del>-    ((uint8*)((((uintptr_t)(p) + ((t) - 1)) & ~((t) - 1))))  /* NOLINT */
</del><ins>+  (uint8*)((((uintptr_t)(p) + ((t)-1)) & ~((t)-1))) /* NOLINT */
</ins><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -95,9 +95,9 @@
</span><span class="cx"> #define LIBYUV_API
</span><span class="cx"> #endif  // LIBYUV_BUILDING_SHARED_LIBRARY
</span><span class="cx"> #elif defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__APPLE__) && \
</span><del>-    (defined(LIBYUV_BUILDING_SHARED_LIBRARY) || \
-    defined(LIBYUV_USING_SHARED_LIBRARY))
-#define LIBYUV_API __attribute__ ((visibility ("default")))
</del><ins>+    (defined(LIBYUV_BUILDING_SHARED_LIBRARY) ||                      \
+     defined(LIBYUV_USING_SHARED_LIBRARY))
+#define LIBYUV_API __attribute__((visibility("default")))
</ins><span class="cx"> #else
</span><span class="cx"> #define LIBYUV_API
</span><span class="cx"> #endif  // __GNUC__
</span><span class="lines">@@ -108,10 +108,9 @@
</span><span class="cx"> #define LIBYUV_TRUE 1
</span><span class="cx"> 
</span><span class="cx"> // Visual C x86 or GCC little endian.
</span><del>-#if defined(__x86_64__) || defined(_M_X64) || \
-  defined(__i386__) || defined(_M_IX86) || \
-  defined(__arm__) || defined(_M_ARM) || \
-  (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
</del><ins>+#if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || \
+    defined(_M_IX86) || defined(__arm__) || defined(_M_ARM) ||     \
+    (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
</ins><span class="cx"> #define LIBYUV_LITTLE_ENDIAN
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvcompareh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare.h     2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare.h        2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -22,6 +22,12 @@
</span><span class="cx"> LIBYUV_API
</span><span class="cx"> uint32 HashDjb2(const uint8* src, uint64 count, uint32 seed);
</span><span class="cx"> 
</span><ins>+// Hamming Distance
+LIBYUV_API
+uint64 ComputeHammingDistance(const uint8* src_a,
+                              const uint8* src_b,
+                              int count);
+
</ins><span class="cx"> // Scan an opaque argb image and return fourcc based on alpha offset.
</span><span class="cx"> // Returns FOURCC_ARGB, FOURCC_BGRA, or 0 if unknown.
</span><span class="cx"> LIBYUV_API
</span><span class="lines">@@ -29,13 +35,15 @@
</span><span class="cx"> 
</span><span class="cx"> // Sum Square Error - used to compute Mean Square Error or PSNR.
</span><span class="cx"> LIBYUV_API
</span><del>-uint64 ComputeSumSquareError(const uint8* src_a,
-                             const uint8* src_b, int count);
</del><ins>+uint64 ComputeSumSquareError(const uint8* src_a, const uint8* src_b, int count);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-uint64 ComputeSumSquareErrorPlane(const uint8* src_a, int stride_a,
-                                  const uint8* src_b, int stride_b,
-                                  int width, int height);
</del><ins>+uint64 ComputeSumSquareErrorPlane(const uint8* src_a,
+                                  int stride_a,
+                                  const uint8* src_b,
+                                  int stride_b,
+                                  int width,
+                                  int height);
</ins><span class="cx"> 
</span><span class="cx"> static const int kMaxPsnr = 128;
</span><span class="cx"> 
</span><span class="lines">@@ -43,32 +51,52 @@
</span><span class="cx"> double SumSquareErrorToPsnr(uint64 sse, uint64 count);
</span><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-double CalcFramePsnr(const uint8* src_a, int stride_a,
-                     const uint8* src_b, int stride_b,
-                     int width, int height);
</del><ins>+double CalcFramePsnr(const uint8* src_a,
+                     int stride_a,
+                     const uint8* src_b,
+                     int stride_b,
+                     int width,
+                     int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-double I420Psnr(const uint8* src_y_a, int stride_y_a,
-                const uint8* src_u_a, int stride_u_a,
-                const uint8* src_v_a, int stride_v_a,
-                const uint8* src_y_b, int stride_y_b,
-                const uint8* src_u_b, int stride_u_b,
-                const uint8* src_v_b, int stride_v_b,
-                int width, int height);
</del><ins>+double I420Psnr(const uint8* src_y_a,
+                int stride_y_a,
+                const uint8* src_u_a,
+                int stride_u_a,
+                const uint8* src_v_a,
+                int stride_v_a,
+                const uint8* src_y_b,
+                int stride_y_b,
+                const uint8* src_u_b,
+                int stride_u_b,
+                const uint8* src_v_b,
+                int stride_v_b,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-double CalcFrameSsim(const uint8* src_a, int stride_a,
-                     const uint8* src_b, int stride_b,
-                     int width, int height);
</del><ins>+double CalcFrameSsim(const uint8* src_a,
+                     int stride_a,
+                     const uint8* src_b,
+                     int stride_b,
+                     int width,
+                     int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-double I420Ssim(const uint8* src_y_a, int stride_y_a,
-                const uint8* src_u_a, int stride_u_a,
-                const uint8* src_v_a, int stride_v_a,
-                const uint8* src_y_b, int stride_y_b,
-                const uint8* src_u_b, int stride_u_b,
-                const uint8* src_v_b, int stride_v_b,
-                int width, int height);
</del><ins>+double I420Ssim(const uint8* src_y_a,
+                int stride_y_a,
+                const uint8* src_u_a,
+                int stride_u_a,
+                const uint8* src_v_a,
+                int stride_v_a,
+                const uint8* src_y_b,
+                int stride_y_b,
+                const uint8* src_u_b,
+                int stride_u_b,
+                const uint8* src_v_b,
+                int stride_v_b,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }  // extern "C"
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvcompare_rowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare_row.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare_row.h 2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/compare_row.h    2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -30,8 +30,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> // Visual C 2012 required for AVX2.
</span><del>-#if defined(_M_IX86) && !defined(__clang__) && \
-    defined(_MSC_VER) && _MSC_VER >= 1700
</del><ins>+#if defined(_M_IX86) && !defined(__clang__) && defined(_MSC_VER) && \
+    _MSC_VER >= 1700
</ins><span class="cx"> #define VISUALC_HAS_AVX2 1
</span><span class="cx"> #endif  // VisualStudio >= 2012
</span><span class="cx"> 
</span><span class="lines">@@ -42,16 +42,17 @@
</span><span class="cx"> #endif  // clang >= 3.4
</span><span class="cx"> #endif  // __clang__
</span><span class="cx"> 
</span><del>-#if !defined(LIBYUV_DISABLE_X86) && \
-    defined(_M_IX86) && (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2))
</del><ins>+#if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && \
+    (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2))
</ins><span class="cx"> #define HAS_HASHDJB2_AVX2
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> // The following are available for Visual C and GCC:
</span><span class="cx"> #if !defined(LIBYUV_DISABLE_X86) && \
</span><del>-    (defined(__x86_64__) || (defined(__i386__) || defined(_M_IX86)))
</del><ins>+    (defined(__x86_64__) || defined(__i386__) || defined(_M_IX86))
</ins><span class="cx"> #define HAS_HASHDJB2_SSE41
</span><span class="cx"> #define HAS_SUMSQUAREERROR_SSE2
</span><ins>+#define HAS_HAMMINGDISTANCE_X86
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> // The following are available for Visual C and clangcl 32 bit:
</span><span class="lines">@@ -67,6 +68,15 @@
</span><span class="cx"> #define HAS_SUMSQUAREERROR_NEON
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+// The following are available for Neon 64 bit:
+#if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__)
+#define HAS_HAMMINGDISTANCE_NEON
+#endif
+
+uint32 HammingDistance_C(const uint8* src_a, const uint8* src_b, int count);
+uint32 HammingDistance_X86(const uint8* src_a, const uint8* src_b, int count);
+uint32 HammingDistance_NEON(const uint8* src_a, const uint8* src_b, int count);
+
</ins><span class="cx"> uint32 SumSquareError_C(const uint8* src_a, const uint8* src_b, int count);
</span><span class="cx"> uint32 SumSquareError_SSE2(const uint8* src_a, const uint8* src_b, int count);
</span><span class="cx"> uint32 SumSquareError_AVX2(const uint8* src_a, const uint8* src_b, int count);
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconverth"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert.h     2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert.h        2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -16,8 +16,8 @@
</span><span class="cx"> #include "libyuv/rotate.h"  // For enum RotationMode.
</span><span class="cx"> 
</span><span class="cx"> // TODO(fbarchard): fix WebRTC source to include following libyuv headers:
</span><del>-#include "libyuv/convert_argb.h"  // For WebRTC I420ToARGB. b/620
-#include "libyuv/convert_from.h"  // For WebRTC ConvertFromI420. b/620
</del><ins>+#include "libyuv/convert_argb.h"      // For WebRTC I420ToARGB. b/620
+#include "libyuv/convert_from.h"      // For WebRTC ConvertFromI420. b/620
</ins><span class="cx"> #include "libyuv/planar_functions.h"  // For WebRTC I420Rect, CopyPlane. b/618
</span><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="lines">@@ -27,185 +27,295 @@
</span><span class="cx"> 
</span><span class="cx"> // Convert I444 to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int I444ToI420(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int I444ToI420(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I422 to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int I422ToI420(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int I422ToI420(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Copy I420 to I420.
</span><span class="cx"> #define I420ToI420 I420Copy
</span><span class="cx"> LIBYUV_API
</span><del>-int I420Copy(const uint8* src_y, int src_stride_y,
-             const uint8* src_u, int src_stride_u,
-             const uint8* src_v, int src_stride_v,
-             uint8* dst_y, int dst_stride_y,
-             uint8* dst_u, int dst_stride_u,
-             uint8* dst_v, int dst_stride_v,
-             int width, int height);
</del><ins>+int I420Copy(const uint8* src_y,
+             int src_stride_y,
+             const uint8* src_u,
+             int src_stride_u,
+             const uint8* src_v,
+             int src_stride_v,
+             uint8* dst_y,
+             int dst_stride_y,
+             uint8* dst_u,
+             int dst_stride_u,
+             uint8* dst_v,
+             int dst_stride_v,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I400 (grey) to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int I400ToI420(const uint8* src_y, int src_stride_y,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int I400ToI420(const uint8* src_y,
+               int src_stride_y,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> #define J400ToJ420 I400ToI420
</span><span class="cx"> 
</span><span class="cx"> // Convert NV12 to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int NV12ToI420(const uint8* src_y, int src_stride_y,
-               const uint8* src_uv, int src_stride_uv,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int NV12ToI420(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_uv,
+               int src_stride_uv,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert NV21 to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int NV21ToI420(const uint8* src_y, int src_stride_y,
-               const uint8* src_vu, int src_stride_vu,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int NV21ToI420(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_vu,
+               int src_stride_vu,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert YUY2 to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int YUY2ToI420(const uint8* src_yuy2, int src_stride_yuy2,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int YUY2ToI420(const uint8* src_yuy2,
+               int src_stride_yuy2,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert UYVY to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int UYVYToI420(const uint8* src_uyvy, int src_stride_uyvy,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int UYVYToI420(const uint8* src_uyvy,
+               int src_stride_uyvy,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert M420 to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int M420ToI420(const uint8* src_m420, int src_stride_m420,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int M420ToI420(const uint8* src_m420,
+               int src_stride_m420,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert Android420 to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int Android420ToI420(const uint8* src_y, int src_stride_y,
-                     const uint8* src_u, int src_stride_u,
-                     const uint8* src_v, int src_stride_v,
</del><ins>+int Android420ToI420(const uint8* src_y,
+                     int src_stride_y,
+                     const uint8* src_u,
+                     int src_stride_u,
+                     const uint8* src_v,
+                     int src_stride_v,
</ins><span class="cx">                      int pixel_stride_uv,
</span><del>-                     uint8* dst_y, int dst_stride_y,
-                     uint8* dst_u, int dst_stride_u,
-                     uint8* dst_v, int dst_stride_v,
-                     int width, int height);
</del><ins>+                     uint8* dst_y,
+                     int dst_stride_y,
+                     uint8* dst_u,
+                     int dst_stride_u,
+                     uint8* dst_v,
+                     int dst_stride_v,
+                     int width,
+                     int height);
</ins><span class="cx"> 
</span><span class="cx"> // ARGB little endian (bgra in memory) to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToI420(const uint8* src_frame, int src_stride_frame,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int ARGBToI420(const uint8* src_frame,
+               int src_stride_frame,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // BGRA little endian (argb in memory) to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int BGRAToI420(const uint8* src_frame, int src_stride_frame,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int BGRAToI420(const uint8* src_frame,
+               int src_stride_frame,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // ABGR little endian (rgba in memory) to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int ABGRToI420(const uint8* src_frame, int src_stride_frame,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int ABGRToI420(const uint8* src_frame,
+               int src_stride_frame,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGBA little endian (abgr in memory) to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGBAToI420(const uint8* src_frame, int src_stride_frame,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int RGBAToI420(const uint8* src_frame,
+               int src_stride_frame,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB little endian (bgr in memory) to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGB24ToI420(const uint8* src_frame, int src_stride_frame,
-                uint8* dst_y, int dst_stride_y,
-                uint8* dst_u, int dst_stride_u,
-                uint8* dst_v, int dst_stride_v,
-                int width, int height);
</del><ins>+int RGB24ToI420(const uint8* src_frame,
+                int src_stride_frame,
+                uint8* dst_y,
+                int dst_stride_y,
+                uint8* dst_u,
+                int dst_stride_u,
+                uint8* dst_v,
+                int dst_stride_v,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB big endian (rgb in memory) to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int RAWToI420(const uint8* src_frame, int src_stride_frame,
-              uint8* dst_y, int dst_stride_y,
-              uint8* dst_u, int dst_stride_u,
-              uint8* dst_v, int dst_stride_v,
-              int width, int height);
</del><ins>+int RAWToI420(const uint8* src_frame,
+              int src_stride_frame,
+              uint8* dst_y,
+              int dst_stride_y,
+              uint8* dst_u,
+              int dst_stride_u,
+              uint8* dst_v,
+              int dst_stride_v,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB16 (RGBP fourcc) little endian to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGB565ToI420(const uint8* src_frame, int src_stride_frame,
-                 uint8* dst_y, int dst_stride_y,
-                 uint8* dst_u, int dst_stride_u,
-                 uint8* dst_v, int dst_stride_v,
-                 int width, int height);
</del><ins>+int RGB565ToI420(const uint8* src_frame,
+                 int src_stride_frame,
+                 uint8* dst_y,
+                 int dst_stride_y,
+                 uint8* dst_u,
+                 int dst_stride_u,
+                 uint8* dst_v,
+                 int dst_stride_v,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB15 (RGBO fourcc) little endian to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGB1555ToI420(const uint8* src_frame, int src_stride_frame,
-                   uint8* dst_y, int dst_stride_y,
-                   uint8* dst_u, int dst_stride_u,
-                   uint8* dst_v, int dst_stride_v,
-                   int width, int height);
</del><ins>+int ARGB1555ToI420(const uint8* src_frame,
+                   int src_stride_frame,
+                   uint8* dst_y,
+                   int dst_stride_y,
+                   uint8* dst_u,
+                   int dst_stride_u,
+                   uint8* dst_v,
+                   int dst_stride_v,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB12 (R444 fourcc) little endian to I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGB4444ToI420(const uint8* src_frame, int src_stride_frame,
-                   uint8* dst_y, int dst_stride_y,
-                   uint8* dst_u, int dst_stride_u,
-                   uint8* dst_v, int dst_stride_v,
-                   int width, int height);
</del><ins>+int ARGB4444ToI420(const uint8* src_frame,
+                   int src_stride_frame,
+                   uint8* dst_y,
+                   int dst_stride_y,
+                   uint8* dst_u,
+                   int dst_stride_u,
+                   uint8* dst_v,
+                   int dst_stride_v,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef HAVE_JPEG
</span><span class="cx"> // src_width/height provided by capture.
</span><span class="cx"> // dst_width/height for clipping determine final size.
</span><span class="cx"> LIBYUV_API
</span><del>-int MJPGToI420(const uint8* sample, size_t sample_size,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int src_width, int src_height,
-               int dst_width, int dst_height);
</del><ins>+int MJPGToI420(const uint8* sample,
+               size_t sample_size,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int src_width,
+               int src_height,
+               int dst_width,
+               int dst_height);
</ins><span class="cx"> 
</span><span class="cx"> // Query size of MJPG in pixels.
</span><span class="cx"> LIBYUV_API
</span><del>-int MJPGSize(const uint8* sample, size_t sample_size,
-             int* width, int* height);
</del><ins>+int MJPGSize(const uint8* sample, size_t sample_size, int* width, int* height);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> // Convert camera sample to I420 with cropping, rotation and vertical flip.
</span><span class="lines">@@ -231,13 +341,20 @@
</span><span class="cx"> // "format" is a fourcc. ie 'I420', 'YUY2'
</span><span class="cx"> // Returns 0 for successful; -1 for invalid parameter. Non-zero for failure.
</span><span class="cx"> LIBYUV_API
</span><del>-int ConvertToI420(const uint8* src_frame, size_t src_size,
-                  uint8* dst_y, int dst_stride_y,
-                  uint8* dst_u, int dst_stride_u,
-                  uint8* dst_v, int dst_stride_v,
-                  int crop_x, int crop_y,
-                  int src_width, int src_height,
-                  int crop_width, int crop_height,
</del><ins>+int ConvertToI420(const uint8* src_frame,
+                  size_t src_size,
+                  uint8* dst_y,
+                  int dst_stride_y,
+                  uint8* dst_u,
+                  int dst_stride_u,
+                  uint8* dst_v,
+                  int dst_stride_v,
+                  int crop_x,
+                  int crop_y,
+                  int src_width,
+                  int src_height,
+                  int crop_width,
+                  int crop_height,
</ins><span class="cx">                   enum RotationMode rotation,
</span><span class="cx">                   uint32 format);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconvert_argbh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_argb.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_argb.h        2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_argb.h   2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -30,87 +30,140 @@
</span><span class="cx"> 
</span><span class="cx"> // Copy ARGB to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBCopy(const uint8* src_argb, int src_stride_argb,
-             uint8* dst_argb, int dst_stride_argb,
-             int width, int height);
</del><ins>+int ARGBCopy(const uint8* src_argb,
+             int src_stride_argb,
+             uint8* dst_argb,
+             int dst_stride_argb,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I420 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I420ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Duplicate prototype for function in convert_from.h for remoting.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I420ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I422 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int I422ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I422ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I444 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int I444ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I444ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert J444 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int J444ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int J444ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I444 to ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int I444ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_abgr, int dst_stride_abgr,
-               int width, int height);
</del><ins>+int I444ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_abgr,
+               int dst_stride_abgr,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I420 with Alpha to preattenuated ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420AlphaToARGB(const uint8* src_y, int src_stride_y,
-                    const uint8* src_u, int src_stride_u,
-                    const uint8* src_v, int src_stride_v,
-                    const uint8* src_a, int src_stride_a,
-                    uint8* dst_argb, int dst_stride_argb,
-                    int width, int height, int attenuate);
</del><ins>+int I420AlphaToARGB(const uint8* src_y,
+                    int src_stride_y,
+                    const uint8* src_u,
+                    int src_stride_u,
+                    const uint8* src_v,
+                    int src_stride_v,
+                    const uint8* src_a,
+                    int src_stride_a,
+                    uint8* dst_argb,
+                    int dst_stride_argb,
+                    int width,
+                    int height,
+                    int attenuate);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I420 with Alpha to preattenuated ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420AlphaToABGR(const uint8* src_y, int src_stride_y,
-                    const uint8* src_u, int src_stride_u,
-                    const uint8* src_v, int src_stride_v,
-                    const uint8* src_a, int src_stride_a,
-                    uint8* dst_abgr, int dst_stride_abgr,
-                    int width, int height, int attenuate);
</del><ins>+int I420AlphaToABGR(const uint8* src_y,
+                    int src_stride_y,
+                    const uint8* src_u,
+                    int src_stride_u,
+                    const uint8* src_v,
+                    int src_stride_v,
+                    const uint8* src_a,
+                    int src_stride_a,
+                    uint8* dst_abgr,
+                    int dst_stride_abgr,
+                    int width,
+                    int height,
+                    int attenuate);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I400 (grey) to ARGB.  Reverse of ARGBToI400.
</span><span class="cx"> LIBYUV_API
</span><del>-int I400ToARGB(const uint8* src_y, int src_stride_y,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I400ToARGB(const uint8* src_y,
+               int src_stride_y,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert J400 (jpeg grey) to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int J400ToARGB(const uint8* src_y, int src_stride_y,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int J400ToARGB(const uint8* src_y,
+               int src_stride_y,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Alias.
</span><span class="cx"> #define YToARGB I400ToARGB
</span><span class="lines">@@ -117,117 +170,183 @@
</span><span class="cx"> 
</span><span class="cx"> // Convert NV12 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int NV12ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_uv, int src_stride_uv,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int NV12ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_uv,
+               int src_stride_uv,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert NV21 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int NV21ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_vu, int src_stride_vu,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int NV21ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_vu,
+               int src_stride_vu,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert M420 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int M420ToARGB(const uint8* src_m420, int src_stride_m420,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int M420ToARGB(const uint8* src_m420,
+               int src_stride_m420,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert YUY2 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int YUY2ToARGB(const uint8* src_yuy2, int src_stride_yuy2,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int YUY2ToARGB(const uint8* src_yuy2,
+               int src_stride_yuy2,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert UYVY to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int UYVYToARGB(const uint8* src_uyvy, int src_stride_uyvy,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int UYVYToARGB(const uint8* src_uyvy,
+               int src_stride_uyvy,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert J420 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int J420ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int J420ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert J422 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int J422ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int J422ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert J420 to ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int J420ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_abgr, int dst_stride_abgr,
-               int width, int height);
</del><ins>+int J420ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_abgr,
+               int dst_stride_abgr,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert J422 to ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int J422ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_abgr, int dst_stride_abgr,
-               int width, int height);
</del><ins>+int J422ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_abgr,
+               int dst_stride_abgr,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert H420 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int H420ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int H420ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert H422 to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int H422ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int H422ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert H420 to ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int H420ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_abgr, int dst_stride_abgr,
-               int width, int height);
</del><ins>+int H420ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_abgr,
+               int dst_stride_abgr,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert H422 to ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int H422ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_abgr, int dst_stride_abgr,
-               int width, int height);
</del><ins>+int H422ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_abgr,
+               int dst_stride_abgr,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // BGRA little endian (argb in memory) to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int BGRAToARGB(const uint8* src_frame, int src_stride_frame,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int BGRAToARGB(const uint8* src_frame,
+               int src_stride_frame,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // ABGR little endian (rgba in memory) to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ABGRToARGB(const uint8* src_frame, int src_stride_frame,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int ABGRToARGB(const uint8* src_frame,
+               int src_stride_frame,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGBA little endian (abgr in memory) to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGBAToARGB(const uint8* src_frame, int src_stride_frame,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int RGBAToARGB(const uint8* src_frame,
+               int src_stride_frame,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Deprecated function name.
</span><span class="cx"> #define BG24ToARGB RGB24ToARGB
</span><span class="lines">@@ -234,42 +353,61 @@
</span><span class="cx"> 
</span><span class="cx"> // RGB little endian (bgr in memory) to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGB24ToARGB(const uint8* src_frame, int src_stride_frame,
-                uint8* dst_argb, int dst_stride_argb,
-                int width, int height);
</del><ins>+int RGB24ToARGB(const uint8* src_frame,
+                int src_stride_frame,
+                uint8* dst_argb,
+                int dst_stride_argb,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB big endian (rgb in memory) to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int RAWToARGB(const uint8* src_frame, int src_stride_frame,
-              uint8* dst_argb, int dst_stride_argb,
-              int width, int height);
</del><ins>+int RAWToARGB(const uint8* src_frame,
+              int src_stride_frame,
+              uint8* dst_argb,
+              int dst_stride_argb,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB16 (RGBP fourcc) little endian to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGB565ToARGB(const uint8* src_frame, int src_stride_frame,
-                 uint8* dst_argb, int dst_stride_argb,
-                 int width, int height);
</del><ins>+int RGB565ToARGB(const uint8* src_frame,
+                 int src_stride_frame,
+                 uint8* dst_argb,
+                 int dst_stride_argb,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB15 (RGBO fourcc) little endian to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGB1555ToARGB(const uint8* src_frame, int src_stride_frame,
-                   uint8* dst_argb, int dst_stride_argb,
-                   int width, int height);
</del><ins>+int ARGB1555ToARGB(const uint8* src_frame,
+                   int src_stride_frame,
+                   uint8* dst_argb,
+                   int dst_stride_argb,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // RGB12 (R444 fourcc) little endian to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGB4444ToARGB(const uint8* src_frame, int src_stride_frame,
-                   uint8* dst_argb, int dst_stride_argb,
-                   int width, int height);
</del><ins>+int ARGB4444ToARGB(const uint8* src_frame,
+                   int src_stride_frame,
+                   uint8* dst_argb,
+                   int dst_stride_argb,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef HAVE_JPEG
</span><span class="cx"> // src_width/height provided by capture
</span><span class="cx"> // dst_width/height for clipping determine final size.
</span><span class="cx"> LIBYUV_API
</span><del>-int MJPGToARGB(const uint8* sample, size_t sample_size,
-               uint8* dst_argb, int dst_stride_argb,
-               int src_width, int src_height,
-               int dst_width, int dst_height);
</del><ins>+int MJPGToARGB(const uint8* sample,
+               size_t sample_size,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int src_width,
+               int src_height,
+               int dst_width,
+               int dst_height);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> // Convert camera sample to ARGB with cropping, rotation and vertical flip.
</span><span class="lines">@@ -295,11 +433,16 @@
</span><span class="cx"> // "format" is a fourcc. ie 'I420', 'YUY2'
</span><span class="cx"> // Returns 0 for successful; -1 for invalid parameter. Non-zero for failure.
</span><span class="cx"> LIBYUV_API
</span><del>-int ConvertToARGB(const uint8* src_frame, size_t src_size,
-                  uint8* dst_argb, int dst_stride_argb,
-                  int crop_x, int crop_y,
-                  int src_width, int src_height,
-                  int crop_width, int crop_height,
</del><ins>+int ConvertToARGB(const uint8* src_frame,
+                  size_t src_size,
+                  uint8* dst_argb,
+                  int dst_stride_argb,
+                  int crop_x,
+                  int crop_y,
+                  int src_width,
+                  int src_height,
+                  int crop_width,
+                  int crop_height,
</ins><span class="cx">                   enum RotationMode rotation,
</span><span class="cx">                   uint32 format);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconvert_fromh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from.h        2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from.h   2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -24,142 +24,249 @@
</span><span class="cx"> // I420Copy in convert to I420ToI420.
</span><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToI422(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int I420ToI422(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToI444(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int I420ToI444(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Copy to I400. Source can be I420, I422, I444, I400, NV12 or NV21.
</span><span class="cx"> LIBYUV_API
</span><del>-int I400Copy(const uint8* src_y, int src_stride_y,
-             uint8* dst_y, int dst_stride_y,
-             int width, int height);
</del><ins>+int I400Copy(const uint8* src_y,
+             int src_stride_y,
+             uint8* dst_y,
+             int dst_stride_y,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToNV12(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_uv, int dst_stride_uv,
-               int width, int height);
</del><ins>+int I420ToNV12(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_uv,
+               int dst_stride_uv,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToNV21(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_vu, int dst_stride_vu,
-               int width, int height);
</del><ins>+int I420ToNV21(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_vu,
+               int dst_stride_vu,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToYUY2(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_frame, int dst_stride_frame,
-               int width, int height);
</del><ins>+int I420ToYUY2(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_frame,
+               int dst_stride_frame,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToUYVY(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_frame, int dst_stride_frame,
-               int width, int height);
</del><ins>+int I420ToUYVY(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_frame,
+               int dst_stride_frame,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToARGB(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I420ToARGB(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToBGRA(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I420ToBGRA(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int I420ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToRGBA(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_rgba, int dst_stride_rgba,
-               int width, int height);
</del><ins>+int I420ToRGBA(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_rgba,
+               int dst_stride_rgba,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToRGB24(const uint8* src_y, int src_stride_y,
-                const uint8* src_u, int src_stride_u,
-                const uint8* src_v, int src_stride_v,
-                uint8* dst_frame, int dst_stride_frame,
-                int width, int height);
</del><ins>+int I420ToRGB24(const uint8* src_y,
+                int src_stride_y,
+                const uint8* src_u,
+                int src_stride_u,
+                const uint8* src_v,
+                int src_stride_v,
+                uint8* dst_frame,
+                int dst_stride_frame,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToRAW(const uint8* src_y, int src_stride_y,
-              const uint8* src_u, int src_stride_u,
-              const uint8* src_v, int src_stride_v,
-              uint8* dst_frame, int dst_stride_frame,
-              int width, int height);
</del><ins>+int I420ToRAW(const uint8* src_y,
+              int src_stride_y,
+              const uint8* src_u,
+              int src_stride_u,
+              const uint8* src_v,
+              int src_stride_v,
+              uint8* dst_frame,
+              int dst_stride_frame,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToRGB565(const uint8* src_y, int src_stride_y,
-                 const uint8* src_u, int src_stride_u,
-                 const uint8* src_v, int src_stride_v,
-                 uint8* dst_frame, int dst_stride_frame,
-                 int width, int height);
</del><ins>+int I420ToRGB565(const uint8* src_y,
+                 int src_stride_y,
+                 const uint8* src_u,
+                 int src_stride_u,
+                 const uint8* src_v,
+                 int src_stride_v,
+                 uint8* dst_frame,
+                 int dst_stride_frame,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><ins>+LIBYUV_API
+int I422ToRGB565(const uint8* src_y,
+                 int src_stride_y,
+                 const uint8* src_u,
+                 int src_stride_u,
+                 const uint8* src_v,
+                 int src_stride_v,
+                 uint8* dst_frame,
+                 int dst_stride_frame,
+                 int width,
+                 int height);
+
</ins><span class="cx"> // Convert I420 To RGB565 with 4x4 dither matrix (16 bytes).
</span><span class="cx"> // Values in dither matrix from 0 to 7 recommended.
</span><span class="cx"> // The order of the dither matrix is first byte is upper left.
</span><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToRGB565Dither(const uint8* src_y, int src_stride_y,
-                       const uint8* src_u, int src_stride_u,
-                       const uint8* src_v, int src_stride_v,
-                       uint8* dst_frame, int dst_stride_frame,
-                       const uint8* dither4x4, int width, int height);
</del><ins>+int I420ToRGB565Dither(const uint8* src_y,
+                       int src_stride_y,
+                       const uint8* src_u,
+                       int src_stride_u,
+                       const uint8* src_v,
+                       int src_stride_v,
+                       uint8* dst_frame,
+                       int dst_stride_frame,
+                       const uint8* dither4x4,
+                       int width,
+                       int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToARGB1555(const uint8* src_y, int src_stride_y,
-                   const uint8* src_u, int src_stride_u,
-                   const uint8* src_v, int src_stride_v,
-                   uint8* dst_frame, int dst_stride_frame,
-                   int width, int height);
</del><ins>+int I420ToARGB1555(const uint8* src_y,
+                   int src_stride_y,
+                   const uint8* src_u,
+                   int src_stride_u,
+                   const uint8* src_v,
+                   int src_stride_v,
+                   uint8* dst_frame,
+                   int dst_stride_frame,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToARGB4444(const uint8* src_y, int src_stride_y,
-                   const uint8* src_u, int src_stride_u,
-                   const uint8* src_v, int src_stride_v,
-                   uint8* dst_frame, int dst_stride_frame,
-                   int width, int height);
</del><ins>+int I420ToARGB4444(const uint8* src_y,
+                   int src_stride_y,
+                   const uint8* src_u,
+                   int src_stride_u,
+                   const uint8* src_v,
+                   int src_stride_v,
+                   uint8* dst_frame,
+                   int dst_stride_frame,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I420 to specified format.
</span><span class="cx"> // "dst_sample_stride" is bytes in a row for the destination. Pass 0 if the
</span><span class="cx"> //    buffer has contiguous rows. Can be negative. A multiple of 16 is optimal.
</span><span class="cx"> LIBYUV_API
</span><del>-int ConvertFromI420(const uint8* y, int y_stride,
-                    const uint8* u, int u_stride,
-                    const uint8* v, int v_stride,
-                    uint8* dst_sample, int dst_sample_stride,
-                    int width, int height,
</del><ins>+int ConvertFromI420(const uint8* y,
+                    int y_stride,
+                    const uint8* u,
+                    int u_stride,
+                    const uint8* v,
+                    int v_stride,
+                    uint8* dst_sample,
+                    int dst_sample_stride,
+                    int width,
+                    int height,
</ins><span class="cx">                     uint32 format);
</span><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvconvert_from_argbh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from_argb.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from_argb.h   2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/convert_from_argb.h      2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -21,45 +21,66 @@
</span><span class="cx"> // Copy ARGB to ARGB.
</span><span class="cx"> #define ARGBToARGB ARGBCopy
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBCopy(const uint8* src_argb, int src_stride_argb,
-             uint8* dst_argb, int dst_stride_argb,
-             int width, int height);
</del><ins>+int ARGBCopy(const uint8* src_argb,
+             int src_stride_argb,
+             uint8* dst_argb,
+             int dst_stride_argb,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To BGRA.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToBGRA(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_bgra, int dst_stride_bgra,
-               int width, int height);
</del><ins>+int ARGBToBGRA(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_bgra,
+               int dst_stride_bgra,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToABGR(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_abgr, int dst_stride_abgr,
-               int width, int height);
</del><ins>+int ARGBToABGR(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_abgr,
+               int dst_stride_abgr,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To RGBA.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToRGBA(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_rgba, int dst_stride_rgba,
-               int width, int height);
</del><ins>+int ARGBToRGBA(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_rgba,
+               int dst_stride_rgba,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To RGB24.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToRGB24(const uint8* src_argb, int src_stride_argb,
-                uint8* dst_rgb24, int dst_stride_rgb24,
-                int width, int height);
</del><ins>+int ARGBToRGB24(const uint8* src_argb,
+                int src_stride_argb,
+                uint8* dst_rgb24,
+                int dst_stride_rgb24,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To RAW.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToRAW(const uint8* src_argb, int src_stride_argb,
-              uint8* dst_rgb, int dst_stride_rgb,
-              int width, int height);
</del><ins>+int ARGBToRAW(const uint8* src_argb,
+              int src_stride_argb,
+              uint8* dst_rgb,
+              int dst_stride_rgb,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To RGB565.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToRGB565(const uint8* src_argb, int src_stride_argb,
-                 uint8* dst_rgb565, int dst_stride_rgb565,
-                 int width, int height);
</del><ins>+int ARGBToRGB565(const uint8* src_argb,
+                 int src_stride_argb,
+                 uint8* dst_rgb565,
+                 int dst_stride_rgb565,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To RGB565 with 4x4 dither matrix (16 bytes).
</span><span class="cx"> // Values in dither matrix from 0 to 7 recommended.
</span><span class="lines">@@ -67,112 +88,174 @@
</span><span class="cx"> // TODO(fbarchard): Consider pointer to 2d array for dither4x4.
</span><span class="cx"> // const uint8(*dither)[4][4];
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToRGB565Dither(const uint8* src_argb, int src_stride_argb,
-                       uint8* dst_rgb565, int dst_stride_rgb565,
-                       const uint8* dither4x4, int width, int height);
</del><ins>+int ARGBToRGB565Dither(const uint8* src_argb,
+                       int src_stride_argb,
+                       uint8* dst_rgb565,
+                       int dst_stride_rgb565,
+                       const uint8* dither4x4,
+                       int width,
+                       int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To ARGB1555.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToARGB1555(const uint8* src_argb, int src_stride_argb,
-                   uint8* dst_argb1555, int dst_stride_argb1555,
-                   int width, int height);
</del><ins>+int ARGBToARGB1555(const uint8* src_argb,
+                   int src_stride_argb,
+                   uint8* dst_argb1555,
+                   int dst_stride_argb1555,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To ARGB4444.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToARGB4444(const uint8* src_argb, int src_stride_argb,
-                   uint8* dst_argb4444, int dst_stride_argb4444,
-                   int width, int height);
</del><ins>+int ARGBToARGB4444(const uint8* src_argb,
+                   int src_stride_argb,
+                   uint8* dst_argb4444,
+                   int dst_stride_argb4444,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To I444.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToI444(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int ARGBToI444(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To I422.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToI422(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int ARGBToI422(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To I420. (also in convert.h)
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToI420(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int ARGBToI420(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB to J420. (JPeg full range I420).
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToJ420(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_yj, int dst_stride_yj,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int ARGBToJ420(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_yj,
+               int dst_stride_yj,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB to J422.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToJ422(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_yj, int dst_stride_yj,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int ARGBToJ422(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_yj,
+               int dst_stride_yj,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB to J400. (JPeg full range).
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToJ400(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_yj, int dst_stride_yj,
-               int width, int height);
</del><ins>+int ARGBToJ400(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_yj,
+               int dst_stride_yj,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB to I400.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToI400(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_y, int dst_stride_y,
-               int width, int height);
</del><ins>+int ARGBToI400(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_y,
+               int dst_stride_y,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB to G. (Reverse of J400toARGB, which replicates G back to ARGB)
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToG(const uint8* src_argb, int src_stride_argb,
-            uint8* dst_g, int dst_stride_g,
-            int width, int height);
</del><ins>+int ARGBToG(const uint8* src_argb,
+            int src_stride_argb,
+            uint8* dst_g,
+            int dst_stride_g,
+            int width,
+            int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To NV12.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToNV12(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_uv, int dst_stride_uv,
-               int width, int height);
</del><ins>+int ARGBToNV12(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_uv,
+               int dst_stride_uv,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To NV21.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToNV21(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_vu, int dst_stride_vu,
-               int width, int height);
</del><ins>+int ARGBToNV21(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_vu,
+               int dst_stride_vu,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To NV21.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToNV21(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_vu, int dst_stride_vu,
-               int width, int height);
</del><ins>+int ARGBToNV21(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_vu,
+               int dst_stride_vu,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To YUY2.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToYUY2(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_yuy2, int dst_stride_yuy2,
-               int width, int height);
</del><ins>+int ARGBToYUY2(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_yuy2,
+               int dst_stride_yuy2,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB To UYVY.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBToUYVY(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_uyvy, int dst_stride_uyvy,
-               int width, int height);
</del><ins>+int ARGBToUYVY(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_uyvy,
+               int dst_stride_uyvy,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }  // extern "C"
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvcpu_idh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/cpu_id.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/cpu_id.h      2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/cpu_id.h 2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -46,34 +46,42 @@
</span><span class="cx"> static const int kCpuHasDSPR2 = 0x20000;
</span><span class="cx"> static const int kCpuHasMSA = 0x40000;
</span><span class="cx"> 
</span><del>-// Internal function used to auto-init.
</del><ins>+// Optional init function. TestCpuFlag does an auto-init.
+// Returns cpu_info flags.
</ins><span class="cx"> LIBYUV_API
</span><span class="cx"> int InitCpuFlags(void);
</span><span class="cx"> 
</span><del>-// Internal function for parsing /proc/cpuinfo.
-LIBYUV_API
-int ArmCpuCaps(const char* cpuinfo_name);
-
</del><span class="cx"> // Detect CPU has SSE2 etc.
</span><span class="cx"> // Test_flag parameter should be one of kCpuHas constants above.
</span><del>-// returns non-zero if instruction set is detected
</del><ins>+// Returns non-zero if instruction set is detected
</ins><span class="cx"> static __inline int TestCpuFlag(int test_flag) {
</span><span class="cx">   LIBYUV_API extern int cpu_info_;
</span><del>-  return (!cpu_info_ ? InitCpuFlags() : cpu_info_) & test_flag;
</del><ins>+#ifdef __ATOMIC_RELAXED
+  int cpu_info = __atomic_load_n(&cpu_info_, __ATOMIC_RELAXED);
+#else
+  int cpu_info = cpu_info_;
+#endif
+  return (!cpu_info ? InitCpuFlags() : cpu_info) & test_flag;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// Internal function for parsing /proc/cpuinfo.
+LIBYUV_API
+int ArmCpuCaps(const char* cpuinfo_name);
+
</ins><span class="cx"> // For testing, allow CPU flags to be disabled.
</span><span class="cx"> // ie MaskCpuFlags(~kCpuHasSSSE3) to disable SSSE3.
</span><span class="cx"> // MaskCpuFlags(-1) to enable all cpu specific optimizations.
</span><span class="cx"> // MaskCpuFlags(1) to disable all cpu specific optimizations.
</span><ins>+// MaskCpuFlags(0) to reset state so next call will auto init.
+// Returns cpu_info flags.
</ins><span class="cx"> LIBYUV_API
</span><del>-void MaskCpuFlags(int enable_flags);
</del><ins>+int MaskCpuFlags(int enable_flags);
</ins><span class="cx"> 
</span><span class="cx"> // Low level cpuid for X86. Returns zeros on other CPUs.
</span><span class="cx"> // eax is the info type that you want.
</span><span class="cx"> // ecx is typically the cpu number, and should normally be zero.
</span><span class="cx"> LIBYUV_API
</span><del>-void CpuId(uint32 eax, uint32 ecx, uint32* cpu_info);
</del><ins>+void CpuId(int eax, int ecx, int* cpu_info);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }  // extern "C"
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvmacros_msah"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/macros_msa.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/macros_msa.h  2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/macros_msa.h     2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -12,15 +12,140 @@
</span><span class="cx"> #define INCLUDE_LIBYUV_MACROS_MSA_H_
</span><span class="cx"> 
</span><span class="cx"> #if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa)
</span><ins>+#include <msa.h>
</ins><span class="cx"> #include <stdint.h>
</span><del>-#include <msa.h>
</del><span class="cx"> 
</span><del>-#define LD_B(RTYPE, psrc) *((RTYPE*)(psrc))   /* NOLINT */
</del><ins>+#if (__mips_isa_rev >= 6)
+#define LW(psrc)                                    \
+  ({                                                \
+    uint8* psrc_lw_m = (uint8*)(psrc); /* NOLINT */ \
+    uint32 val_m;                                   \
+    asm volatile("lw  %[val_m],  %[psrc_lw_m]  \n"  \
+                 : [val_m] "=r"(val_m)              \
+                 : [psrc_lw_m] "m"(*psrc_lw_m));    \
+    val_m;                                          \
+  })
+
+#if (__mips == 64)
+#define LD(psrc)                                    \
+  ({                                                \
+    uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */ \
+    uint64 val_m = 0;                               \
+    asm volatile("ld  %[val_m],  %[psrc_ld_m]  \n"  \
+                 : [val_m] "=r"(val_m)              \
+                 : [psrc_ld_m] "m"(*psrc_ld_m));    \
+    val_m;                                          \
+  })
+#else  // !(__mips == 64)
+#define LD(psrc)                                                       \
+  ({                                                                   \
+    uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */                    \
+    uint32 val0_m, val1_m;                                             \
+    uint64 val_m = 0;                                                  \
+    val0_m = LW(psrc_ld_m);                                            \
+    val1_m = LW(psrc_ld_m + 4);                                        \
+    val_m = (uint64)(val1_m);                             /* NOLINT */ \
+    val_m = (uint64)((val_m << 32) & 0xFFFFFFFF00000000); /* NOLINT */ \
+    val_m = (uint64)(val_m | (uint64)val0_m);             /* NOLINT */ \
+    val_m;                                                             \
+  })
+#endif  // (__mips == 64)
+
+#define SW(val, pdst)                                   \
+  ({                                                    \
+    uint8_t* pdst_sw_m = (uint8_t*)(pdst); /* NOLINT */ \
+    uint32_t val_m = (val);                             \
+    asm volatile("sw  %[val_m],  %[pdst_sw_m]  \n"      \
+                 : [pdst_sw_m] "=m"(*pdst_sw_m)         \
+                 : [val_m] "r"(val_m));                 \
+  })
+
+#if (__mips == 64)
+#define SD(val, pdst)                                   \
+  ({                                                    \
+    uint8_t* pdst_sd_m = (uint8_t*)(pdst); /* NOLINT */ \
+    uint64_t val_m = (val);                             \
+    asm volatile("sd  %[val_m],  %[pdst_sd_m]  \n"      \
+                 : [pdst_sd_m] "=m"(*pdst_sd_m)         \
+                 : [val_m] "r"(val_m));                 \
+  })
+#else  // !(__mips == 64)
+#define SD(val, pdst)                                        \
+  ({                                                         \
+    uint8_t* pdst_sd_m = (uint8_t*)(pdst); /* NOLINT */      \
+    uint32_t val0_m, val1_m;                                 \
+    val0_m = (uint32_t)((val)&0x00000000FFFFFFFF);           \
+    val1_m = (uint32_t)(((val) >> 32) & 0x00000000FFFFFFFF); \
+    SW(val0_m, pdst_sd_m);                                   \
+    SW(val1_m, pdst_sd_m + 4);                               \
+  })
+#endif  // !(__mips == 64)
+#else   // !(__mips_isa_rev >= 6)
+#define LW(psrc)                                    \
+  ({                                                \
+    uint8* psrc_lw_m = (uint8*)(psrc); /* NOLINT */ \
+    uint32 val_m;                                   \
+    asm volatile("ulw  %[val_m],  %[psrc_lw_m]  \n" \
+                 : [val_m] "=r"(val_m)              \
+                 : [psrc_lw_m] "m"(*psrc_lw_m));    \
+    val_m;                                          \
+  })
+
+#if (__mips == 64)
+#define LD(psrc)                                    \
+  ({                                                \
+    uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */ \
+    uint64 val_m = 0;                               \
+    asm volatile("uld  %[val_m],  %[psrc_ld_m]  \n" \
+                 : [val_m] "=r"(val_m)              \
+                 : [psrc_ld_m] "m"(*psrc_ld_m));    \
+    val_m;                                          \
+  })
+#else  // !(__mips == 64)
+#define LD(psrc)                                                       \
+  ({                                                                   \
+    uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */                    \
+    uint32 val0_m, val1_m;                                             \
+    uint64 val_m = 0;                                                  \
+    val0_m = LW(psrc_ld_m);                                            \
+    val1_m = LW(psrc_ld_m + 4);                                        \
+    val_m = (uint64)(val1_m);                             /* NOLINT */ \
+    val_m = (uint64)((val_m << 32) & 0xFFFFFFFF00000000); /* NOLINT */ \
+    val_m = (uint64)(val_m | (uint64)val0_m);             /* NOLINT */ \
+    val_m;                                                             \
+  })
+#endif  // (__mips == 64)
+
+#define SW(val, pdst)                                   \
+  ({                                                    \
+    uint8_t* pdst_sw_m = (uint8_t*)(pdst); /* NOLINT */ \
+    uint32_t val_m = (val);                             \
+    asm volatile("usw  %[val_m],  %[pdst_sw_m]  \n"     \
+                 : [pdst_sw_m] "=m"(*pdst_sw_m)         \
+                 : [val_m] "r"(val_m));                 \
+  })
+
+#define SD(val, pdst)                                        \
+  ({                                                         \
+    uint8_t* pdst_sd_m = (uint8_t*)(pdst); /* NOLINT */      \
+    uint32_t val0_m, val1_m;                                 \
+    val0_m = (uint32_t)((val)&0x00000000FFFFFFFF);           \
+    val1_m = (uint32_t)(((val) >> 32) & 0x00000000FFFFFFFF); \
+    SW(val0_m, pdst_sd_m);                                   \
+    SW(val1_m, pdst_sd_m + 4);                               \
+  })
+#endif  // (__mips_isa_rev >= 6)
+
+// TODO(fbarchard): Consider removing __VAR_ARGS versions.
+#define LD_B(RTYPE, psrc) *((RTYPE*)(psrc)) /* NOLINT */
</ins><span class="cx"> #define LD_UB(...) LD_B(v16u8, __VA_ARGS__)
</span><span class="cx"> 
</span><del>-#define ST_B(RTYPE, in, pdst) *((RTYPE*)(pdst)) = (in)  /* NOLINT */
</del><ins>+#define ST_B(RTYPE, in, pdst) *((RTYPE*)(pdst)) = (in) /* NOLINT */
</ins><span class="cx"> #define ST_UB(...) ST_B(v16u8, __VA_ARGS__)
</span><span class="cx"> 
</span><ins>+#define ST_H(RTYPE, in, pdst) *((RTYPE*)(pdst)) = (in) /* NOLINT */
+#define ST_UH(...) ST_H(v8u16, __VA_ARGS__)
+
</ins><span class="cx"> /* Description : Load two vectors with 16 'byte' sized elements
</span><span class="cx">    Arguments   : Inputs  - psrc, stride
</span><span class="cx">                  Outputs - out0, out1
</span><span class="lines">@@ -28,16 +153,18 @@
</span><span class="cx">    Details     : Load 16 byte elements in 'out0' from (psrc)
</span><span class="cx">                  Load 16 byte elements in 'out1' from (psrc + stride)
</span><span class="cx"> */
</span><del>-#define LD_B2(RTYPE, psrc, stride, out0, out1) {  \
-  out0 = LD_B(RTYPE, (psrc));                     \
-  out1 = LD_B(RTYPE, (psrc) + stride);            \
-}
</del><ins>+#define LD_B2(RTYPE, psrc, stride, out0, out1) \
+  {                                            \
+    out0 = LD_B(RTYPE, (psrc));                \
+    out1 = LD_B(RTYPE, (psrc) + stride);       \
+  }
</ins><span class="cx"> #define LD_UB2(...) LD_B2(v16u8, __VA_ARGS__)
</span><span class="cx"> 
</span><del>-#define LD_B4(RTYPE, psrc, stride, out0, out1, out2, out3) {  \
-  LD_B2(RTYPE, (psrc), stride, out0, out1);                   \
-  LD_B2(RTYPE, (psrc) + 2 * stride , stride, out2, out3);     \
-}
</del><ins>+#define LD_B4(RTYPE, psrc, stride, out0, out1, out2, out3) \
+  {                                                        \
+    LD_B2(RTYPE, (psrc), stride, out0, out1);              \
+    LD_B2(RTYPE, (psrc) + 2 * stride, stride, out2, out3); \
+  }
</ins><span class="cx"> #define LD_UB4(...) LD_B4(v16u8, __VA_ARGS__)
</span><span class="cx"> 
</span><span class="cx"> /* Description : Store two vectors with stride each having 16 'byte' sized
</span><span class="lines">@@ -46,18 +173,33 @@
</span><span class="cx">    Details     : Store 16 byte elements from 'in0' to (pdst)
</span><span class="cx">                  Store 16 byte elements from 'in1' to (pdst + stride)
</span><span class="cx"> */
</span><del>-#define ST_B2(RTYPE, in0, in1, pdst, stride) {  \
-  ST_B(RTYPE, in0, (pdst));                     \
-  ST_B(RTYPE, in1, (pdst) + stride);            \
-}
</del><ins>+#define ST_B2(RTYPE, in0, in1, pdst, stride) \
+  {                                          \
+    ST_B(RTYPE, in0, (pdst));                \
+    ST_B(RTYPE, in1, (pdst) + stride);       \
+  }
</ins><span class="cx"> #define ST_UB2(...) ST_B2(v16u8, __VA_ARGS__)
</span><del>-#
-#define ST_B4(RTYPE, in0, in1, in2, in3, pdst, stride) {  \
-  ST_B2(RTYPE, in0, in1, (pdst), stride);                 \
-  ST_B2(RTYPE, in2, in3, (pdst) + 2 * stride, stride);    \
-}
</del><ins>+
+#define ST_B4(RTYPE, in0, in1, in2, in3, pdst, stride)   \
+  {                                                      \
+    ST_B2(RTYPE, in0, in1, (pdst), stride);              \
+    ST_B2(RTYPE, in2, in3, (pdst) + 2 * stride, stride); \
+  }
</ins><span class="cx"> #define ST_UB4(...) ST_B4(v16u8, __VA_ARGS__)
</span><del>-#
</del><ins>+
+/* Description : Store vectors of 8 halfword elements with stride
+   Arguments   : Inputs - in0, in1, pdst, stride
+   Details     : Store 8 halfword elements from 'in0' to (pdst)
+                 Store 8 halfword elements from 'in1' to (pdst + stride)
+*/
+#define ST_H2(RTYPE, in0, in1, pdst, stride) \
+  {                                          \
+    ST_H(RTYPE, in0, (pdst));                \
+    ST_H(RTYPE, in1, (pdst) + stride);       \
+  }
+#define ST_UH2(...) ST_H2(v8u16, __VA_ARGS__)
+
+// TODO(fbarchard): Consider using __msa_vshf_b and __msa_ilvr_b directly.
</ins><span class="cx"> /* Description : Shuffle byte vector elements as per mask vector
</span><span class="cx">    Arguments   : Inputs  - in0, in1, in2, in3, mask0, mask1
</span><span class="cx">                  Outputs - out0, out1
</span><span class="lines">@@ -65,10 +207,11 @@
</span><span class="cx">    Details     : Byte elements from 'in0' & 'in1' are copied selectively to
</span><span class="cx">                  'out0' as per control vector 'mask0'
</span><span class="cx"> */
</span><del>-#define VSHF_B2(RTYPE, in0, in1, in2, in3, mask0, mask1, out0, out1) {   \
-  out0 = (RTYPE) __msa_vshf_b((v16i8) mask0, (v16i8) in1, (v16i8) in0);  \
-  out1 = (RTYPE) __msa_vshf_b((v16i8) mask1, (v16i8) in3, (v16i8) in2);  \
-}
</del><ins>+#define VSHF_B2(RTYPE, in0, in1, in2, in3, mask0, mask1, out0, out1)  \
+  {                                                                   \
+    out0 = (RTYPE)__msa_vshf_b((v16i8)mask0, (v16i8)in1, (v16i8)in0); \
+    out1 = (RTYPE)__msa_vshf_b((v16i8)mask1, (v16i8)in3, (v16i8)in2); \
+  }
</ins><span class="cx"> #define VSHF_B2_UB(...) VSHF_B2(v16u8, __VA_ARGS__)
</span><span class="cx"> 
</span><span class="cx"> /* Description : Interleave both left and right half of input vectors
</span><span class="lines">@@ -78,12 +221,13 @@
</span><span class="cx">    Details     : Right half of byte elements from 'in0' and 'in1' are
</span><span class="cx">                  interleaved and written to 'out0'
</span><span class="cx"> */
</span><del>-#define ILVRL_B2(RTYPE, in0, in1, out0, out1) {           \
-  out0 = (RTYPE) __msa_ilvr_b((v16i8) in0, (v16i8) in1);  \
-  out1 = (RTYPE) __msa_ilvl_b((v16i8) in0, (v16i8) in1);  \
-}
</del><ins>+#define ILVRL_B2(RTYPE, in0, in1, out0, out1)           \
+  {                                                     \
+    out0 = (RTYPE)__msa_ilvr_b((v16i8)in0, (v16i8)in1); \
+    out1 = (RTYPE)__msa_ilvl_b((v16i8)in0, (v16i8)in1); \
+  }
</ins><span class="cx"> #define ILVRL_B2_UB(...) ILVRL_B2(v16u8, __VA_ARGS__)
</span><span class="cx"> 
</span><del>-#endif  /* !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) */
</del><ins>+#endif /* !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) */
</ins><span class="cx"> 
</span><span class="cx"> #endif  // INCLUDE_LIBYUV_MACROS_MSA_H_
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvmjpeg_decoderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/mjpeg_decoder.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/mjpeg_decoder.h       2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/mjpeg_decoder.h  2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -144,12 +144,16 @@
</span><span class="cx">   // callback function. Each call will get the data for a whole number of
</span><span class="cx">   // image scanlines.
</span><span class="cx">   // TODO(fbarchard): Add dst_x, dst_y to allow specific rect to be decoded.
</span><del>-  LIBYUV_BOOL DecodeToCallback(CallbackFunction fn, void* opaque,
-                        int dst_width, int dst_height);
</del><ins>+  LIBYUV_BOOL DecodeToCallback(CallbackFunction fn,
+                               void* opaque,
+                               int dst_width,
+                               int dst_height);
</ins><span class="cx"> 
</span><span class="cx">   // The helper function which recognizes the jpeg sub-sampling type.
</span><span class="cx">   static JpegSubsamplingType JpegSubsamplingTypeHelper(
</span><del>-     int* subsample_x, int* subsample_y, int number_of_components);
</del><ins>+      int* subsample_x,
+      int* subsample_y,
+      int number_of_components);
</ins><span class="cx"> 
</span><span class="cx">  private:
</span><span class="cx">   void AllocOutputBuffers(int num_outbufs);
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvplanar_functionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/planar_functions.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/planar_functions.h    2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/planar_functions.h       2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -24,40 +24,59 @@
</span><span class="cx"> 
</span><span class="cx"> // Copy a plane of data.
</span><span class="cx"> LIBYUV_API
</span><del>-void CopyPlane(const uint8* src_y, int src_stride_y,
-               uint8* dst_y, int dst_stride_y,
-               int width, int height);
</del><ins>+void CopyPlane(const uint8* src_y,
+               int src_stride_y,
+               uint8* dst_y,
+               int dst_stride_y,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-void CopyPlane_16(const uint16* src_y, int src_stride_y,
-                  uint16* dst_y, int dst_stride_y,
-                  int width, int height);
</del><ins>+void CopyPlane_16(const uint16* src_y,
+                  int src_stride_y,
+                  uint16* dst_y,
+                  int dst_stride_y,
+                  int width,
+                  int height);
</ins><span class="cx"> 
</span><span class="cx"> // Set a plane of data to a 32 bit value.
</span><span class="cx"> LIBYUV_API
</span><del>-void SetPlane(uint8* dst_y, int dst_stride_y,
-              int width, int height,
</del><ins>+void SetPlane(uint8* dst_y,
+              int dst_stride_y,
+              int width,
+              int height,
</ins><span class="cx">               uint32 value);
</span><span class="cx"> 
</span><span class="cx"> // Split interleaved UV plane into separate U and V planes.
</span><span class="cx"> LIBYUV_API
</span><del>-void SplitUVPlane(const uint8* src_uv, int src_stride_uv,
-                  uint8* dst_u, int dst_stride_u,
-                  uint8* dst_v, int dst_stride_v,
-                  int width, int height);
</del><ins>+void SplitUVPlane(const uint8* src_uv,
+                  int src_stride_uv,
+                  uint8* dst_u,
+                  int dst_stride_u,
+                  uint8* dst_v,
+                  int dst_stride_v,
+                  int width,
+                  int height);
</ins><span class="cx"> 
</span><span class="cx"> // Merge separate U and V planes into one interleaved UV plane.
</span><span class="cx"> LIBYUV_API
</span><del>-void MergeUVPlane(const uint8* src_u, int src_stride_u,
-                  const uint8* src_v, int src_stride_v,
-                  uint8* dst_uv, int dst_stride_uv,
-                  int width, int height);
</del><ins>+void MergeUVPlane(const uint8* src_u,
+                  int src_stride_u,
+                  const uint8* src_v,
+                  int src_stride_v,
+                  uint8* dst_uv,
+                  int dst_stride_uv,
+                  int width,
+                  int height);
</ins><span class="cx"> 
</span><span class="cx"> // Copy I400.  Supports inverting.
</span><span class="cx"> LIBYUV_API
</span><del>-int I400ToI400(const uint8* src_y, int src_stride_y,
-               uint8* dst_y, int dst_stride_y,
-               int width, int height);
</del><ins>+int I400ToI400(const uint8* src_y,
+               int src_stride_y,
+               uint8* dst_y,
+               int dst_stride_y,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> #define J400ToJ400 I400ToI400
</span><span class="cx"> 
</span><span class="lines">@@ -64,65 +83,105 @@
</span><span class="cx"> // Copy I422 to I422.
</span><span class="cx"> #define I422ToI422 I422Copy
</span><span class="cx"> LIBYUV_API
</span><del>-int I422Copy(const uint8* src_y, int src_stride_y,
-             const uint8* src_u, int src_stride_u,
-             const uint8* src_v, int src_stride_v,
-             uint8* dst_y, int dst_stride_y,
-             uint8* dst_u, int dst_stride_u,
-             uint8* dst_v, int dst_stride_v,
-             int width, int height);
</del><ins>+int I422Copy(const uint8* src_y,
+             int src_stride_y,
+             const uint8* src_u,
+             int src_stride_u,
+             const uint8* src_v,
+             int src_stride_v,
+             uint8* dst_y,
+             int dst_stride_y,
+             uint8* dst_u,
+             int dst_stride_u,
+             uint8* dst_v,
+             int dst_stride_v,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Copy I444 to I444.
</span><span class="cx"> #define I444ToI444 I444Copy
</span><span class="cx"> LIBYUV_API
</span><del>-int I444Copy(const uint8* src_y, int src_stride_y,
-             const uint8* src_u, int src_stride_u,
-             const uint8* src_v, int src_stride_v,
-             uint8* dst_y, int dst_stride_y,
-             uint8* dst_u, int dst_stride_u,
-             uint8* dst_v, int dst_stride_v,
-             int width, int height);
</del><ins>+int I444Copy(const uint8* src_y,
+             int src_stride_y,
+             const uint8* src_u,
+             int src_stride_u,
+             const uint8* src_v,
+             int src_stride_v,
+             uint8* dst_y,
+             int dst_stride_y,
+             uint8* dst_u,
+             int dst_stride_u,
+             uint8* dst_v,
+             int dst_stride_v,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert YUY2 to I422.
</span><span class="cx"> LIBYUV_API
</span><del>-int YUY2ToI422(const uint8* src_yuy2, int src_stride_yuy2,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int YUY2ToI422(const uint8* src_yuy2,
+               int src_stride_yuy2,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert UYVY to I422.
</span><span class="cx"> LIBYUV_API
</span><del>-int UYVYToI422(const uint8* src_uyvy, int src_stride_uyvy,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int UYVYToI422(const uint8* src_uyvy,
+               int src_stride_uyvy,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int YUY2ToNV12(const uint8* src_yuy2, int src_stride_yuy2,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_uv, int dst_stride_uv,
-               int width, int height);
</del><ins>+int YUY2ToNV12(const uint8* src_yuy2,
+               int src_stride_yuy2,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_uv,
+               int dst_stride_uv,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int UYVYToNV12(const uint8* src_uyvy, int src_stride_uyvy,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_uv, int dst_stride_uv,
-               int width, int height);
</del><ins>+int UYVYToNV12(const uint8* src_uyvy,
+               int src_stride_uyvy,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_uv,
+               int dst_stride_uv,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int YUY2ToY(const uint8* src_yuy2, int src_stride_yuy2,
-             uint8* dst_y, int dst_stride_y,
-             int width, int height);
</del><ins>+int YUY2ToY(const uint8* src_yuy2,
+            int src_stride_yuy2,
+            uint8* dst_y,
+            int dst_stride_y,
+            int width,
+            int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I420 to I400. (calls CopyPlane ignoring u/v).
</span><span class="cx"> LIBYUV_API
</span><del>-int I420ToI400(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               int width, int height);
</del><ins>+int I420ToI400(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Alias
</span><span class="cx"> #define J420ToJ400 I420ToI400
</span><span class="lines">@@ -130,13 +189,20 @@
</span><span class="cx"> 
</span><span class="cx"> // I420 mirror.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420Mirror(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int width, int height);
</del><ins>+int I420Mirror(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Alias
</span><span class="cx"> #define I400ToI400Mirror I400Mirror
</span><span class="lines">@@ -144,9 +210,12 @@
</span><span class="cx"> // I400 mirror.  A single plane is mirrored horizontally.
</span><span class="cx"> // Pass negative height to achieve 180 degree rotation.
</span><span class="cx"> LIBYUV_API
</span><del>-int I400Mirror(const uint8* src_y, int src_stride_y,
-               uint8* dst_y, int dst_stride_y,
-               int width, int height);
</del><ins>+int I400Mirror(const uint8* src_y,
+               int src_stride_y,
+               uint8* dst_y,
+               int dst_stride_y,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Alias
</span><span class="cx"> #define ARGBToARGBMirror ARGBMirror
</span><span class="lines">@@ -153,78 +222,127 @@
</span><span class="cx"> 
</span><span class="cx"> // ARGB mirror.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBMirror(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int ARGBMirror(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert NV12 to RGB565.
</span><span class="cx"> LIBYUV_API
</span><del>-int NV12ToRGB565(const uint8* src_y, int src_stride_y,
-                 const uint8* src_uv, int src_stride_uv,
-                 uint8* dst_rgb565, int dst_stride_rgb565,
-                 int width, int height);
</del><ins>+int NV12ToRGB565(const uint8* src_y,
+                 int src_stride_y,
+                 const uint8* src_uv,
+                 int src_stride_uv,
+                 uint8* dst_rgb565,
+                 int dst_stride_rgb565,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // I422ToARGB is in convert_argb.h
</span><span class="cx"> // Convert I422 to BGRA.
</span><span class="cx"> LIBYUV_API
</span><del>-int I422ToBGRA(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_bgra, int dst_stride_bgra,
-               int width, int height);
</del><ins>+int I422ToBGRA(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_bgra,
+               int dst_stride_bgra,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I422 to ABGR.
</span><span class="cx"> LIBYUV_API
</span><del>-int I422ToABGR(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_abgr, int dst_stride_abgr,
-               int width, int height);
</del><ins>+int I422ToABGR(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_abgr,
+               int dst_stride_abgr,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I422 to RGBA.
</span><span class="cx"> LIBYUV_API
</span><del>-int I422ToRGBA(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_rgba, int dst_stride_rgba,
-               int width, int height);
</del><ins>+int I422ToRGBA(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_rgba,
+               int dst_stride_rgba,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Alias
</span><span class="cx"> #define RGB24ToRAW RAWToRGB24
</span><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int RAWToRGB24(const uint8* src_raw, int src_stride_raw,
-               uint8* dst_rgb24, int dst_stride_rgb24,
-               int width, int height);
</del><ins>+int RAWToRGB24(const uint8* src_raw,
+               int src_stride_raw,
+               uint8* dst_rgb24,
+               int dst_stride_rgb24,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Draw a rectangle into I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420Rect(uint8* dst_y, int dst_stride_y,
-             uint8* dst_u, int dst_stride_u,
-             uint8* dst_v, int dst_stride_v,
-             int x, int y, int width, int height,
-             int value_y, int value_u, int value_v);
</del><ins>+int I420Rect(uint8* dst_y,
+             int dst_stride_y,
+             uint8* dst_u,
+             int dst_stride_u,
+             uint8* dst_v,
+             int dst_stride_v,
+             int x,
+             int y,
+             int width,
+             int height,
+             int value_y,
+             int value_u,
+             int value_v);
</ins><span class="cx"> 
</span><span class="cx"> // Draw a rectangle into ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBRect(uint8* dst_argb, int dst_stride_argb,
-             int x, int y, int width, int height, uint32 value);
</del><ins>+int ARGBRect(uint8* dst_argb,
+             int dst_stride_argb,
+             int x,
+             int y,
+             int width,
+             int height,
+             uint32 value);
</ins><span class="cx"> 
</span><span class="cx"> // Convert ARGB to gray scale ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBGrayTo(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_argb, int dst_stride_argb,
-               int width, int height);
</del><ins>+int ARGBGrayTo(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Make a rectangle of ARGB gray scale.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBGray(uint8* dst_argb, int dst_stride_argb,
-             int x, int y, int width, int height);
</del><ins>+int ARGBGray(uint8* dst_argb,
+             int dst_stride_argb,
+             int x,
+             int y,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Make a rectangle of ARGB Sepia tone.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBSepia(uint8* dst_argb, int dst_stride_argb,
-              int x, int y, int width, int height);
</del><ins>+int ARGBSepia(uint8* dst_argb,
+              int dst_stride_argb,
+              int x,
+              int y,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> // Apply a matrix rotation to each ARGB pixel.
</span><span class="cx"> // matrix_argb is 4 signed ARGB values. -128 to 127 representing -2 to 2.
</span><span class="lines">@@ -233,10 +351,13 @@
</span><span class="cx"> // The next 4 coefficients apply to B, G, R, A and produce R of the output.
</span><span class="cx"> // The last 4 coefficients apply to B, G, R, A and produce A of the output.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBColorMatrix(const uint8* src_argb, int src_stride_argb,
-                    uint8* dst_argb, int dst_stride_argb,
</del><ins>+int ARGBColorMatrix(const uint8* src_argb,
+                    int src_stride_argb,
+                    uint8* dst_argb,
+                    int dst_stride_argb,
</ins><span class="cx">                     const int8* matrix_argb,
</span><del>-                    int width, int height);
</del><ins>+                    int width,
+                    int height);
</ins><span class="cx"> 
</span><span class="cx"> // Deprecated. Use ARGBColorMatrix instead.
</span><span class="cx"> // Apply a matrix rotation to each ARGB pixel.
</span><span class="lines">@@ -245,32 +366,47 @@
</span><span class="cx"> // The next 4 coefficients apply to B, G, R, A and produce G of the output.
</span><span class="cx"> // The last 4 coefficients apply to B, G, R, A and produce R of the output.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGBColorMatrix(uint8* dst_argb, int dst_stride_argb,
</del><ins>+int RGBColorMatrix(uint8* dst_argb,
+                   int dst_stride_argb,
</ins><span class="cx">                    const int8* matrix_rgb,
</span><del>-                   int x, int y, int width, int height);
</del><ins>+                   int x,
+                   int y,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // Apply a color table each ARGB pixel.
</span><span class="cx"> // Table contains 256 ARGB values.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBColorTable(uint8* dst_argb, int dst_stride_argb,
</del><ins>+int ARGBColorTable(uint8* dst_argb,
+                   int dst_stride_argb,
</ins><span class="cx">                    const uint8* table_argb,
</span><del>-                   int x, int y, int width, int height);
</del><ins>+                   int x,
+                   int y,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // Apply a color table each ARGB pixel but preserve destination alpha.
</span><span class="cx"> // Table contains 256 ARGB values.
</span><span class="cx"> LIBYUV_API
</span><del>-int RGBColorTable(uint8* dst_argb, int dst_stride_argb,
</del><ins>+int RGBColorTable(uint8* dst_argb,
+                  int dst_stride_argb,
</ins><span class="cx">                   const uint8* table_argb,
</span><del>-                  int x, int y, int width, int height);
</del><ins>+                  int x,
+                  int y,
+                  int width,
+                  int height);
</ins><span class="cx"> 
</span><span class="cx"> // Apply a luma/color table each ARGB pixel but preserve destination alpha.
</span><span class="cx"> // Table contains 32768 values indexed by [Y][C] where 7 it 7 bit luma from
</span><span class="cx"> // RGB (YJ style) and C is an 8 bit color component (R, G or B).
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBLumaColorTable(const uint8* src_argb, int src_stride_argb,
-                       uint8* dst_argb, int dst_stride_argb,
</del><ins>+int ARGBLumaColorTable(const uint8* src_argb,
+                       int src_stride_argb,
+                       uint8* dst_argb,
+                       int dst_stride_argb,
</ins><span class="cx">                        const uint8* luma_rgb_table,
</span><del>-                       int width, int height);
</del><ins>+                       int width,
+                       int height);
</ins><span class="cx"> 
</span><span class="cx"> // Apply a 3 term polynomial to ARGB values.
</span><span class="cx"> // poly points to a 4x4 matrix.  The first row is constants.  The 2nd row is
</span><span class="lines">@@ -281,18 +417,24 @@
</span><span class="cx"> // A polynomial approximation can be dirived using software such as 'R'.
</span><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBPolynomial(const uint8* src_argb, int src_stride_argb,
-                   uint8* dst_argb, int dst_stride_argb,
</del><ins>+int ARGBPolynomial(const uint8* src_argb,
+                   int src_stride_argb,
+                   uint8* dst_argb,
+                   int dst_stride_argb,
</ins><span class="cx">                    const float* poly,
</span><del>-                   int width, int height);
</del><ins>+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert plane of 16 bit shorts to half floats.
</span><span class="cx"> // Source values are multiplied by scale before storing as half float.
</span><span class="cx"> LIBYUV_API
</span><del>-int HalfFloatPlane(const uint16* src_y, int src_stride_y,
-                   uint16* dst_y, int dst_stride_y,
</del><ins>+int HalfFloatPlane(const uint16* src_y,
+                   int src_stride_y,
+                   uint16* dst_y,
+                   int dst_stride_y,
</ins><span class="cx">                    float scale,
</span><del>-                   int width, int height);
</del><ins>+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> // Quantize a rectangle of ARGB. Alpha unaffected.
</span><span class="cx"> // scale is a 16 bit fractional fixed point scaler between 0 and 65535.
</span><span class="lines">@@ -299,36 +441,56 @@
</span><span class="cx"> // interval_size should be a value between 1 and 255.
</span><span class="cx"> // interval_offset should be a value between 0 and 255.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBQuantize(uint8* dst_argb, int dst_stride_argb,
-                 int scale, int interval_size, int interval_offset,
-                 int x, int y, int width, int height);
</del><ins>+int ARGBQuantize(uint8* dst_argb,
+                 int dst_stride_argb,
+                 int scale,
+                 int interval_size,
+                 int interval_offset,
+                 int x,
+                 int y,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // Copy ARGB to ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBCopy(const uint8* src_argb, int src_stride_argb,
-             uint8* dst_argb, int dst_stride_argb,
-             int width, int height);
</del><ins>+int ARGBCopy(const uint8* src_argb,
+             int src_stride_argb,
+             uint8* dst_argb,
+             int dst_stride_argb,
+             int width,
+             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Copy Alpha channel of ARGB to alpha of ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBCopyAlpha(const uint8* src_argb, int src_stride_argb,
-                  uint8* dst_argb, int dst_stride_argb,
-                  int width, int height);
</del><ins>+int ARGBCopyAlpha(const uint8* src_argb,
+                  int src_stride_argb,
+                  uint8* dst_argb,
+                  int dst_stride_argb,
+                  int width,
+                  int height);
</ins><span class="cx"> 
</span><span class="cx"> // Extract the alpha channel from ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBExtractAlpha(const uint8* src_argb, int src_stride_argb,
-                     uint8* dst_a, int dst_stride_a,
-                     int width, int height);
</del><ins>+int ARGBExtractAlpha(const uint8* src_argb,
+                     int src_stride_argb,
+                     uint8* dst_a,
+                     int dst_stride_a,
+                     int width,
+                     int height);
</ins><span class="cx"> 
</span><span class="cx"> // Copy Y channel to Alpha of ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBCopyYToAlpha(const uint8* src_y, int src_stride_y,
-                     uint8* dst_argb, int dst_stride_argb,
-                     int width, int height);
</del><ins>+int ARGBCopyYToAlpha(const uint8* src_y,
+                     int src_stride_y,
+                     uint8* dst_argb,
+                     int dst_stride_argb,
+                     int width,
+                     int height);
</ins><span class="cx"> 
</span><del>-typedef void (*ARGBBlendRow)(const uint8* src_argb0, const uint8* src_argb1,
-                             uint8* dst_argb, int width);
</del><ins>+typedef void (*ARGBBlendRow)(const uint8* src_argb0,
+                             const uint8* src_argb1,
+                             uint8* dst_argb,
+                             int width);
</ins><span class="cx"> 
</span><span class="cx"> // Get function to Alpha Blend ARGB pixels and store to destination.
</span><span class="cx"> LIBYUV_API
</span><span class="lines">@@ -338,92 +500,143 @@
</span><span class="cx"> // Source is pre-multiplied by alpha using ARGBAttenuate.
</span><span class="cx"> // Alpha of destination is set to 255.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBBlend(const uint8* src_argb0, int src_stride_argb0,
-              const uint8* src_argb1, int src_stride_argb1,
-              uint8* dst_argb, int dst_stride_argb,
-              int width, int height);
</del><ins>+int ARGBBlend(const uint8* src_argb0,
+              int src_stride_argb0,
+              const uint8* src_argb1,
+              int src_stride_argb1,
+              uint8* dst_argb,
+              int dst_stride_argb,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> // Alpha Blend plane and store to destination.
</span><span class="cx"> // Source is not pre-multiplied by alpha.
</span><span class="cx"> LIBYUV_API
</span><del>-int BlendPlane(const uint8* src_y0, int src_stride_y0,
-               const uint8* src_y1, int src_stride_y1,
-               const uint8* alpha, int alpha_stride,
-               uint8* dst_y, int dst_stride_y,
-               int width, int height);
</del><ins>+int BlendPlane(const uint8* src_y0,
+               int src_stride_y0,
+               const uint8* src_y1,
+               int src_stride_y1,
+               const uint8* alpha,
+               int alpha_stride,
+               uint8* dst_y,
+               int dst_stride_y,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Alpha Blend YUV images and store to destination.
</span><span class="cx"> // Source is not pre-multiplied by alpha.
</span><span class="cx"> // Alpha is full width x height and subsampled to half size to apply to UV.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420Blend(const uint8* src_y0, int src_stride_y0,
-              const uint8* src_u0, int src_stride_u0,
-              const uint8* src_v0, int src_stride_v0,
-              const uint8* src_y1, int src_stride_y1,
-              const uint8* src_u1, int src_stride_u1,
-              const uint8* src_v1, int src_stride_v1,
-              const uint8* alpha, int alpha_stride,
-              uint8* dst_y, int dst_stride_y,
-              uint8* dst_u, int dst_stride_u,
-              uint8* dst_v, int dst_stride_v,
-              int width, int height);
</del><ins>+int I420Blend(const uint8* src_y0,
+              int src_stride_y0,
+              const uint8* src_u0,
+              int src_stride_u0,
+              const uint8* src_v0,
+              int src_stride_v0,
+              const uint8* src_y1,
+              int src_stride_y1,
+              const uint8* src_u1,
+              int src_stride_u1,
+              const uint8* src_v1,
+              int src_stride_v1,
+              const uint8* alpha,
+              int alpha_stride,
+              uint8* dst_y,
+              int dst_stride_y,
+              uint8* dst_u,
+              int dst_stride_u,
+              uint8* dst_v,
+              int dst_stride_v,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> // Multiply ARGB image by ARGB image. Shifted down by 8. Saturates to 255.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBMultiply(const uint8* src_argb0, int src_stride_argb0,
-                 const uint8* src_argb1, int src_stride_argb1,
-                 uint8* dst_argb, int dst_stride_argb,
-                 int width, int height);
</del><ins>+int ARGBMultiply(const uint8* src_argb0,
+                 int src_stride_argb0,
+                 const uint8* src_argb1,
+                 int src_stride_argb1,
+                 uint8* dst_argb,
+                 int dst_stride_argb,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // Add ARGB image with ARGB image. Saturates to 255.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBAdd(const uint8* src_argb0, int src_stride_argb0,
-            const uint8* src_argb1, int src_stride_argb1,
-            uint8* dst_argb, int dst_stride_argb,
-            int width, int height);
</del><ins>+int ARGBAdd(const uint8* src_argb0,
+            int src_stride_argb0,
+            const uint8* src_argb1,
+            int src_stride_argb1,
+            uint8* dst_argb,
+            int dst_stride_argb,
+            int width,
+            int height);
</ins><span class="cx"> 
</span><span class="cx"> // Subtract ARGB image (argb1) from ARGB image (argb0). Saturates to 0.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBSubtract(const uint8* src_argb0, int src_stride_argb0,
-                 const uint8* src_argb1, int src_stride_argb1,
-                 uint8* dst_argb, int dst_stride_argb,
-                 int width, int height);
</del><ins>+int ARGBSubtract(const uint8* src_argb0,
+                 int src_stride_argb0,
+                 const uint8* src_argb1,
+                 int src_stride_argb1,
+                 uint8* dst_argb,
+                 int dst_stride_argb,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I422 to YUY2.
</span><span class="cx"> LIBYUV_API
</span><del>-int I422ToYUY2(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_frame, int dst_stride_frame,
-               int width, int height);
</del><ins>+int I422ToYUY2(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_frame,
+               int dst_stride_frame,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert I422 to UYVY.
</span><span class="cx"> LIBYUV_API
</span><del>-int I422ToUYVY(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_frame, int dst_stride_frame,
-               int width, int height);
</del><ins>+int I422ToUYVY(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_frame,
+               int dst_stride_frame,
+               int width,
+               int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert unattentuated ARGB to preattenuated ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBAttenuate(const uint8* src_argb, int src_stride_argb,
-                  uint8* dst_argb, int dst_stride_argb,
-                  int width, int height);
</del><ins>+int ARGBAttenuate(const uint8* src_argb,
+                  int src_stride_argb,
+                  uint8* dst_argb,
+                  int dst_stride_argb,
+                  int width,
+                  int height);
</ins><span class="cx"> 
</span><span class="cx"> // Convert preattentuated ARGB to unattenuated ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBUnattenuate(const uint8* src_argb, int src_stride_argb,
-                    uint8* dst_argb, int dst_stride_argb,
-                    int width, int height);
</del><ins>+int ARGBUnattenuate(const uint8* src_argb,
+                    int src_stride_argb,
+                    uint8* dst_argb,
+                    int dst_stride_argb,
+                    int width,
+                    int height);
</ins><span class="cx"> 
</span><span class="cx"> // Internal function - do not call directly.
</span><span class="cx"> // Computes table of cumulative sum for image where the value is the sum
</span><span class="cx"> // of all values above and to the left of the entry. Used by ARGBBlur.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBComputeCumulativeSum(const uint8* src_argb, int src_stride_argb,
-                             int32* dst_cumsum, int dst_stride32_cumsum,
-                             int width, int height);
</del><ins>+int ARGBComputeCumulativeSum(const uint8* src_argb,
+                             int src_stride_argb,
+                             int32* dst_cumsum,
+                             int dst_stride32_cumsum,
+                             int width,
+                             int height);
</ins><span class="cx"> 
</span><span class="cx"> // Blur ARGB image.
</span><span class="cx"> // dst_cumsum table of width * (height + 1) * 16 bytes aligned to
</span><span class="lines">@@ -432,16 +645,25 @@
</span><span class="cx"> // radius is number of pixels around the center.  e.g. 1 = 3x3. 2=5x5.
</span><span class="cx"> // Blur is optimized for radius of 5 (11x11) or less.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBBlur(const uint8* src_argb, int src_stride_argb,
-             uint8* dst_argb, int dst_stride_argb,
-             int32* dst_cumsum, int dst_stride32_cumsum,
-             int width, int height, int radius);
</del><ins>+int ARGBBlur(const uint8* src_argb,
+             int src_stride_argb,
+             uint8* dst_argb,
+             int dst_stride_argb,
+             int32* dst_cumsum,
+             int dst_stride32_cumsum,
+             int width,
+             int height,
+             int radius);
</ins><span class="cx"> 
</span><span class="cx"> // Multiply ARGB image by ARGB value.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBShade(const uint8* src_argb, int src_stride_argb,
-              uint8* dst_argb, int dst_stride_argb,
-              int width, int height, uint32 value);
</del><ins>+int ARGBShade(const uint8* src_argb,
+              int src_stride_argb,
+              uint8* dst_argb,
+              int dst_stride_argb,
+              int width,
+              int height,
+              uint32 value);
</ins><span class="cx"> 
</span><span class="cx"> // Interpolate between two images using specified amount of interpolation
</span><span class="cx"> // (0 to 255) and store to destination.
</span><span class="lines">@@ -448,33 +670,54 @@
</span><span class="cx"> // 'interpolation' is specified as 8 bit fraction where 0 means 100% src0
</span><span class="cx"> // and 255 means 1% src0 and 99% src1.
</span><span class="cx"> LIBYUV_API
</span><del>-int InterpolatePlane(const uint8* src0, int src_stride0,
-                     const uint8* src1, int src_stride1,
-                     uint8* dst, int dst_stride,
-                     int width, int height, int interpolation);
</del><ins>+int InterpolatePlane(const uint8* src0,
+                     int src_stride0,
+                     const uint8* src1,
+                     int src_stride1,
+                     uint8* dst,
+                     int dst_stride,
+                     int width,
+                     int height,
+                     int interpolation);
</ins><span class="cx"> 
</span><span class="cx"> // Interpolate between two ARGB images using specified amount of interpolation
</span><span class="cx"> // Internally calls InterpolatePlane with width * 4 (bpp).
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBInterpolate(const uint8* src_argb0, int src_stride_argb0,
-                    const uint8* src_argb1, int src_stride_argb1,
-                    uint8* dst_argb, int dst_stride_argb,
-                    int width, int height, int interpolation);
</del><ins>+int ARGBInterpolate(const uint8* src_argb0,
+                    int src_stride_argb0,
+                    const uint8* src_argb1,
+                    int src_stride_argb1,
+                    uint8* dst_argb,
+                    int dst_stride_argb,
+                    int width,
+                    int height,
+                    int interpolation);
</ins><span class="cx"> 
</span><span class="cx"> // Interpolate between two YUV images using specified amount of interpolation
</span><span class="cx"> // Internally calls InterpolatePlane on each plane where the U and V planes
</span><span class="cx"> // are half width and half height.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420Interpolate(const uint8* src0_y, int src0_stride_y,
-                    const uint8* src0_u, int src0_stride_u,
-                    const uint8* src0_v, int src0_stride_v,
-                    const uint8* src1_y, int src1_stride_y,
-                    const uint8* src1_u, int src1_stride_u,
-                    const uint8* src1_v, int src1_stride_v,
-                    uint8* dst_y, int dst_stride_y,
-                    uint8* dst_u, int dst_stride_u,
-                    uint8* dst_v, int dst_stride_v,
-                    int width, int height, int interpolation);
</del><ins>+int I420Interpolate(const uint8* src0_y,
+                    int src0_stride_y,
+                    const uint8* src0_u,
+                    int src0_stride_u,
+                    const uint8* src0_v,
+                    int src0_stride_v,
+                    const uint8* src1_y,
+                    int src1_stride_y,
+                    const uint8* src1_u,
+                    int src1_stride_u,
+                    const uint8* src1_v,
+                    int src1_stride_v,
+                    uint8* dst_y,
+                    int dst_stride_y,
+                    uint8* dst_u,
+                    int dst_stride_u,
+                    uint8* dst_v,
+                    int dst_stride_v,
+                    int width,
+                    int height,
+                    int interpolation);
</ins><span class="cx"> 
</span><span class="cx"> #if defined(__pnacl__) || defined(__CLR_VER) || \
</span><span class="cx">     (defined(__i386__) && !defined(__SSE2__))
</span><span class="lines">@@ -495,36 +738,55 @@
</span><span class="cx"> // Row function for copying pixels from a source with a slope to a row
</span><span class="cx"> // of destination. Useful for scaling, rotation, mirror, texture mapping.
</span><span class="cx"> LIBYUV_API
</span><del>-void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride,
-                     uint8* dst_argb, const float* uv_dudv, int width);
</del><ins>+void ARGBAffineRow_C(const uint8* src_argb,
+                     int src_argb_stride,
+                     uint8* dst_argb,
+                     const float* uv_dudv,
+                     int width);
</ins><span class="cx"> LIBYUV_API
</span><del>-void ARGBAffineRow_SSE2(const uint8* src_argb, int src_argb_stride,
-                        uint8* dst_argb, const float* uv_dudv, int width);
</del><ins>+void ARGBAffineRow_SSE2(const uint8* src_argb,
+                        int src_argb_stride,
+                        uint8* dst_argb,
+                        const float* uv_dudv,
+                        int width);
</ins><span class="cx"> 
</span><span class="cx"> // Shuffle ARGB channel order.  e.g. BGRA to ARGB.
</span><span class="cx"> // shuffler is 16 bytes and must be aligned.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBShuffle(const uint8* src_bgra, int src_stride_bgra,
-                uint8* dst_argb, int dst_stride_argb,
-                const uint8* shuffler, int width, int height);
</del><ins>+int ARGBShuffle(const uint8* src_bgra,
+                int src_stride_bgra,
+                uint8* dst_argb,
+                int dst_stride_argb,
+                const uint8* shuffler,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> // Sobel ARGB effect with planar output.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBSobelToPlane(const uint8* src_argb, int src_stride_argb,
-                     uint8* dst_y, int dst_stride_y,
-                     int width, int height);
</del><ins>+int ARGBSobelToPlane(const uint8* src_argb,
+                     int src_stride_argb,
+                     uint8* dst_y,
+                     int dst_stride_y,
+                     int width,
+                     int height);
</ins><span class="cx"> 
</span><span class="cx"> // Sobel ARGB effect.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBSobel(const uint8* src_argb, int src_stride_argb,
-              uint8* dst_argb, int dst_stride_argb,
-              int width, int height);
</del><ins>+int ARGBSobel(const uint8* src_argb,
+              int src_stride_argb,
+              uint8* dst_argb,
+              int dst_stride_argb,
+              int width,
+              int height);
</ins><span class="cx"> 
</span><span class="cx"> // Sobel ARGB effect w/ Sobel X, Sobel, Sobel Y in ARGB.
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBSobelXY(const uint8* src_argb, int src_stride_argb,
-                uint8* dst_argb, int dst_stride_argb,
-                int width, int height);
</del><ins>+int ARGBSobelXY(const uint8* src_argb,
+                int src_stride_argb,
+                uint8* dst_argb,
+                int dst_stride_argb,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }  // extern "C"
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrotateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate.h      2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate.h 2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -20,8 +20,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Supported rotation.
</span><span class="cx"> typedef enum RotationMode {
</span><del>-  kRotate0 = 0,  // No rotation.
-  kRotate90 = 90,  // Rotate 90 degrees clockwise.
</del><ins>+  kRotate0 = 0,      // No rotation.
+  kRotate90 = 90,    // Rotate 90 degrees clockwise.
</ins><span class="cx">   kRotate180 = 180,  // Rotate 180 degrees.
</span><span class="cx">   kRotate270 = 270,  // Rotate 270 degrees clockwise.
</span><span class="cx"> 
</span><span class="lines">@@ -33,50 +33,82 @@
</span><span class="cx"> 
</span><span class="cx"> // Rotate I420 frame.
</span><span class="cx"> LIBYUV_API
</span><del>-int I420Rotate(const uint8* src_y, int src_stride_y,
-               const uint8* src_u, int src_stride_u,
-               const uint8* src_v, int src_stride_v,
-               uint8* dst_y, int dst_stride_y,
-               uint8* dst_u, int dst_stride_u,
-               uint8* dst_v, int dst_stride_v,
-               int src_width, int src_height, enum RotationMode mode);
</del><ins>+int I420Rotate(const uint8* src_y,
+               int src_stride_y,
+               const uint8* src_u,
+               int src_stride_u,
+               const uint8* src_v,
+               int src_stride_v,
+               uint8* dst_y,
+               int dst_stride_y,
+               uint8* dst_u,
+               int dst_stride_u,
+               uint8* dst_v,
+               int dst_stride_v,
+               int src_width,
+               int src_height,
+               enum RotationMode mode);
</ins><span class="cx"> 
</span><span class="cx"> // Rotate NV12 input and store in I420.
</span><span class="cx"> LIBYUV_API
</span><del>-int NV12ToI420Rotate(const uint8* src_y, int src_stride_y,
-                     const uint8* src_uv, int src_stride_uv,
-                     uint8* dst_y, int dst_stride_y,
-                     uint8* dst_u, int dst_stride_u,
-                     uint8* dst_v, int dst_stride_v,
-                     int src_width, int src_height, enum RotationMode mode);
</del><ins>+int NV12ToI420Rotate(const uint8* src_y,
+                     int src_stride_y,
+                     const uint8* src_uv,
+                     int src_stride_uv,
+                     uint8* dst_y,
+                     int dst_stride_y,
+                     uint8* dst_u,
+                     int dst_stride_u,
+                     uint8* dst_v,
+                     int dst_stride_v,
+                     int src_width,
+                     int src_height,
+                     enum RotationMode mode);
</ins><span class="cx"> 
</span><span class="cx"> // Rotate a plane by 0, 90, 180, or 270.
</span><span class="cx"> LIBYUV_API
</span><del>-int RotatePlane(const uint8* src, int src_stride,
-                uint8* dst, int dst_stride,
-                int src_width, int src_height, enum RotationMode mode);
</del><ins>+int RotatePlane(const uint8* src,
+                int src_stride,
+                uint8* dst,
+                int dst_stride,
+                int src_width,
+                int src_height,
+                enum RotationMode mode);
</ins><span class="cx"> 
</span><span class="cx"> // Rotate planes by 90, 180, 270. Deprecated.
</span><span class="cx"> LIBYUV_API
</span><del>-void RotatePlane90(const uint8* src, int src_stride,
-                   uint8* dst, int dst_stride,
-                   int width, int height);
</del><ins>+void RotatePlane90(const uint8* src,
+                   int src_stride,
+                   uint8* dst,
+                   int dst_stride,
+                   int width,
+                   int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-void RotatePlane180(const uint8* src, int src_stride,
-                    uint8* dst, int dst_stride,
-                    int width, int height);
</del><ins>+void RotatePlane180(const uint8* src,
+                    int src_stride,
+                    uint8* dst,
+                    int dst_stride,
+                    int width,
+                    int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-void RotatePlane270(const uint8* src, int src_stride,
-                    uint8* dst, int dst_stride,
-                    int width, int height);
</del><ins>+void RotatePlane270(const uint8* src,
+                    int src_stride,
+                    uint8* dst,
+                    int dst_stride,
+                    int width,
+                    int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-void RotateUV90(const uint8* src, int src_stride,
-                uint8* dst_a, int dst_stride_a,
-                uint8* dst_b, int dst_stride_b,
-                int width, int height);
</del><ins>+void RotateUV90(const uint8* src,
+                int src_stride,
+                uint8* dst_a,
+                int dst_stride_a,
+                uint8* dst_b,
+                int dst_stride_b,
+                int width,
+                int height);
</ins><span class="cx"> 
</span><span class="cx"> // Rotations for when U and V are interleaved.
</span><span class="cx"> // These functions take one input pointer and
</span><span class="lines">@@ -83,16 +115,24 @@
</span><span class="cx"> // split the data into two buffers while
</span><span class="cx"> // rotating them. Deprecated.
</span><span class="cx"> LIBYUV_API
</span><del>-void RotateUV180(const uint8* src, int src_stride,
-                 uint8* dst_a, int dst_stride_a,
-                 uint8* dst_b, int dst_stride_b,
-                 int width, int height);
</del><ins>+void RotateUV180(const uint8* src,
+                 int src_stride,
+                 uint8* dst_a,
+                 int dst_stride_a,
+                 uint8* dst_b,
+                 int dst_stride_b,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-void RotateUV270(const uint8* src, int src_stride,
-                 uint8* dst_a, int dst_stride_a,
-                 uint8* dst_b, int dst_stride_b,
-                 int width, int height);
</del><ins>+void RotateUV270(const uint8* src,
+                 int src_stride,
+                 uint8* dst_a,
+                 int dst_stride_a,
+                 uint8* dst_b,
+                 int dst_stride_b,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> // The 90 and 270 functions are based on transposes.
</span><span class="cx"> // Doing a transpose with reversing the read/write
</span><span class="lines">@@ -99,15 +139,22 @@
</span><span class="cx"> // order will result in a rotation by +- 90 degrees.
</span><span class="cx"> // Deprecated.
</span><span class="cx"> LIBYUV_API
</span><del>-void TransposePlane(const uint8* src, int src_stride,
-                    uint8* dst, int dst_stride,
-                    int width, int height);
</del><ins>+void TransposePlane(const uint8* src,
+                    int src_stride,
+                    uint8* dst,
+                    int dst_stride,
+                    int width,
+                    int height);
</ins><span class="cx"> 
</span><span class="cx"> LIBYUV_API
</span><del>-void TransposeUV(const uint8* src, int src_stride,
-                 uint8* dst_a, int dst_stride_a,
-                 uint8* dst_b, int dst_stride_b,
-                 int width, int height);
</del><ins>+void TransposeUV(const uint8* src,
+                 int src_stride,
+                 uint8* dst_a,
+                 int dst_stride_a,
+                 uint8* dst_b,
+                 int dst_stride_b,
+                 int width,
+                 int height);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }  // extern "C"
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrotate_argbh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_argb.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_argb.h 2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_argb.h    2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -21,9 +21,13 @@
</span><span class="cx"> 
</span><span class="cx"> // Rotate ARGB frame
</span><span class="cx"> LIBYUV_API
</span><del>-int ARGBRotate(const uint8* src_argb, int src_stride_argb,
-               uint8* dst_argb, int dst_stride_argb,
-               int src_width, int src_height, enum RotationMode mode);
</del><ins>+int ARGBRotate(const uint8* src_argb,
+               int src_stride_argb,
+               uint8* dst_argb,
+               int dst_stride_argb,
+               int src_width,
+               int src_height,
+               enum RotationMode mode);
</ins><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }  // extern "C"
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrotate_rowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_row.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_row.h  2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/rotate_row.h     2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -36,7 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> // The following are available for GCC 32 or 64 bit but not NaCL for 64 bit:
</span><span class="cx"> #if !defined(LIBYUV_DISABLE_X86) && \
</span><del>-    (defined(__i386__) || (defined(__x86_64__) && !defined(__native_client__)))
</del><ins>+    (defined(__i386__) ||           \
+     (defined(__x86_64__) && !defined(__native_client__)))
</ins><span class="cx"> #define HAS_TRANSPOSEWX8_SSSE3
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -53,66 +54,172 @@
</span><span class="cx"> #define HAS_TRANSPOSEUVWX8_NEON
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if !defined(LIBYUV_DISABLE_MIPS) && !defined(__native_client__) && \
-    defined(__mips__) && \
-    defined(__mips_dsp) && (__mips_dsp_rev >= 2)
</del><ins>+#if !defined(LIBYUV_DISABLE_DSPR2) && !defined(__native_client__) && \
+    defined(__mips__) && defined(__mips_dsp) && (__mips_dsp_rev >= 2)
</ins><span class="cx"> #define HAS_TRANSPOSEWX8_DSPR2
</span><span class="cx"> #define HAS_TRANSPOSEUVWX8_DSPR2
</span><span class="cx"> #endif  // defined(__mips__)
</span><span class="cx"> 
</span><del>-void TransposeWxH_C(const uint8* src, int src_stride,
-                    uint8* dst, int dst_stride, int width, int height);
</del><ins>+#if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa)
+#define HAS_TRANSPOSEWX16_MSA
+#define HAS_TRANSPOSEUVWX16_MSA
+#endif
</ins><span class="cx"> 
</span><del>-void TransposeWx8_C(const uint8* src, int src_stride,
-                    uint8* dst, int dst_stride, int width);
-void TransposeWx8_NEON(const uint8* src, int src_stride,
-                       uint8* dst, int dst_stride, int width);
-void TransposeWx8_SSSE3(const uint8* src, int src_stride,
-                        uint8* dst, int dst_stride, int width);
-void TransposeWx8_Fast_SSSE3(const uint8* src, int src_stride,
-                             uint8* dst, int dst_stride, int width);
-void TransposeWx8_DSPR2(const uint8* src, int src_stride,
-                        uint8* dst, int dst_stride, int width);
-void TransposeWx8_Fast_DSPR2(const uint8* src, int src_stride,
-                             uint8* dst, int dst_stride, int width);
</del><ins>+void TransposeWxH_C(const uint8* src,
+                    int src_stride,
+                    uint8* dst,
+                    int dst_stride,
+                    int width,
+                    int height);
</ins><span class="cx"> 
</span><del>-void TransposeWx8_Any_NEON(const uint8* src, int src_stride,
-                           uint8* dst, int dst_stride, int width);
-void TransposeWx8_Any_SSSE3(const uint8* src, int src_stride,
-                            uint8* dst, int dst_stride, int width);
-void TransposeWx8_Fast_Any_SSSE3(const uint8* src, int src_stride,
-                                 uint8* dst, int dst_stride, int width);
-void TransposeWx8_Any_DSPR2(const uint8* src, int src_stride,
-                            uint8* dst, int dst_stride, int width);
</del><ins>+void TransposeWx8_C(const uint8* src,
+                    int src_stride,
+                    uint8* dst,
+                    int dst_stride,
+                    int width);
+void TransposeWx16_C(const uint8* src,
+                     int src_stride,
+                     uint8* dst,
+                     int dst_stride,
+                     int width);
+void TransposeWx8_NEON(const uint8* src,
+                       int src_stride,
+                       uint8* dst,
+                       int dst_stride,
+                       int width);
+void TransposeWx8_SSSE3(const uint8* src,
+                        int src_stride,
+                        uint8* dst,
+                        int dst_stride,
+                        int width);
+void TransposeWx8_Fast_SSSE3(const uint8* src,
+                             int src_stride,
+                             uint8* dst,
+                             int dst_stride,
+                             int width);
+void TransposeWx8_DSPR2(const uint8* src,
+                        int src_stride,
+                        uint8* dst,
+                        int dst_stride,
+                        int width);
+void TransposeWx8_Fast_DSPR2(const uint8* src,
+                             int src_stride,
+                             uint8* dst,
+                             int dst_stride,
+                             int width);
+void TransposeWx16_MSA(const uint8* src,
+                       int src_stride,
+                       uint8* dst,
+                       int dst_stride,
+                       int width);
</ins><span class="cx"> 
</span><del>-void TransposeUVWxH_C(const uint8* src, int src_stride,
-                      uint8* dst_a, int dst_stride_a,
-                      uint8* dst_b, int dst_stride_b,
-                      int width, int height);
</del><ins>+void TransposeWx8_Any_NEON(const uint8* src,
+                           int src_stride,
+                           uint8* dst,
+                           int dst_stride,
+                           int width);
+void TransposeWx8_Any_SSSE3(const uint8* src,
+                            int src_stride,
+                            uint8* dst,
+                            int dst_stride,
+                            int width);
+void TransposeWx8_Fast_Any_SSSE3(const uint8* src,
+                                 int src_stride,
+                                 uint8* dst,
+                                 int dst_stride,
+                                 int width);
+void TransposeWx8_Any_DSPR2(const uint8* src,
+                            int src_stride,
+                            uint8* dst,
+                            int dst_stride,
+                            int width);
+void TransposeWx16_Any_MSA(const uint8* src,
+                           int src_stride,
+                           uint8* dst,
+                           int dst_stride,
+                           int width);
</ins><span class="cx"> 
</span><del>-void TransposeUVWx8_C(const uint8* src, int src_stride,
-                      uint8* dst_a, int dst_stride_a,
-                      uint8* dst_b, int dst_stride_b, int width);
-void TransposeUVWx8_SSE2(const uint8* src, int src_stride,
-                         uint8* dst_a, int dst_stride_a,
-                         uint8* dst_b, int dst_stride_b, int width);
-void TransposeUVWx8_NEON(const uint8* src, int src_stride,
-                         uint8* dst_a, int dst_stride_a,
-                         uint8* dst_b, int dst_stride_b, int width);
-void TransposeUVWx8_DSPR2(const uint8* src, int src_stride,
-                          uint8* dst_a, int dst_stride_a,
-                          uint8* dst_b, int dst_stride_b, int width);
</del><ins>+void TransposeUVWxH_C(const uint8* src,
+                      int src_stride,
+                      uint8* dst_a,
+                      int dst_stride_a,
+                      uint8* dst_b,
+                      int dst_stride_b,
+                      int width,
+                      int height);
</ins><span class="cx"> 
</span><del>-void TransposeUVWx8_Any_SSE2(const uint8* src, int src_stride,
-                             uint8* dst_a, int dst_stride_a,
-                             uint8* dst_b, int dst_stride_b, int width);
-void TransposeUVWx8_Any_NEON(const uint8* src, int src_stride,
-                             uint8* dst_a, int dst_stride_a,
-                             uint8* dst_b, int dst_stride_b, int width);
-void TransposeUVWx8_Any_DSPR2(const uint8* src, int src_stride,
-                              uint8* dst_a, int dst_stride_a,
-                              uint8* dst_b, int dst_stride_b, int width);
</del><ins>+void TransposeUVWx8_C(const uint8* src,
+                      int src_stride,
+                      uint8* dst_a,
+                      int dst_stride_a,
+                      uint8* dst_b,
+                      int dst_stride_b,
+                      int width);
+void TransposeUVWx16_C(const uint8* src,
+                       int src_stride,
+                       uint8* dst_a,
+                       int dst_stride_a,
+                       uint8* dst_b,
+                       int dst_stride_b,
+                       int width);
+void TransposeUVWx8_SSE2(const uint8* src,
+                         int src_stride,
+                         uint8* dst_a,
+                         int dst_stride_a,
+                         uint8* dst_b,
+                         int dst_stride_b,
+                         int width);
+void TransposeUVWx8_NEON(const uint8* src,
+                         int src_stride,
+                         uint8* dst_a,
+                         int dst_stride_a,
+                         uint8* dst_b,
+                         int dst_stride_b,
+                         int width);
+void TransposeUVWx8_DSPR2(const uint8* src,
+                          int src_stride,
+                          uint8* dst_a,
+                          int dst_stride_a,
+                          uint8* dst_b,
+                          int dst_stride_b,
+                          int width);
+void TransposeUVWx16_MSA(const uint8* src,
+                         int src_stride,
+                         uint8* dst_a,
+                         int dst_stride_a,
+                         uint8* dst_b,
+                         int dst_stride_b,
+                         int width);
</ins><span class="cx"> 
</span><ins>+void TransposeUVWx8_Any_SSE2(const uint8* src,
+                             int src_stride,
+                             uint8* dst_a,
+                             int dst_stride_a,
+                             uint8* dst_b,
+                             int dst_stride_b,
+                             int width);
+void TransposeUVWx8_Any_NEON(const uint8* src,
+                             int src_stride,
+                             uint8* dst_a,
+                             int dst_stride_a,
+                             uint8* dst_b,
+                             int dst_stride_b,
+                             int width);
+void TransposeUVWx8_Any_DSPR2(const uint8* src,
+                              int src_stride,
+                              uint8* dst_a,
+                              int dst_stride_a,
+                              uint8* dst_b,
+                              int dst_stride_b,
+                              int width);
+void TransposeUVWx16_Any_MSA(const uint8* src,
+                             int src_stride,
+                             uint8* dst_a,
+                             int dst_stride_a,
+                             uint8* dst_b,
+                             int dst_stride_b,
+                             int width);
+
</ins><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }  // extern "C"
</span><span class="cx"> }  // namespace libyuv
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcethird_partylibyuvincludelibyuvrowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/row.h (218669 => 218670)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/row.h 2017-06-22 01:09:26 UTC (rev 218669)
+++ trunk/Source/ThirdParty/libwebrtc/Source/third_party/libyuv/include/libyuv/row.h    2017-06-22 01:22:40 UTC (rev 218670)
</span><span class="lines">@@ -20,14 +20,14 @@
</span><span class="cx"> extern "C" {
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a) - 1)))
</del><ins>+#define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a)-1)))
</ins><span class="cx"> 
</span><del>-#define align_buffer_64(var, size)                                             \
-  uint8* var##_mem = (uint8*)(malloc((size) + 63));               /* NOLINT */ \
-  uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63)       /* NOLINT */
</del><ins>+#define align_buffer_64(var, size)                                       \
+  uint8* var##_mem = (uint8*)(malloc((size) + 63));         /* NOLINT */ \
+  uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */
</ins><span class="cx"> 
</span><span class="cx"> #define free_aligned_buffer_64(var) \
</span><del>-  free(var##_mem);  \
</del><ins>+  free(var##_mem);                  \
</ins><span class="cx">   var = 0
</span><span class="cx"> 
</span><span class="cx"> #if defined(__pnacl__) || defined(__CLR_VER) || \
</span><span class="lines">@@ -70,8 +70,8 @@
</span><span class="cx"> #endif  // __clang__
</span><span class="cx"> 
</span><span class="cx"> // Visual C 2012 required for AVX2.
</span><del>-#if defined(_M_IX86) && !defined(__clang__) && \
-    defined(_MSC_VER) && _MSC_VER >= 1700
</del><ins>+#if defined(_M_IX86) && !defined(__clang__) && defined(_MSC_VER) && \
+    _MSC_VER >= 1700
</ins><span class="cx"> #define VISUALC_HAS_AVX2 1
</span><span class="cx"> #endif  // VisualStudio >= 2012
</span><span class="cx"> 
</span><span class="lines">@@ -174,8 +174,8 @@
</span><span class="cx"> 
</span><span class="cx"> // The following functions fail on gcc/clang 32 bit with fpic and framepointer.
</span><span class="cx"> // caveat: clangcl uses row_win.cc which works.
</span><del>-#if defined(NDEBUG) || !(defined(_DEBUG) && defined(__i386__)) || \
-    !defined(__i386__) || defined(_MSC_VER)
</del><ins>+#if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \
+    defined(_MSC_VER)
</ins><span class="cx"> // TODO(fbarchard): fix build error on android_full_debug=1
</span><span class="cx"> // https://code.google.com/p/libyuv/issues/detail?id=517
</span><span class="cx"> #define HAS_I422ALPHATOARGBROW_SSSE3
</span><span class="lines">@@ -185,8 +185,9 @@
</span><span class="cx"> // The following are available on all x86 platforms, but
</span><span class="cx"> // require VS2012, clang 3.4 or gcc 4.7.
</span><span class="cx"> // The code supports NaCL but requires a new compiler and validator.
</span><del>-#if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \
-    defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2))
</del><ins>+#if !defined(LIBYUV_DISABLE_X86) &&                          \
+    (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \
+     defined(GCC_HAS_AVX2))
</ins><span class="cx"> #define HAS_ARGBCOPYALPHAROW_AVX2
</span><span class="cx"> #define HAS_ARGBCOPYYTOALPHAROW_AVX2
</span><span class="cx"> #define HAS_ARGBEXTRACTALPHAROW_AVX2
</span><span class="lines">@@ -235,7 +236,8 @@
</span><span class="cx"> #define HAS_ARGBUNATTENUATEROW_AVX2
</span><span class="cx"> #define HAS_BLENDPLANEROW_AVX2
</span><span class="cx"> 
</span><del>-#if !(defined(_DEBUG) && defined(__i386__))
</del><ins>+#if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \
+    defined(_MSC_VER)
</ins><span class="cx"> // TODO(fbarchard): fix build error on android_full_debug=1
</span><span class="cx"> // https://code.google.com/p/libyuv/issues/detail?id=517
</span><span class="cx"> #define HAS_I422ALPHATOARGBROW_AVX2
</span><span class="lines">@@ -289,6 +291,7 @@
</span><span class="cx"> #define HAS_BGRATOUVROW_NEON
</span><span class="cx"> #define HAS_BGRATOYROW_NEON
</span><span class="cx"> #define HAS_COPYROW_NEON
</span><ins>+#define HAS_HALFFLOATROW_NEON
</ins><span class="cx"> #define HAS_I400TOARGBROW_NEON
</span><span class="cx"> #define HAS_I422ALPHATOARGBROW_NEON
</span><span class="cx"> #define HAS_I422TOARGB1555ROW_NEON
</span><span class="lines">@@ -330,11 +333,6 @@
</span><span class="cx"> #define HAS_YUY2TOUVROW_NEON
</span><span class="cx"> #define HAS_YUY2TOYROW_NEON
</span><span class="cx"> 
</span><del>-// TODO(fbarchard): Port to 32 bit.
-#if defined(__aarch64__)
-#define HAS_HALFFLOATROW_NEON
-#endif
-
</del><span class="cx"> // Effects:
</span><span class="cx"> #define HAS_ARGBADDROW_NEON
</span><span class="cx"> #define HAS_ARGBATTENUATEROW_NEON
</span><span class="lines">@@ -357,7 +355,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> // The following are available on Mips platforms:
</span><del>-#if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \
</del><ins>+#if !defined(LIBYUV_DISABLE_DSPR2) && defined(__mips__) && \
</ins><span class="cx">     (_MIPS_SIM == _MIPS_SIM_ABI32) && (__mips_isa_rev < 6)
</span><span class="cx"> #define HAS_COPYROW_MIPS
</span><span class="cx"> #if defined(__mips_dsp) && (__mips_dsp_rev >= 2)
</span><span class="lines">@@ -366,6 +364,23 @@
</span><span class="cx"> #define HAS_MIRRORROW_DSPR2
</span><span class="cx"> #define HAS_MIRRORUVROW_DSPR2
</span><span class="cx"> #define HAS_SPLITUVROW_DSPR2
</span><ins>+#define HAS_RGB24TOARGBROW_DSPR2
+#define HAS_RAWTOARGBROW_DSPR2
+#define HAS_RGB565TOARGBROW_DSPR2
+#define HAS_ARGB1555TOARGBROW_DSPR2
+#define HAS_ARGB4444TOARGBROW_DSPR2
+#define HAS_I444TOARGBROW_DSPR2
+#define HAS_I422TOARGB4444ROW_DSPR2
+#define HAS_I422TOARGB1555ROW_DSPR2
+#define HAS_NV12TOARGBROW_DSPR2
+#define HAS_BGRATOUVROW_DSPR2
+#define HAS_BGRATOYROW_DSPR2
+#define HAS_ABGRTOUVROW_DSPR2
+#define HAS_ARGBTOYROW_DSPR2
+#define HAS_ABGRTOYROW_DSPR2
+#define HAS_RGBATOUVROW_DSPR2
+#define HAS_RGBATOYROW_DSPR2
+#define HAS_ARGBTOUVROW_DSPR2
</ins><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -382,7 +397,60 @@
</span><span class="cx"> #define HAS_ARGB4444TOARGBROW_MSA
</span><span class="cx"> #define HAS_ARGBTOYROW_MSA
</span><span class="cx"> #define HAS_ARGBTOUVROW_MSA
</span><del>-
</del><ins>+#define HAS_I422TOARGBROW_MSA
+#define HAS_I422TORGBAROW_MSA
+#define HAS_I422ALPHATOARGBROW_MSA
+#define HAS_I422TORGB24ROW_MSA
+#define HAS_ARGBTORGB24ROW_MSA
+#define HAS_ARGBTORAWROW_MSA
+#define HAS_ARGBTORGB565ROW_MSA
+#define HAS_ARGBTOARGB1555ROW_MSA
+#define HAS_ARGBTOARGB4444ROW_MSA
+#define HAS_ARGBTOUV444ROW_MSA
+#define HAS_ARGBMULTIPLYROW_MSA
+#define HAS_ARGBADDROW_MSA
+#define HAS_ARGBSUBTRACTROW_MSA
+#define HAS_ARGBATTENUATEROW_MSA
+#define HAS_ARGBTORGB565DITHERROW_MSA
+#define HAS_ARGBSHUFFLEROW_MSA
+#define HAS_ARGBSHADEROW_MSA
+#define HAS_ARGBGRAYROW_MSA
+#define HAS_ARGBSEPIAROW_MSA
+#define HAS_ARGB1555TOARGBROW_MSA
+#define HAS_RGB565TOARGBROW_MSA
+#define HAS_RGB24TOARGBROW_MSA
+#define HAS_RAWTOARGBROW_MSA
+#define HAS_ARGB1555TOYROW_MSA
+#define HAS_RGB565TOYROW_MSA
+#define HAS_RGB24TOYROW_MSA
+#define HAS_RAWTOYROW_MSA
+#define HAS_ARGB1555TOUVROW_MSA
+#define HAS_RGB565TOUVROW_MSA
+#define HAS_RGB24TOUVROW_MSA
+#define HAS_RAWTOUVROW_MSA
+#define HAS_NV12TOARGBROW_MSA
+#define HAS_NV12TORGB565ROW_MSA
+#define HAS_NV21TOARGBROW_MSA
+#define HAS_SOBELROW_MSA
+#define HAS_SOBELTOPLANEROW_MSA
+#define HAS_SOBELXYROW_MSA
+#define HAS_ARGBTOYJROW_MSA
+#define HAS_BGRATOYROW_MSA
+#define HAS_ABGRTOYROW_MSA
+#define HAS_RGBATOYROW_MSA
+#define HAS_ARGBTOUVJROW_MSA
+#define HAS_BGRATOUVROW_MSA
+#define HAS_ABGRTOUVROW_MSA
+#define HAS_RGBATOUVROW_MSA
+#define HAS_I444TOARGBROW_MSA
+#define HAS_I400TOARGBROW_MSA
+#define HAS_J400TOARGBROW_MSA
+#define HAS_YUY2TOARGBROW_MSA
+#define HAS_UYVYTOARGBROW_MSA
+#define HAS_INTERPOLATEROW_MSA
+#define HAS_ARGBSETROW_MSA
+#define HAS_RAWTORGB24ROW_MSA
+#define HAS_MERGEUVROW_MSA
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__)
</span><span class="lines">@@ -469,13 +537,13 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> // Offsets into YuvConstants structure
</span><del>-#define KUVTOB   0
-#define KUVTOG   32
-#define KUVTOR   64
</del><ins>+#define KUVTOB 0
+#define KUVTOG 32
+#define KUVTOR 64
</ins><span class="cx"> #define KUVBIASB 96
</span><span class="cx"> #define KUVBIASG 128
</span><span class="cx"> #define KUVBIASR 160
</span><del>-#define KYTORGB  192
</del><ins>+#define KYTORGB 192
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> // Conversion matrix for YUV to RGB
</span><span class="lines">@@ -508,37 +576,31 @@
</span><span class="cx"> #define MEMACCESS(base) "%%nacl:(%%r15,%q" #base ")"
</span><span class="cx"> #define MEMACCESS2(offset, base) "%%nacl:" #offset "(%%r15,%q" #base ")"
</span><span class="cx"> #define MEMLEA(offset, base) #offset "(%q" #base ")"
</span><del>-#define MEMLEA3(offset, index, scale) \
-    #offset "(,%q" #index "," #scale ")"
</del><ins>+#define MEMLEA3(offset, index, scale) #offset "(,%q" #index "," #scale ")"
</ins><span class="cx"> #define MEMLEA4(offset, base, index, scale) \
</span><del>-    #offset "(%q" #base ",%q" #index "," #scale ")"
</del><ins>+  #offset "(%q" #base ",%q" #index "," #scale ")"
</ins><span class="cx"> #define MEMMOVESTRING(s, d) "%%nacl:(%q" #s "),%%nacl:(%q" #d "), %%r15"
</span><span class="cx"> #define MEMSTORESTRING(reg, d) "%%" #reg ",%%nacl:(%q" #d "), %%r15"
</span><del>-#define MEMOPREG(opcode, offset, base, index, scale, reg) \
-    BUNDLELOCK \
-    "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
-    #opcode " (%%r15,%%r14),%%" #reg "\n" \
-    BUNDLEUNLOCK
-#define MEMOPMEM(opcode, reg, offset, base, index, scale) \
-    BUNDLELOCK \
-    "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
-    #opcode " %%" #reg ",(%%r15,%%r14)\n" \
-    BUNDLEUNLOCK
-#define MEMOPARG(opcode, offset, base, index, scale, arg) \
-    BUNDLELOCK \
-    "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
-    #opcode " (%%r15,%%r14),%" #arg "\n" \
-    BUNDLEUNLOCK
-#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \
-    BUNDLELOCK \
-    "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
-    #opcode " (%%r15,%%r14),%%" #reg1 ",%%" #reg2 "\n" \
-    BUNDLEUNLOCK
-#define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \
-    BUNDLELOCK \
-    "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
-    #op " $" #sel ",%%" #reg ",(%%r15,%%r14)\n" \
-    BUNDLEUNLOCK
</del><ins>+#define MEMOPREG(opcode, offset, base, index, scale, reg)                 \
+  BUNDLELOCK                                                              \
+  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \
+  " (%%r15,%%r14),%%" #reg "\n" BUNDLEUNLOCK
+#define MEMOPMEM(opcode, reg, offset, base, index, scale)                 \
+  BUNDLELOCK                                                              \
+  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \
+  " %%" #reg ",(%%r15,%%r14)\n" BUNDLEUNLOCK
+#define MEMOPARG(opcode, offset, base, index, scale, arg)                 \
+  BUNDLELOCK                                                              \
+  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \
+  " (%%r15,%%r14),%" #arg "\n" BUNDLEUNLOCK
+#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2)         \
+  BUNDLELOCK                                                              \
+  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \
+  " (%%r15,%%r14),%%" #reg1 ",%%" #reg2 "\n" BUNDLEUNLOCK
+#define VEXTOPMEM(op, sel, reg, offset, base, index, scale)           \
+  BUNDLELOCK                                                          \
+  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #op \
+  " $" #sel ",%%" #reg ",(%%r15,%%r14)\n" BUNDLEUNLOCK
</ins><span class="cx"> #else  // defined(__native_client__) && defined(__x86_64__)
</span><span class="cx"> #define NACL_R14
</span><span class="cx"> #define BUNDLEALIGN
</span><span class="lines">@@ -545,23 +607,22 @@
</span><span class="cx"> #define MEMACCESS(base) "(%" #base ")"
</span><span class="cx"> #define MEMACCESS2(offset, base) #offset "(%" #base ")"
</span><span class="cx"> #define MEMLEA(offset, base) #offset "(%" #base ")"
</span><del>-#define MEMLEA3(offset, index, scale) \
-    #offset "(,%" #index "," #scale ")"
</del><ins>+#define MEMLEA3(offset, index, scale) #offset "(,%" #index "," #scale ")"
</ins><span class="cx"> #define MEMLEA4(offset, base, index, scale) \
</span><del>-    #offset "(%" #base ",%" #index "," #scale ")"
</del><ins>+  #offset "(%" #base ",%" #index "," #scale ")"
</ins><span class="cx"> #define MEMMOVESTRING(s, d)
</span><span class="cx"> #define MEMSTORESTRING(reg, d)
</span><span class="cx"> #define MEMOPREG(opcode, offset, base, index, scale, reg) \
</span><del>-    #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n"
</del><ins>+  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n"
</ins><span class="cx"> #define MEMOPMEM(opcode, reg, offset, base, index, scale) \
</span><del>-    #opcode " %%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n"
</del><ins>+  #opcode " %%" #reg "," #offset "(%" #base ",%" #index "," #scale ")\n"
</ins><span class="cx"> #define MEMOPARG(opcode, offset, base, index, scale, arg) \
</span><del>-    #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n"
-#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \
-    #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg1 ",%%" \
-    #reg2 "\n"
</del><ins>+  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n"
+#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2)    \
+  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg1 \
+          ",%%" #reg2 "\n"
</ins><span class="cx"> #define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \
</span><del>-    #op " $" #sel ",%%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n"
</del><ins>+  #op " $" #sel ",%%" #reg "," #offset "(%" #base ",%" #index "," #scale ")\n"
</ins><span class="cx"> #endif  // defined(__native_client__) && defined(__x86_64__)
</span><span class="cx"> 
</span><span class="cx"> #if defined(__arm__) || defined(__aarch64__)
</span><span class="lines">@@ -573,6 +634,57 @@
</span><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+// Intel Code Analizer markers.  Insert IACA_START IACA_END around code to be
+// measured and then run with iaca -64 libyuv_unittest.
+// IACA_ASM_START amd IACA_ASM_END are equivalents that can be used within
+// inline assembly blocks.
+// example of iaca:
+// ~/iaca-lin64/bin/iaca.sh -64 -analysis LATENCY out/Release/libyuv_unittest
+
+#if defined(__x86_64__) || defined(__i386__)
+
+#define IACA_ASM_START  \
+  ".byte 0x0F, 0x0B\n"  \
+  " movl $111, %%ebx\n" \
+  ".byte 0x64, 0x67, 0x90\n"
+
+#define IACA_ASM_END         \
+  " movl $222, %%ebx\n"      \
+  ".byte 0x64, 0x67, 0x90\n" \
+  ".byte 0x0F, 0x0B\n"
+
+#define IACA_SSC_MARK(MARK_ID)                        \
+  __asm__ __volatile__("\n\t  movl $" #MARK_ID        \
+                       ", %%ebx"                      \
+                       "\n\t  .byte 0x64, 0x67, 0x90" \
+                       :                              \
+                       :                              \
+                       : "memory");
+
+#define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B");
+
+#else /* Visual C */
+#define IACA_UD_BYTES \
+  { __asm _emit 0x0F __asm _emit 0x0B }
+
+#define IACA_SSC_MARK(x) \
+  { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 }
+
+#define IACA_VC64_START __writegsbyte(111, 111);
+#define IACA_VC64_END __writegsbyte(222, 222);
+#endif
+
+#define IACA_START     \
+  {                    \
+    IACA_UD_BYTES      \
+    IACA_SSC_MARK(111) \
+  }
+#define IACA_END       \
+  {                    \
+    IACA_SSC_MARK(222) \
+    IACA_UD_BYTES      \
+  }
+
</ins><span class="cx"> void I444ToARGBRow_NEON(const uint8* src_y,
</span><span class="cx">                         const uint8* src_u,
</span><span class="cx">                         const uint8* src_v,
</span><span class="lines">@@ -651,7 +763,103 @@
</span><span class="cx">                         uint8* dst_argb,
</span><span class="cx">                         const struct YuvConstants* yuvconstants,
</span><span class="cx">                         int width);
</span><ins>+void I444ToARGBRow_MSA(const uint8* src_y,
+                       const uint8* src_u,
+                       const uint8* src_v,
+                       uint8* dst_argb,
+                       const struct YuvConstants* yuvconstants,
+                       int width);
+void I444ToARGBRow_DSPR2(const uint8* src_y,
+                         const uint8* src_u,
+                         const uint8* src_v,
+                         uint8* dst_argb,
+                         const struct YuvConstants* yuvconstants,
+                         int width);
+void I422ToARGB4444Row_DSPR2(const uint8* src_y,
+                             const uint8* src_u,
+                             const uint8* src_v,
+                             uint8* dst_argb4444,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
+void I422ToARGB1555Row_DSPR2(const uint8* src_y,
+                             const uint8* src_u,
+                             const uint8* src_v,
+                             uint8* dst_argb1555,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
+void NV12ToARGBRow_DSPR2(const uint8* src_y,
+                         const uint8* src_uv,
+                         uint8* dst_argb,
+                         const struct YuvConstants* yuvconstants,
+                         int width);
</ins><span class="cx"> 
</span><ins>+void I422ToARGBRow_MSA(const uint8* src_y,
+                       const uint8* src_u,
+                       const uint8* src_v,
+                       uint8* dst_argb,
+                       const struct YuvConstants* yuvconstants,
+                       int width);
+void I422ToRGBARow_MSA(const uint8* src_y,
+                       const uint8* src_u,
+                       const uint8* src_v,
+                       uint8* dst_rgba,
+                       const struct YuvConstants* yuvconstants,
+                       int width);
+void I422AlphaToARGBRow_MSA(const uint8* y_buf,
+                            const uint8* u_buf,
+                            const uint8* v_buf,
+                            const uint8* a_buf,
+                            uint8* dst_argb,
+                            const struct YuvConstants* yuvconstants,
+                            int width);
+void I422ToRGB24Row_MSA(const uint8* src_y,
+                        const uint8* src_u,
+                        const uint8* src_v,
+                        uint8* dst_rgb24,
+                        const struct YuvConstants* yuvconstants,
+                        int width);
+void I422ToRGB565Row_MSA(const uint8* src_y,
+                         const uint8* src_u,
+                         const uint8* src_v,
+                         uint8* dst_rgb565,
+                         const struct YuvConstants* yuvconstants,
+                         int width);
+void I422ToARGB4444Row_MSA(const uint8* src_y,
+                           const uint8* src_u,
+                           const uint8* src_v,
+                           uint8* dst_argb4444,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void I422ToARGB1555Row_MSA(const uint8* src_y,
+                           const uint8* src_u,
+                           const uint8* src_v,
+                           uint8* dst_argb1555,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void NV12ToARGBRow_MSA(const uint8* src_y,
+                       const uint8* src_uv,
+                       uint8* dst_argb,
+                       const struct YuvConstants* yuvconstants,
+                       int width);
+void NV12ToRGB565Row_MSA(const uint8* src_y,
+                         const uint8* src_uv,
+                         uint8* dst_rgb565,
+                         const struct YuvConstants* yuvconstants,
+                         int width);
+void NV21ToARGBRow_MSA(const uint8* src_y,
+                       const uint8* src_vu,
+                       uint8* dst_argb,
+                       const struct YuvConstants* yuvconstants,
+                       int width);
+void YUY2ToARGBRow_MSA(const uint8* src_yuy2,
+                       uint8* dst_argb,
+                       const struct YuvConstants* yuvconstants,
+                       int width);
+void UYVYToARGBRow_MSA(const uint8* src_uyvy,
+                       uint8* dst_argb,
+                       const struct YuvConstants* yuvconstants,
+                       int width);
+
</ins><span class="cx"> void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width);
</span><span class="cx"> void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width);
</span><span class="cx"> void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
</span><span class="lines">@@ -666,30 +874,110 @@
</span><span class="cx"> void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width);
</span><span class="cx"> void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width);
</span><span class="cx"> void ARGBToYRow_MSA(const uint8* src_argb, uint8* dst_y, int width);
</span><del>-void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
</del><ins>+void ARGBToYJRow_MSA(const uint8* src_argb, uint8* dst_y, int width);
+void ARGBToUV444Row_NEON(const uint8* src_argb,
+                         uint8* dst_u,
+                         uint8* dst_v,
</ins><span class="cx">                          int width);
</span><del>-void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
-                      uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVRow_MSA(const uint8* src_argb, int src_stride_argb,
-                     uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
-                       uint8* dst_u, uint8* dst_v, int width);
-void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
-                      uint8* dst_u, uint8* dst_v, int width);
-void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
-                      uint8* dst_u, uint8* dst_v, int width);
-void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
-                      uint8* dst_u, uint8* dst_v, int width);
-void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
-                       uint8* dst_u, uint8* dst_v, int width);
-void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
-                     uint8* dst_u, uint8* dst_v, int width);
-void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
-                        uint8* dst_u, uint8* dst_v, int width);
-void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
-                          uint8* dst_u, uint8* dst_v, int width);
-void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void ARGBToUVRow_NEON(const uint8* src_argb,
+                      int src_stride_argb,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
+void ARGBToUV444Row_MSA(const uint8* src_argb,
+                        uint8* dst_u,
+                        uint8* dst_v,
+                        int width);
+void ARGBToUVRow_MSA(const uint8* src_argb,
+                     int src_stride_argb,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
+void ARGBToUVJRow_NEON(const uint8* src_argb,
+                       int src_stride_argb,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void BGRAToUVRow_NEON(const uint8* src_bgra,
+                      int src_stride_bgra,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
+void ABGRToUVRow_NEON(const uint8* src_abgr,
+                      int src_stride_abgr,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
+void RGBAToUVRow_NEON(const uint8* src_rgba,
+                      int src_stride_rgba,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
+void RGB24ToUVRow_NEON(const uint8* src_rgb24,
+                       int src_stride_rgb24,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void RAWToUVRow_NEON(const uint8* src_raw,
+                     int src_stride_raw,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
+void RGB565ToUVRow_NEON(const uint8* src_rgb565,
+                        int src_stride_rgb565,
+                        uint8* dst_u,
+                        uint8* dst_v,
+                        int width);
+void ARGB1555ToUVRow_NEON(const uint8* src_argb1555,
+                          int src_stride_argb1555,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void ARGB4444ToUVRow_NEON(const uint8* src_argb4444,
+                          int src_stride_argb4444,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void ARGBToUVJRow_MSA(const uint8* src_argb,
+                      int src_stride_argb,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
+void BGRAToUVRow_MSA(const uint8* src_bgra,
+                     int src_stride_bgra,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
+void ABGRToUVRow_MSA(const uint8* src_abgr,
+                     int src_stride_abgr,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
+void RGBAToUVRow_MSA(const uint8* src_rgba,
+                     int src_stride_rgba,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
+void RGB24ToUVRow_MSA(const uint8* src_rgb24,
+                      int src_stride_rgb24,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
+void RAWToUVRow_MSA(const uint8* src_raw,
+                    int src_stride_raw,
+                    uint8* dst_u,
+                    uint8* dst_v,
+                    int width);
+void RGB565ToUVRow_MSA(const uint8* src_rgb565,
+                       int src_stride_rgb565,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void ARGB1555ToUVRow_MSA(const uint8* src_argb1555,
+                         int src_stride_argb1555,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width);
</span><span class="cx"> void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width);
</span><span class="cx"> void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width);
</span><span class="lines">@@ -698,6 +986,37 @@
</span><span class="cx"> void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width);
</span><span class="cx"> void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width);
</span><span class="cx"> void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width);
</span><ins>+void BGRAToYRow_MSA(const uint8* src_bgra, uint8* dst_y, int width);
+void ABGRToYRow_MSA(const uint8* src_abgr, uint8* dst_y, int width);
+void RGBAToYRow_MSA(const uint8* src_rgba, uint8* dst_y, int width);
+void RGB24ToYRow_MSA(const uint8* src_rgb24, uint8* dst_y, int width);
+void RAWToYRow_MSA(const uint8* src_raw, uint8* dst_y, int width);
+void RGB565ToYRow_MSA(const uint8* src_rgb565, uint8* dst_y, int width);
+void ARGB1555ToYRow_MSA(const uint8* src_argb1555, uint8* dst_y, int width);
+void BGRAToUVRow_DSPR2(const uint8* src_bgra,
+                       int src_stride_bgra,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void BGRAToYRow_DSPR2(const uint8* src_bgra, uint8* dst_y, int width);
+void ABGRToUVRow_DSPR2(const uint8* src_abgr,
+                       int src_stride_abgr,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void ARGBToYRow_DSPR2(const uint8* src_argb, uint8* dst_y, int width);
+void ABGRToYRow_DSPR2(const uint8* src_abgr, uint8* dst_y, int width);
+void RGBAToUVRow_DSPR2(const uint8* src_rgba,
+                       int src_stride_rgba,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void RGBAToYRow_DSPR2(const uint8* src_rgba, uint8* dst_y, int width);
+void ARGBToUVRow_DSPR2(const uint8* src_argb,
+                       int src_stride_argb,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
</ins><span class="cx"> void ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int width);
</span><span class="cx"> void ARGBToYJRow_C(const uint8* src_argb, uint8* dst_y, int width);
</span><span class="cx"> void BGRAToYRow_C(const uint8* src_bgra, uint8* dst_y, int width);
</span><span class="lines">@@ -723,94 +1042,293 @@
</span><span class="cx"> void RGB24ToYRow_Any_NEON(const uint8* src_rgb24, uint8* dst_y, int width);
</span><span class="cx"> void RAWToYRow_Any_NEON(const uint8* src_raw, uint8* dst_y, int width);
</span><span class="cx"> void RGB565ToYRow_Any_NEON(const uint8* src_rgb565, uint8* dst_y, int width);
</span><del>-void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, uint8* dst_y,
</del><ins>+void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555,
+                             uint8* dst_y,
</ins><span class="cx">                              int width);
</span><del>-void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, uint8* dst_y,
</del><ins>+void BGRAToYRow_Any_DSPR2(const uint8* src_bgra, uint8* dst_y, int width);
+void ARGBToYRow_Any_DSPR2(const uint8* src_argb, uint8* dst_y, int width);
+void ABGRToYRow_Any_DSPR2(const uint8* src_abgr, uint8* dst_y, int width);
+void RGBAToYRow_Any_DSPR2(const uint8* src_rgba, uint8* dst_y, int width);
+void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444,
+                             uint8* dst_y,
</ins><span class="cx">                              int width);
</span><ins>+void BGRAToYRow_Any_MSA(const uint8* src_bgra, uint8* dst_y, int width);
+void ABGRToYRow_Any_MSA(const uint8* src_abgr, uint8* dst_y, int width);
+void RGBAToYRow_Any_MSA(const uint8* src_rgba, uint8* dst_y, int width);
+void ARGBToYJRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width);
</ins><span class="cx"> void ARGBToYRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width);
</span><ins>+void RGB24ToYRow_Any_MSA(const uint8* src_rgb24, uint8* dst_y, int width);
+void RAWToYRow_Any_MSA(const uint8* src_raw, uint8* dst_y, int width);
+void RGB565ToYRow_Any_MSA(const uint8* src_rgb565, uint8* dst_y, int width);
+void ARGB1555ToYRow_Any_MSA(const uint8* src_argb1555, uint8* dst_y, int width);
</ins><span class="cx"> 
</span><del>-void ARGBToUVRow_AVX2(const uint8* src_argb, int src_stride_argb,
-                      uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVJRow_AVX2(const uint8* src_argb, int src_stride_argb,
-                       uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVRow_SSSE3(const uint8* src_argb, int src_stride_argb,
-                       uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVJRow_SSSE3(const uint8* src_argb, int src_stride_argb,
-                        uint8* dst_u, uint8* dst_v, int width);
-void BGRAToUVRow_SSSE3(const uint8* src_bgra, int src_stride_bgra,
-                       uint8* dst_u, uint8* dst_v, int width);
-void ABGRToUVRow_SSSE3(const uint8* src_abgr, int src_stride_abgr,
-                       uint8* dst_u, uint8* dst_v, int width);
-void RGBAToUVRow_SSSE3(const uint8* src_rgba, int src_stride_rgba,
-                       uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVRow_Any_AVX2(const uint8* src_argb, int src_stride_argb,
-                          uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVJRow_Any_AVX2(const uint8* src_argb, int src_stride_argb,
-                           uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb,
-                           uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb,
-                            uint8* dst_u, uint8* dst_v, int width);
-void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, int src_stride_bgra,
-                           uint8* dst_u, uint8* dst_v, int width);
-void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, int src_stride_abgr,
-                           uint8* dst_u, uint8* dst_v, int width);
-void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, int src_stride_rgba,
-                           uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUV444Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
</del><ins>+void ARGBToUVRow_AVX2(const uint8* src_argb,
+                      int src_stride_argb,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
+void ARGBToUVJRow_AVX2(const uint8* src_argb,
+                       int src_stride_argb,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void ARGBToUVRow_SSSE3(const uint8* src_argb,
+                       int src_stride_argb,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void ARGBToUVJRow_SSSE3(const uint8* src_argb,
+                        int src_stride_argb,
+                        uint8* dst_u,
+                        uint8* dst_v,
+                        int width);
+void BGRAToUVRow_SSSE3(const uint8* src_bgra,
+                       int src_stride_bgra,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void ABGRToUVRow_SSSE3(const uint8* src_abgr,
+                       int src_stride_abgr,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void RGBAToUVRow_SSSE3(const uint8* src_rgba,
+                       int src_stride_rgba,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void ARGBToUVRow_Any_AVX2(const uint8* src_argb,
+                          int src_stride_argb,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void ARGBToUVJRow_Any_AVX2(const uint8* src_argb,
+                           int src_stride_argb,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ARGBToUVRow_Any_SSSE3(const uint8* src_argb,
+                           int src_stride_argb,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb,
+                            int src_stride_argb,
+                            uint8* dst_u,
+                            uint8* dst_v,
+                            int width);
+void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra,
+                           int src_stride_bgra,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr,
+                           int src_stride_abgr,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba,
+                           int src_stride_rgba,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ARGBToUV444Row_Any_NEON(const uint8* src_argb,
+                             uint8* dst_u,
+                             uint8* dst_v,
</ins><span class="cx">                              int width);
</span><del>-void ARGBToUVRow_Any_NEON(const uint8* src_argb, int src_stride_argb,
-                          uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVRow_Any_MSA(const uint8* src_argb, int src_stride_argb,
-                         uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVJRow_Any_NEON(const uint8* src_argb, int src_stride_argb,
-                           uint8* dst_u, uint8* dst_v, int width);
-void BGRAToUVRow_Any_NEON(const uint8* src_bgra, int src_stride_bgra,
-                          uint8* dst_u, uint8* dst_v, int width);
-void ABGRToUVRow_Any_NEON(const uint8* src_abgr, int src_stride_abgr,
-                          uint8* dst_u, uint8* dst_v, int width);
-void RGBAToUVRow_Any_NEON(const uint8* src_rgba, int src_stride_rgba,
-                          uint8* dst_u, uint8* dst_v, int width);
-void RGB24ToUVRow_Any_NEON(const uint8* src_rgb24, int src_stride_rgb24,
-                           uint8* dst_u, uint8* dst_v, int width);
-void RAWToUVRow_Any_NEON(const uint8* src_raw, int src_stride_raw,
-                         uint8* dst_u, uint8* dst_v, int width);
-void RGB565ToUVRow_Any_NEON(const uint8* src_rgb565, int src_stride_rgb565,
-                            uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void ARGBToUVRow_Any_NEON(const uint8* src_argb,
+                          int src_stride_argb,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void ARGBToUV444Row_Any_MSA(const uint8* src_argb,
+                            uint8* dst_u,
+                            uint8* dst_v,
+                            int width);
+void ARGBToUVRow_Any_MSA(const uint8* src_argb,
+                         int src_stride_argb,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
+void ARGBToUVJRow_Any_NEON(const uint8* src_argb,
+                           int src_stride_argb,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void BGRAToUVRow_Any_NEON(const uint8* src_bgra,
+                          int src_stride_bgra,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void ABGRToUVRow_Any_NEON(const uint8* src_abgr,
+                          int src_stride_abgr,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void RGBAToUVRow_Any_NEON(const uint8* src_rgba,
+                          int src_stride_rgba,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void RGB24ToUVRow_Any_NEON(const uint8* src_rgb24,
+                           int src_stride_rgb24,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void RAWToUVRow_Any_NEON(const uint8* src_raw,
+                         int src_stride_raw,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
+void RGB565ToUVRow_Any_NEON(const uint8* src_rgb565,
+                            int src_stride_rgb565,
+                            uint8* dst_u,
+                            uint8* dst_v,
+                            int width);
</ins><span class="cx"> void ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555,
</span><span class="cx">                               int src_stride_argb1555,
</span><del>-                              uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                              uint8* dst_u,
+                              uint8* dst_v,
+                              int width);
</ins><span class="cx"> void ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444,
</span><span class="cx">                               int src_stride_argb4444,
</span><del>-                              uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVRow_C(const uint8* src_argb, int src_stride_argb,
-                   uint8* dst_u, uint8* dst_v, int width);
-void ARGBToUVJRow_C(const uint8* src_argb, int src_stride_argb,
-                    uint8* dst_u, uint8* dst_v, int width);
-void BGRAToUVRow_C(const uint8* src_bgra, int src_stride_bgra,
-                   uint8* dst_u, uint8* dst_v, int width);
-void ABGRToUVRow_C(const uint8* src_abgr, int src_stride_abgr,
-                   uint8* dst_u, uint8* dst_v, int width);
-void RGBAToUVRow_C(const uint8* src_rgba, int src_stride_rgba,
-                   uint8* dst_u, uint8* dst_v, int width);
-void RGB24ToUVRow_C(const uint8* src_rgb24, int src_stride_rgb24,
-                    uint8* dst_u, uint8* dst_v, int width);
-void RAWToUVRow_C(const uint8* src_raw, int src_stride_raw,
-                  uint8* dst_u, uint8* dst_v, int width);
-void RGB565ToUVRow_C(const uint8* src_rgb565, int src_stride_rgb565,
-                     uint8* dst_u, uint8* dst_v, int width);
-void ARGB1555ToUVRow_C(const uint8* src_argb1555, int src_stride_argb1555,
-                       uint8* dst_u, uint8* dst_v, int width);
-void ARGB4444ToUVRow_C(const uint8* src_argb4444, int src_stride_argb4444,
-                       uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                              uint8* dst_u,
+                              uint8* dst_v,
+                              int width);
+void ARGBToUVJRow_Any_MSA(const uint8* src_argb,
+                          int src_stride_argb,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void BGRAToUVRow_Any_MSA(const uint8* src_bgra,
+                         int src_stride_bgra,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
+void ABGRToUVRow_Any_MSA(const uint8* src_abgr,
+                         int src_stride_abgr,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
+void RGBAToUVRow_Any_MSA(const uint8* src_rgba,
+                         int src_stride_rgba,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
+void RGB24ToUVRow_Any_MSA(const uint8* src_rgb24,
+                          int src_stride_rgb24,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
+void RAWToUVRow_Any_MSA(const uint8* src_raw,
+                        int src_stride_raw,
+                        uint8* dst_u,
+                        uint8* dst_v,
+                        int width);
+void RGB565ToUVRow_Any_MSA(const uint8* src_rgb565,
+                           int src_stride_rgb565,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ARGB1555ToUVRow_Any_MSA(const uint8* src_argb1555,
+                             int src_stride_argb1555,
+                             uint8* dst_u,
+                             uint8* dst_v,
+                             int width);
+void BGRAToUVRow_Any_DSPR2(const uint8* src_bgra,
+                           int src_stride_bgra,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ABGRToUVRow_Any_DSPR2(const uint8* src_abgr,
+                           int src_stride_abgr,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void RGBAToUVRow_Any_DSPR2(const uint8* src_rgba,
+                           int src_stride_rgba,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ARGBToUVRow_Any_DSPR2(const uint8* src_argb,
+                           int src_stride_argb,
+                           uint8* dst_u,
+                           uint8* dst_v,
+                           int width);
+void ARGBToUVRow_C(const uint8* src_argb,
+                   int src_stride_argb,
+                   uint8* dst_u,
+                   uint8* dst_v,
+                   int width);
+void ARGBToUVJRow_C(const uint8* src_argb,
+                    int src_stride_argb,
+                    uint8* dst_u,
+                    uint8* dst_v,
+                    int width);
+void ARGBToUVRow_C(const uint8* src_argb,
+                   int src_stride_argb,
+                   uint8* dst_u,
+                   uint8* dst_v,
+                   int width);
+void ARGBToUVJRow_C(const uint8* src_argb,
+                    int src_stride_argb,
+                    uint8* dst_u,
+                    uint8* dst_v,
+                    int width);
+void BGRAToUVRow_C(const uint8* src_bgra,
+                   int src_stride_bgra,
+                   uint8* dst_u,
+                   uint8* dst_v,
+                   int width);
+void ABGRToUVRow_C(const uint8* src_abgr,
+                   int src_stride_abgr,
+                   uint8* dst_u,
+                   uint8* dst_v,
+                   int width);
+void RGBAToUVRow_C(const uint8* src_rgba,
+                   int src_stride_rgba,
+                   uint8* dst_u,
+                   uint8* dst_v,
+                   int width);
+void RGB24ToUVRow_C(const uint8* src_rgb24,
+                    int src_stride_rgb24,
+                    uint8* dst_u,
+                    uint8* dst_v,
+                    int width);
+void RAWToUVRow_C(const uint8* src_raw,
+                  int src_stride_raw,
+                  uint8* dst_u,
+                  uint8* dst_v,
+                  int width);
+void RGB565ToUVRow_C(const uint8* src_rgb565,
+                     int src_stride_rgb565,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
+void ARGB1555ToUVRow_C(const uint8* src_argb1555,
+                       int src_stride_argb1555,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
+void ARGB4444ToUVRow_C(const uint8* src_argb4444,
+                       int src_stride_argb4444,
+                       uint8* dst_u,
+                       uint8* dst_v,
+                       int width);
</ins><span class="cx"> 
</span><span class="cx"> void ARGBToUV444Row_SSSE3(const uint8* src_argb,
</span><del>-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
</ins><span class="cx"> void ARGBToUV444Row_Any_SSSE3(const uint8* src_argb,
</span><del>-                              uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                              uint8* dst_u,
+                              uint8* dst_v,
+                              int width);
</ins><span class="cx"> 
</span><span class="cx"> void ARGBToUV444Row_C(const uint8* src_argb,
</span><del>-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> 
</span><span class="cx"> void MirrorRow_AVX2(const uint8* src, uint8* dst, int width);
</span><span class="cx"> void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width);
</span><span class="lines">@@ -824,11 +1342,17 @@
</span><span class="cx"> void MirrorRow_Any_NEON(const uint8* src, uint8* dst, int width);
</span><span class="cx"> void MirrorRow_Any_MSA(const uint8* src, uint8* dst, int width);
</span><span class="cx"> 
</span><del>-void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void MirrorUVRow_SSSE3(const uint8* src_uv,
+                       uint8* dst_u,
+                       uint8* dst_v,
</ins><span class="cx">                        int width);
</span><del>-void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void MirrorUVRow_NEON(const uint8* src_uv,
+                      uint8* dst_u,
+                      uint8* dst_v,
</ins><span class="cx">                       int width);
</span><del>-void MirrorUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void MirrorUVRow_DSPR2(const uint8* src_uv,
+                       uint8* dst_u,
+                       uint8* dst_v,
</ins><span class="cx">                        int width);
</span><span class="cx"> void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width);
</span><span class="cx"> 
</span><span class="lines">@@ -843,37 +1367,75 @@
</span><span class="cx"> void ARGBMirrorRow_Any_MSA(const uint8* src, uint8* dst, int width);
</span><span class="cx"> 
</span><span class="cx"> void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width);
</span><del>-void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_SSE2(const uint8* src_uv,
+                     uint8* dst_u,
+                     uint8* dst_v,
</ins><span class="cx">                      int width);
</span><del>-void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_AVX2(const uint8* src_uv,
+                     uint8* dst_u,
+                     uint8* dst_v,
</ins><span class="cx">                      int width);
</span><del>-void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_NEON(const uint8* src_uv,
+                     uint8* dst_u,
+                     uint8* dst_v,
</ins><span class="cx">                      int width);
</span><del>-void SplitUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_DSPR2(const uint8* src_uv,
+                      uint8* dst_u,
+                      uint8* dst_v,
</ins><span class="cx">                       int width);
</span><del>-void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_Any_SSE2(const uint8* src_uv,
+                         uint8* dst_u,
+                         uint8* dst_v,
</ins><span class="cx">                          int width);
</span><del>-void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_Any_AVX2(const uint8* src_uv,
+                         uint8* dst_u,
+                         uint8* dst_v,
</ins><span class="cx">                          int width);
</span><del>-void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_Any_NEON(const uint8* src_uv,
+                         uint8* dst_u,
+                         uint8* dst_v,
</ins><span class="cx">                          int width);
</span><del>-void SplitUVRow_Any_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
</del><ins>+void SplitUVRow_Any_DSPR2(const uint8* src_uv,
+                          uint8* dst_u,
+                          uint8* dst_v,
</ins><span class="cx">                           int width);
</span><span class="cx"> 
</span><del>-void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
</del><ins>+void MergeUVRow_C(const uint8* src_u,
+                  const uint8* src_v,
+                  uint8* dst_uv,
</ins><span class="cx">                   int width);
</span><del>-void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
</del><ins>+void MergeUVRow_SSE2(const uint8* src_u,
+                     const uint8* src_v,
+                     uint8* dst_uv,
</ins><span class="cx">                      int width);
</span><del>-void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
</del><ins>+void MergeUVRow_AVX2(const uint8* src_u,
+                     const uint8* src_v,
+                     uint8* dst_uv,
</ins><span class="cx">                      int width);
</span><del>-void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
</del><ins>+void MergeUVRow_NEON(const uint8* src_u,
+                     const uint8* src_v,
+                     uint8* dst_uv,
</ins><span class="cx">                      int width);
</span><del>-void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
</del><ins>+void MergeUVRow_MSA(const uint8* src_u,
+                    const uint8* src_v,
+                    uint8* dst_uv,
+                    int width);
+void MergeUVRow_Any_SSE2(const uint8* src_u,
+                         const uint8* src_v,
+                         uint8* dst_uv,
</ins><span class="cx">                          int width);
</span><del>-void MergeUVRow_Any_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
</del><ins>+void MergeUVRow_Any_AVX2(const uint8* src_u,
+                         const uint8* src_v,
+                         uint8* dst_uv,
</ins><span class="cx">                          int width);
</span><del>-void MergeUVRow_Any_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
</del><ins>+void MergeUVRow_Any_NEON(const uint8* src_u,
+                         const uint8* src_v,
+                         uint8* dst_uv,
</ins><span class="cx">                          int width);
</span><ins>+void MergeUVRow_Any_MSA(const uint8* src_u,
+                        const uint8* src_v,
+                        uint8* dst_uv,
+                        int width);
</ins><span class="cx"> 
</span><span class="cx"> void CopyRow_SSE2(const uint8* src, uint8* dst, int count);
</span><span class="cx"> void CopyRow_AVX(const uint8* src, uint8* dst, int count);
</span><span class="lines">@@ -890,9 +1452,11 @@
</span><span class="cx"> void ARGBCopyAlphaRow_C(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
</span><del>-void ARGBCopyAlphaRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
</del><ins>+void ARGBCopyAlphaRow_Any_SSE2(const uint8* src_argb,
+                               uint8* dst_argb,
</ins><span class="cx">                                int width);
</span><del>-void ARGBCopyAlphaRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
</del><ins>+void ARGBCopyAlphaRow_Any_AVX2(const uint8* src_argb,
+                               uint8* dst_argb,
</ins><span class="cx">                                int width);
</span><span class="cx"> 
</span><span class="cx"> void ARGBExtractAlphaRow_C(const uint8* src_argb, uint8* dst_a, int width);
</span><span class="lines">@@ -899,19 +1463,24 @@
</span><span class="cx"> void ARGBExtractAlphaRow_SSE2(const uint8* src_argb, uint8* dst_a, int width);
</span><span class="cx"> void ARGBExtractAlphaRow_AVX2(const uint8* src_argb, uint8* dst_a, int width);
</span><span class="cx"> void ARGBExtractAlphaRow_NEON(const uint8* src_argb, uint8* dst_a, int width);
</span><del>-void ARGBExtractAlphaRow_Any_SSE2(const uint8* src_argb, uint8* dst_a,
</del><ins>+void ARGBExtractAlphaRow_Any_SSE2(const uint8* src_argb,
+                                  uint8* dst_a,
</ins><span class="cx">                                   int width);
</span><del>-void ARGBExtractAlphaRow_Any_AVX2(const uint8* src_argb, uint8* dst_a,
</del><ins>+void ARGBExtractAlphaRow_Any_AVX2(const uint8* src_argb,
+                                  uint8* dst_a,
</ins><span class="cx">                                   int width);
</span><del>-void ARGBExtractAlphaRow_Any_NEON(const uint8* src_argb, uint8* dst_a,
</del><ins>+void ARGBExtractAlphaRow_Any_NEON(const uint8* src_argb,
+                                  uint8* dst_a,
</ins><span class="cx">                                   int width);
</span><span class="cx"> 
</span><span class="cx"> void ARGBCopyYToAlphaRow_C(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
</span><del>-void ARGBCopyYToAlphaRow_Any_SSE2(const uint8* src_y, uint8* dst_argb,
</del><ins>+void ARGBCopyYToAlphaRow_Any_SSE2(const uint8* src_y,
+                                  uint8* dst_argb,
</ins><span class="cx">                                   int width);
</span><del>-void ARGBCopyYToAlphaRow_Any_AVX2(const uint8* src_y, uint8* dst_argb,
</del><ins>+void ARGBCopyYToAlphaRow_Any_AVX2(const uint8* src_y,
+                                  uint8* dst_argb,
</ins><span class="cx">                                   int width);
</span><span class="cx"> 
</span><span class="cx"> void SetRow_C(uint8* dst, uint8 v8, int count);
</span><span class="lines">@@ -925,50 +1494,101 @@
</span><span class="cx"> void ARGBSetRow_X86(uint8* dst_argb, uint32 v32, int count);
</span><span class="cx"> void ARGBSetRow_NEON(uint8* dst_argb, uint32 v32, int count);
</span><span class="cx"> void ARGBSetRow_Any_NEON(uint8* dst_argb, uint32 v32, int count);
</span><ins>+void ARGBSetRow_MSA(uint8* dst_argb, uint32 v32, int count);
+void ARGBSetRow_Any_MSA(uint8* dst_argb, uint32 v32, int count);
</ins><span class="cx"> 
</span><span class="cx"> // ARGBShufflers for BGRAToARGB etc.
</span><del>-void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb,
-                      const uint8* shuffler, int width);
-void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb,
-                         const uint8* shuffler, int width);
-void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
-                          const uint8* shuffler, int width);
-void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
-                         const uint8* shuffler, int width);
-void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
-                         const uint8* shuffler, int width);
-void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
-                             const uint8* shuffler, int width);
-void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb,
-                              const uint8* shuffler, int width);
-void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
-                             const uint8* shuffler, int width);
-void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb,
-                             const uint8* shuffler, int width);
</del><ins>+void ARGBShuffleRow_C(const uint8* src_argb,
+                      uint8* dst_argb,
+                      const uint8* shuffler,
+                      int width);
+void ARGBShuffleRow_SSE2(const uint8* src_argb,
+                         uint8* dst_argb,
+                         const uint8* shuffler,
+                         int width);
+void ARGBShuffleRow_SSSE3(const uint8* src_argb,
+                          uint8* dst_argb,
+                          const uint8* shuffler,
+                          int width);
+void ARGBShuffleRow_AVX2(const uint8* src_argb,
+                         uint8* dst_argb,
+                         const uint8* shuffler,
+                         int width);
+void ARGBShuffleRow_NEON(const uint8* src_argb,
+                         uint8* dst_argb,
+                         const uint8* shuffler,
+                         int width);
+void ARGBShuffleRow_MSA(const uint8* src_argb,
+                        uint8* dst_argb,
+                        const uint8* shuffler,
+                        int width);
+void ARGBShuffleRow_Any_SSE2(const uint8* src_argb,
+                             uint8* dst_argb,
+                             const uint8* shuffler,
+                             int width);
+void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb,
+                              uint8* dst_argb,
+                              const uint8* shuffler,
+                              int width);
+void ARGBShuffleRow_Any_AVX2(const uint8* src_argb,
+                             uint8* dst_argb,
+                             const uint8* shuffler,
+                             int width);
+void ARGBShuffleRow_Any_NEON(const uint8* src_argb,
+                             uint8* dst_argb,
+                             const uint8* shuffler,
+                             int width);
+void ARGBShuffleRow_Any_MSA(const uint8* src_argb,
+                            uint8* dst_argb,
+                            const uint8* shuffler,
+                            int width);
</ins><span class="cx"> 
</span><span class="cx"> void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int width);
</span><span class="cx"> void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int width);
</span><span class="cx"> void RAWToRGB24Row_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width);
</span><span class="cx"> void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int width);
</span><del>-void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb,
</del><ins>+void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555,
+                            uint8* dst_argb,
</ins><span class="cx">                             int width);
</span><del>-void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444,
+                            uint8* dst_argb,
</ins><span class="cx">                             int width);
</span><span class="cx"> void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb, int width);
</span><del>-void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb,
</del><ins>+void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555,
+                            uint8* dst_argb,
</ins><span class="cx">                             int width);
</span><del>-void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444,
+                            uint8* dst_argb,
</ins><span class="cx">                             int width);
</span><span class="cx"> 
</span><span class="cx"> void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int width);
</span><ins>+void RGB24ToARGBRow_MSA(const uint8* src_rgb24, uint8* dst_argb, int width);
</ins><span class="cx"> void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int width);
</span><ins>+void RAWToARGBRow_MSA(const uint8* src_raw, uint8* dst_argb, int width);
</ins><span class="cx"> void RAWToRGB24Row_NEON(const uint8* src_raw, uint8* dst_rgb24, int width);
</span><ins>+void RAWToRGB24Row_MSA(const uint8* src_raw, uint8* dst_rgb24, int width);
</ins><span class="cx"> void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int width);
</span><del>-void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
</del><ins>+void RGB565ToARGBRow_MSA(const uint8* src_rgb565, uint8* dst_argb, int width);
+void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555,
+                            uint8* dst_argb,
</ins><span class="cx">                             int width);
</span><del>-void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void ARGB1555ToARGBRow_MSA(const uint8* src_argb1555,
+                           uint8* dst_argb,
+                           int width);
+void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444,
+                            uint8* dst_argb,
</ins><span class="cx">                             int width);
</span><del>-void ARGB4444ToARGBRow_MSA(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void RGB24ToARGBRow_DSPR2(const uint8* src_rgb24, uint8* dst_argb, int width);
+void RAWToARGBRow_DSPR2(const uint8* src_raw, uint8* dst_argb, int width);
+void RGB565ToARGBRow_DSPR2(const uint8* src_rgb565, uint8* dst_argb, int width);
+void ARGB1555ToARGBRow_DSPR2(const uint8* src_argb1555,
+                             uint8* dst_argb,
+                             int width);
+void ARGB4444ToARGBRow_DSPR2(const uint8* src_argb4444,
+                             uint8* dst_argb,
+                             int width);
+void ARGB4444ToARGBRow_MSA(const uint8* src_argb4444,
+                           uint8* dst_argb,
</ins><span class="cx">                            int width);
</span><span class="cx"> void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int width);
</span><span class="cx"> void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int width);
</span><span class="lines">@@ -976,37 +1596,72 @@
</span><span class="cx"> void RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width);
</span><del>-void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb,
</del><ins>+void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24,
+                              uint8* dst_argb,
</ins><span class="cx">                               int width);
</span><span class="cx"> void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int width);
</span><span class="cx"> void RAWToRGB24Row_Any_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width);
</span><span class="cx"> 
</span><del>-void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, uint8* dst_argb,
</del><ins>+void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565,
+                              uint8* dst_argb,
</ins><span class="cx">                               int width);
</span><del>-void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, uint8* dst_argb,
</del><ins>+void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555,
+                                uint8* dst_argb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444,
+                                uint8* dst_argb,
</ins><span class="cx">                                 int width);
</span><del>-void RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565, uint8* dst_argb,
</del><ins>+void RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565,
+                              uint8* dst_argb,
</ins><span class="cx">                               int width);
</span><del>-void ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555, uint8* dst_argb,
</del><ins>+void ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555,
+                                uint8* dst_argb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444,
+                                uint8* dst_argb,
</ins><span class="cx">                                 int width);
</span><span class="cx"> 
</span><del>-void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb,
</del><ins>+void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24,
+                             uint8* dst_argb,
</ins><span class="cx">                              int width);
</span><ins>+void RGB24ToARGBRow_Any_MSA(const uint8* src_rgb24, uint8* dst_argb, int width);
</ins><span class="cx"> void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int width);
</span><ins>+void RAWToARGBRow_Any_MSA(const uint8* src_raw, uint8* dst_argb, int width);
</ins><span class="cx"> void RAWToRGB24Row_Any_NEON(const uint8* src_raw, uint8* dst_rgb24, int width);
</span><del>-void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, uint8* dst_argb,
</del><ins>+void RAWToRGB24Row_Any_MSA(const uint8* src_raw, uint8* dst_rgb24, int width);
+void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565,
+                              uint8* dst_argb,
</ins><span class="cx">                               int width);
</span><del>-void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, uint8* dst_argb,
</del><ins>+void RGB565ToARGBRow_Any_MSA(const uint8* src_rgb565,
+                             uint8* dst_argb,
+                             int width);
+void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555,
+                                uint8* dst_argb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void ARGB1555ToARGBRow_Any_MSA(const uint8* src_argb1555,
+                               uint8* dst_argb,
+                               int width);
+void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444,
+                                uint8* dst_argb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGB4444ToARGBRow_Any_MSA(const uint8* src_argb4444, uint8* dst_argb,
</del><ins>+void RGB24ToARGBRow_Any_DSPR2(const uint8* src_rgb24,
+                              uint8* dst_argb,
+                              int width);
+void RAWToARGBRow_Any_DSPR2(const uint8* src_raw, uint8* dst_argb, int width);
+void RGB565ToARGBRow_Any_DSPR2(const uint8* src_rgb565,
+                               uint8* dst_argb,
</ins><span class="cx">                                int width);
</span><ins>+void ARGB1555ToARGBRow_Any_DSPR2(const uint8* src_argb1555,
+                                 uint8* dst_argb,
+                                 int width);
+void ARGB4444ToARGBRow_Any_DSPR2(const uint8* src_argb4444,
+                                 uint8* dst_argb,
+                                 int width);
</ins><span class="cx"> 
</span><ins>+void ARGB4444ToARGBRow_Any_MSA(const uint8* src_argb4444,
+                               uint8* dst_argb,
+                               int width);
+
</ins><span class="cx"> void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="lines">@@ -1013,12 +1668,18 @@
</span><span class="cx"> void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> 
</span><del>-void ARGBToRGB565DitherRow_C(const uint8* src_argb, uint8* dst_rgb,
-                             const uint32 dither4, int width);
-void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, uint8* dst_rgb,
-                                const uint32 dither4, int width);
-void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, uint8* dst_rgb,
-                                const uint32 dither4, int width);
</del><ins>+void ARGBToRGB565DitherRow_C(const uint8* src_argb,
+                             uint8* dst_rgb,
+                             const uint32 dither4,
+                             int width);
+void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb,
+                                uint8* dst_rgb,
+                                const uint32 dither4,
+                                int width);
+void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb,
+                                uint8* dst_rgb,
+                                const uint32 dither4,
+                                int width);
</ins><span class="cx"> 
</span><span class="cx"> void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="lines">@@ -1029,8 +1690,19 @@
</span><span class="cx"> void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
</span><del>-void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, uint8* dst_rgb,
-                                const uint32 dither4, int width);
</del><ins>+void ARGBToRGB565DitherRow_NEON(const uint8* src_argb,
+                                uint8* dst_rgb,
+                                const uint32 dither4,
+                                int width);
+void ARGBToRGB24Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToRAWRow_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToRGB565Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToARGB1555Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToARGB4444Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToRGB565DitherRow_MSA(const uint8* src_argb,
+                               uint8* dst_rgb,
+                               const uint32 dither4,
+                               int width);
</ins><span class="cx"> 
</span><span class="cx"> void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="lines">@@ -1042,10 +1714,12 @@
</span><span class="cx"> void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void J400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width);
</span><ins>+void J400ToARGBRow_MSA(const uint8* src_y, uint8* dst_argb, int width);
</ins><span class="cx"> void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void J400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void J400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void J400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width);
</span><ins>+void J400ToARGBRow_Any_MSA(const uint8* src_y, uint8* dst_argb, int width);
</ins><span class="cx"> 
</span><span class="cx"> void I444ToARGBRow_C(const uint8* src_y,
</span><span class="cx">                      const uint8* src_u,
</span><span class="lines">@@ -1442,108 +2116,222 @@
</span><span class="cx"> void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void I400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width);
</span><ins>+void I400ToARGBRow_MSA(const uint8* src_y, uint8* dst_argb, int width);
</ins><span class="cx"> void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void I400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width);
</span><span class="cx"> void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width);
</span><ins>+void I400ToARGBRow_Any_MSA(const uint8* src_y, uint8* dst_argb, int width);
</ins><span class="cx"> 
</span><span class="cx"> // ARGB preattenuated alpha blend.
</span><del>-void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1,
-                        uint8* dst_argb, int width);
-void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1,
-                       uint8* dst_argb, int width);
-void ARGBBlendRow_C(const uint8* src_argb, const uint8* src_argb1,
-                    uint8* dst_argb, int width);
</del><ins>+void ARGBBlendRow_SSSE3(const uint8* src_argb,
+                        const uint8* src_argb1,
+                        uint8* dst_argb,
+                        int width);
+void ARGBBlendRow_NEON(const uint8* src_argb,
+                       const uint8* src_argb1,
+                       uint8* dst_argb,
+                       int width);
+void ARGBBlendRow_C(const uint8* src_argb,
+                    const uint8* src_argb1,
+                    uint8* dst_argb,
+                    int width);
</ins><span class="cx"> 
</span><span class="cx"> // Unattenuated planar alpha blend.
</span><del>-void BlendPlaneRow_SSSE3(const uint8* src0, const uint8* src1,
-                         const uint8* alpha, uint8* dst, int width);
-void BlendPlaneRow_Any_SSSE3(const uint8* src0, const uint8* src1,
-                             const uint8* alpha, uint8* dst, int width);
-void BlendPlaneRow_AVX2(const uint8* src0, const uint8* src1,
-                        const uint8* alpha, uint8* dst, int width);
-void BlendPlaneRow_Any_AVX2(const uint8* src0, const uint8* src1,
-                            const uint8* alpha, uint8* dst, int width);
-void BlendPlaneRow_C(const uint8* src0, const uint8* src1,
-                     const uint8* alpha, uint8* dst, int width);
</del><ins>+void BlendPlaneRow_SSSE3(const uint8* src0,
+                         const uint8* src1,
+                         const uint8* alpha,
+                         uint8* dst,
+                         int width);
+void BlendPlaneRow_Any_SSSE3(const uint8* src0,
+                             const uint8* src1,
+                             const uint8* alpha,
+                             uint8* dst,
+                             int width);
+void BlendPlaneRow_AVX2(const uint8* src0,
+                        const uint8* src1,
+                        const uint8* alpha,
+                        uint8* dst,
+                        int width);
+void BlendPlaneRow_Any_AVX2(const uint8* src0,
+                            const uint8* src1,
+                            const uint8* alpha,
+                            uint8* dst,
+                            int width);
+void BlendPlaneRow_C(const uint8* src0,
+                     const uint8* src1,
+                     const uint8* alpha,
+                     uint8* dst,
+                     int width);
</ins><span class="cx"> 
</span><span class="cx"> // ARGB multiply images. Same API as Blend, but these require
</span><span class="cx"> // pointer and width alignment for SSE2.
</span><del>-void ARGBMultiplyRow_C(const uint8* src_argb, const uint8* src_argb1,
-                       uint8* dst_argb, int width);
-void ARGBMultiplyRow_SSE2(const uint8* src_argb, const uint8* src_argb1,
-                          uint8* dst_argb, int width);
-void ARGBMultiplyRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1,
-                              uint8* dst_argb, int width);
-void ARGBMultiplyRow_AVX2(const uint8* src_argb, const uint8* src_argb1,
-                          uint8* dst_argb, int width);
-void ARGBMultiplyRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1,
-                              uint8* dst_argb, int width);
-void ARGBMultiplyRow_NEON(const uint8* src_argb, const uint8* src_argb1,
-                          uint8* dst_argb, int width);
-void ARGBMultiplyRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
-                              uint8* dst_argb, int width);
</del><ins>+void ARGBMultiplyRow_C(const uint8* src_argb,
+                       const uint8* src_argb1,
+                       uint8* dst_argb,
+                       int width);
+void ARGBMultiplyRow_SSE2(const uint8* src_argb,
+                          const uint8* src_argb1,
+                          uint8* dst_argb,
+                          int width);
+void ARGBMultiplyRow_Any_SSE2(const uint8* src_argb,
+                              const uint8* src_argb1,
+                              uint8* dst_argb,
+                              int width);
+void ARGBMultiplyRow_AVX2(const uint8* src_argb,
+                          const uint8* src_argb1,
+                          uint8* dst_argb,
+                          int width);
+void ARGBMultiplyRow_Any_AVX2(const uint8* src_argb,
+                              const uint8* src_argb1,
+                              uint8* dst_argb,
+                              int width);
+void ARGBMultiplyRow_NEON(const uint8* src_argb,
+                          const uint8* src_argb1,
+                          uint8* dst_argb,
+                          int width);
+void ARGBMultiplyRow_Any_NEON(const uint8* src_argb,
+                              const uint8* src_argb1,
+                              uint8* dst_argb,
+                              int width);
+void ARGBMultiplyRow_MSA(const uint8* src_argb,
+                         const uint8* src_argb1,
+                         uint8* dst_argb,
+                         int width);
+void ARGBMultiplyRow_Any_MSA(const uint8* src_argb,
+                             const uint8* src_argb1,
+                             uint8* dst_argb,
+                             int width);
</ins><span class="cx"> 
</span><span class="cx"> // ARGB add images.
</span><del>-void ARGBAddRow_C(const uint8* src_argb, const uint8* src_argb1,
-                  uint8* dst_argb, int width);
-void ARGBAddRow_SSE2(const uint8* src_argb, const uint8* src_argb1,
-                     uint8* dst_argb, int width);
-void ARGBAddRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1,
-                         uint8* dst_argb, int width);
-void ARGBAddRow_AVX2(const uint8* src_argb, const uint8* src_argb1,
-                     uint8* dst_argb, int width);
-void ARGBAddRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1,
-                         uint8* dst_argb, int width);
-void ARGBAddRow_NEON(const uint8* src_argb, const uint8* src_argb1,
-                     uint8* dst_argb, int width);
-void ARGBAddRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
-                         uint8* dst_argb, int width);
</del><ins>+void ARGBAddRow_C(const uint8* src_argb,
+                  const uint8* src_argb1,
+                  uint8* dst_argb,
+                  int width);
+void ARGBAddRow_SSE2(const uint8* src_argb,
+                     const uint8* src_argb1,
+                     uint8* dst_argb,
+                     int width);
+void ARGBAddRow_Any_SSE2(const uint8* src_argb,
+                         const uint8* src_argb1,
+                         uint8* dst_argb,
+                         int width);
+void ARGBAddRow_AVX2(const uint8* src_argb,
+                     const uint8* src_argb1,
+                     uint8* dst_argb,
+                     int width);
+void ARGBAddRow_Any_AVX2(const uint8* src_argb,
+                         const uint8* src_argb1,
+                         uint8* dst_argb,
+                         int width);
+void ARGBAddRow_NEON(const uint8* src_argb,
+                     const uint8* src_argb1,
+                     uint8* dst_argb,
+                     int width);
+void ARGBAddRow_Any_NEON(const uint8* src_argb,
+                         const uint8* src_argb1,
+                         uint8* dst_argb,
+                         int width);
+void ARGBAddRow_MSA(const uint8* src_argb,
+                    const uint8* src_argb1,
+                    uint8* dst_argb,
+                    int width);
+void ARGBAddRow_Any_MSA(const uint8* src_argb,
+                        const uint8* src_argb1,
+                        uint8* dst_argb,
+                        int width);
</ins><span class="cx"> 
</span><span class="cx"> // ARGB subtract images. Same API as Blend, but these require
</span><span class="cx"> // pointer and width alignment for SSE2.
</span><del>-void ARGBSubtractRow_C(const uint8* src_argb, const uint8* src_argb1,
-                       uint8* dst_argb, int width);
-void ARGBSubtractRow_SSE2(const uint8* src_argb, const uint8* src_argb1,
-                          uint8* dst_argb, int width);
-void ARGBSubtractRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1,
-                              uint8* dst_argb, int width);
-void ARGBSubtractRow_AVX2(const uint8* src_argb, const uint8* src_argb1,
-                          uint8* dst_argb, int width);
-void ARGBSubtractRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1,
-                              uint8* dst_argb, int width);
-void ARGBSubtractRow_NEON(const uint8* src_argb, const uint8* src_argb1,
-                          uint8* dst_argb, int width);
-void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
-                              uint8* dst_argb, int width);
</del><ins>+void ARGBSubtractRow_C(const uint8* src_argb,
+                       const uint8* src_argb1,
+                       uint8* dst_argb,
+                       int width);
+void ARGBSubtractRow_SSE2(const uint8* src_argb,
+                          const uint8* src_argb1,
+                          uint8* dst_argb,
+                          int width);
+void ARGBSubtractRow_Any_SSE2(const uint8* src_argb,
+                              const uint8* src_argb1,
+                              uint8* dst_argb,
+                              int width);
+void ARGBSubtractRow_AVX2(const uint8* src_argb,
+                          const uint8* src_argb1,
+                          uint8* dst_argb,
+                          int width);
+void ARGBSubtractRow_Any_AVX2(const uint8* src_argb,
+                              const uint8* src_argb1,
+                              uint8* dst_argb,
+                              int width);
+void ARGBSubtractRow_NEON(const uint8* src_argb,
+                          const uint8* src_argb1,
+                          uint8* dst_argb,
+                          int width);
+void ARGBSubtractRow_Any_NEON(const uint8* src_argb,
+                              const uint8* src_argb1,
+                              uint8* dst_argb,
+                              int width);
+void ARGBSubtractRow_MSA(const uint8* src_argb,
+                         const uint8* src_argb1,
+                         uint8* dst_argb,
+                         int width);
+void ARGBSubtractRow_Any_MSA(const uint8* src_argb,
+                             const uint8* src_argb1,
+                             uint8* dst_argb,
+                             int width);
</ins><span class="cx"> 
</span><span class="cx"> void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
</span><del>-void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
</del><ins>+void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb,
+                                uint8* dst_rgb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
</del><ins>+void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb,
+                                uint8* dst_rgb,
</ins><span class="cx">                                 int width);
</span><span class="cx"> 
</span><del>-void ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
-                                    const uint32 dither4, int width);
-void ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
-                                    const uint32 dither4, int width);
</del><ins>+void ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb,
+                                    uint8* dst_rgb,
+                                    const uint32 dither4,
+                                    int width);
+void ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb,
+                                    uint8* dst_rgb,
+                                    const uint32 dither4,
+                                    int width);
</ins><span class="cx"> 
</span><span class="cx"> void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
</span><del>-void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
</del><ins>+void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb,
+                                uint8* dst_rgb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
</del><ins>+void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb,
+                                uint8* dst_rgb,
</ins><span class="cx">                                 int width);
</span><span class="cx"> 
</span><span class="cx"> void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
</span><span class="cx"> void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
</span><del>-void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
</del><ins>+void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb,
+                                uint8* dst_rgb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
</del><ins>+void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb,
+                                uint8* dst_rgb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
-                                    const uint32 dither4, int width);
</del><ins>+void ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb,
+                                    uint8* dst_rgb,
+                                    const uint32 dither4,
+                                    int width);
+void ARGBToRGB24Row_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToRAWRow_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToRGB565Row_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width);
+void ARGBToARGB1555Row_Any_MSA(const uint8* src_argb,
+                               uint8* dst_rgb,
+                               int width);
+void ARGBToARGB4444Row_Any_MSA(const uint8* src_argb,
+                               uint8* dst_rgb,
+                               int width);
+void ARGBToRGB565DitherRow_Any_MSA(const uint8* src_argb,
+                                   uint8* dst_rgb,
+                                   const uint32 dither4,
+                                   int width);
</ins><span class="cx"> 
</span><span class="cx"> void I444ToARGBRow_Any_NEON(const uint8* src_y,
</span><span class="cx">                             const uint8* src_u,
</span><span class="lines">@@ -1617,6 +2405,24 @@
</span><span class="cx">                             uint8* dst_argb,
</span><span class="cx">                             const struct YuvConstants* yuvconstants,
</span><span class="cx">                             int width);
</span><ins>+void I444ToARGBRow_Any_DSPR2(const uint8* src_y,
+                             const uint8* src_u,
+                             const uint8* src_v,
+                             uint8* dst_argb,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
+void I422ToARGB4444Row_Any_DSPR2(const uint8* src_y,
+                                 const uint8* src_u,
+                                 const uint8* src_v,
+                                 uint8* dst_argb,
+                                 const struct YuvConstants* yuvconstants,
+                                 int width);
+void I422ToARGBRow_Any_DSPR2(const uint8* src_y,
+                             const uint8* src_u,
+                             const uint8* src_v,
+                             uint8* dst_argb,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
</ins><span class="cx"> void I422ToARGBRow_DSPR2(const uint8* src_y,
</span><span class="cx">                          const uint8* src_u,
</span><span class="cx">                          const uint8* src_v,
</span><span class="lines">@@ -1623,6 +2429,23 @@
</span><span class="cx">                          uint8* dst_argb,
</span><span class="cx">                          const struct YuvConstants* yuvconstants,
</span><span class="cx">                          int width);
</span><ins>+void I422ToARGB1555Row_Any_DSPR2(const uint8* src_y,
+                                 const uint8* src_u,
+                                 const uint8* src_v,
+                                 uint8* dst_argb,
+                                 const struct YuvConstants* yuvconstants,
+                                 int width);
+void I411ToARGBRow_Any_DSPR2(const uint8* src_y,
+                             const uint8* src_u,
+                             const uint8* src_v,
+                             uint8* dst_argb,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
+void NV12ToARGBRow_Any_DSPR2(const uint8* src_y,
+                             const uint8* src_uv,
+                             uint8* dst_argb,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
</ins><span class="cx"> void I422ToARGBRow_DSPR2(const uint8* src_y,
</span><span class="cx">                          const uint8* src_u,
</span><span class="cx">                          const uint8* src_v,
</span><span class="lines">@@ -1629,160 +2452,341 @@
</span><span class="cx">                          uint8* dst_argb,
</span><span class="cx">                          const struct YuvConstants* yuvconstants,
</span><span class="cx">                          int width);
</span><ins>+void I444ToARGBRow_Any_MSA(const uint8* src_y,
+                           const uint8* src_u,
+                           const uint8* src_v,
+                           uint8* dst_argb,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void I422ToARGBRow_Any_MSA(const uint8* src_y,
+                           const uint8* src_u,
+                           const uint8* src_v,
+                           uint8* dst_argb,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void I422ToRGBARow_Any_MSA(const uint8* src_y,
+                           const uint8* src_u,
+                           const uint8* src_v,
+                           uint8* dst_argb,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void I422AlphaToARGBRow_Any_MSA(const uint8* src_y,
+                                const uint8* src_u,
+                                const uint8* src_v,
+                                const uint8* src_a,
+                                uint8* dst_argb,
+                                const struct YuvConstants* yuvconstants,
+                                int width);
+void I422ToRGB24Row_Any_MSA(const uint8* src_y,
+                            const uint8* src_u,
+                            const uint8* src_v,
+                            uint8* dst_rgb24,
+                            const struct YuvConstants* yuvconstants,
+                            int width);
+void I422ToRGB565Row_Any_MSA(const uint8* src_y,
+                             const uint8* src_u,
+                             const uint8* src_v,
+                             uint8* dst_rgb565,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
+void I422ToARGB4444Row_Any_MSA(const uint8* src_y,
+                               const uint8* src_u,
+                               const uint8* src_v,
+                               uint8* dst_argb4444,
+                               const struct YuvConstants* yuvconstants,
+                               int width);
+void I422ToARGB1555Row_Any_MSA(const uint8* src_y,
+                               const uint8* src_u,
+                               const uint8* src_v,
+                               uint8* dst_argb1555,
+                               const struct YuvConstants* yuvconstants,
+                               int width);
+void NV12ToARGBRow_Any_MSA(const uint8* src_y,
+                           const uint8* src_uv,
+                           uint8* dst_argb,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void NV12ToRGB565Row_Any_MSA(const uint8* src_y,
+                             const uint8* src_uv,
+                             uint8* dst_argb,
+                             const struct YuvConstants* yuvconstants,
+                             int width);
+void NV21ToARGBRow_Any_MSA(const uint8* src_y,
+                           const uint8* src_vu,
+                           uint8* dst_argb,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void YUY2ToARGBRow_Any_MSA(const uint8* src_yuy2,
+                           uint8* dst_argb,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
+void UYVYToARGBRow_Any_MSA(const uint8* src_uyvy,
+                           uint8* dst_argb,
+                           const struct YuvConstants* yuvconstants,
+                           int width);
</ins><span class="cx"> 
</span><span class="cx"> void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_AVX2(const uint8* src_yuy2,
+                      int stride_yuy2,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
</span><del>-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_SSE2(const uint8* src_yuy2,
+                      int stride_yuy2,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
</span><del>-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_NEON(const uint8* src_yuy2,
+                      int stride_yuy2,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void YUY2ToUV422Row_NEON(const uint8* src_yuy2,
</span><del>-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void YUY2ToYRow_MSA(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_MSA(const uint8* src_yuy2, int stride_yuy2,
-                     uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_MSA(const uint8* src_yuy2,
+                     int stride_yuy2,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
</ins><span class="cx"> void YUY2ToUV422Row_MSA(const uint8* src_yuy2,
</span><del>-                        uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                        uint8* dst_u,
+                        uint8* dst_v,
+                        int width);
</ins><span class="cx"> void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2,
-                   uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_C(const uint8* src_yuy2,
+                   int stride_yuy2,
+                   uint8* dst_u,
+                   uint8* dst_v,
+                   int width);
</ins><span class="cx"> void YUY2ToUV422Row_C(const uint8* src_yuy2,
</span><del>-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, int stride_yuy2,
-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2,
+                          int stride_yuy2,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
</ins><span class="cx"> void YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2,
</span><del>-                             uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                             uint8* dst_u,
+                             uint8* dst_v,
+                             int width);
</ins><span class="cx"> void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2,
-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2,
+                          int stride_yuy2,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
</ins><span class="cx"> void YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2,
</span><del>-                             uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                             uint8* dst_u,
+                             uint8* dst_v,
+                             int width);
</ins><span class="cx"> void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2,
-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2,
+                          int stride_yuy2,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
</ins><span class="cx"> void YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2,
</span><del>-                             uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                             uint8* dst_u,
+                             uint8* dst_v,
+                             int width);
</ins><span class="cx"> void YUY2ToYRow_Any_MSA(const uint8* src_yuy2, uint8* dst_y, int width);
</span><del>-void YUY2ToUVRow_Any_MSA(const uint8* src_yuy2, int stride_yuy2,
-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void YUY2ToUVRow_Any_MSA(const uint8* src_yuy2,
+                         int stride_yuy2,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void YUY2ToUV422Row_Any_MSA(const uint8* src_yuy2,
</span><del>-                            uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                            uint8* dst_u,
+                            uint8* dst_v,
+                            int width);
</ins><span class="cx"> void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_AVX2(const uint8* src_uyvy,
+                      int stride_uyvy,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
</span><del>-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_SSE2(const uint8* src_uyvy,
+                      int stride_uyvy,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
</span><del>-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_AVX2(const uint8* src_uyvy,
+                      int stride_uyvy,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
</span><del>-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_NEON(const uint8* src_uyvy,
+                      int stride_uyvy,
+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void UYVYToUV422Row_NEON(const uint8* src_uyvy,
</span><del>-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void UYVYToYRow_MSA(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_MSA(const uint8* src_uyvy, int stride_uyvy,
-                     uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_MSA(const uint8* src_uyvy,
+                     int stride_uyvy,
+                     uint8* dst_u,
+                     uint8* dst_v,
+                     int width);
</ins><span class="cx"> void UYVYToUV422Row_MSA(const uint8* src_uyvy,
</span><del>-                        uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                        uint8* dst_u,
+                        uint8* dst_v,
+                        int width);
</ins><span class="cx"> 
</span><span class="cx"> void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy,
-                   uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_C(const uint8* src_uyvy,
+                   int stride_uyvy,
+                   uint8* dst_u,
+                   uint8* dst_v,
+                   int width);
</ins><span class="cx"> void UYVYToUV422Row_C(const uint8* src_uyvy,
</span><del>-                      uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                      uint8* dst_u,
+                      uint8* dst_v,
+                      int width);
</ins><span class="cx"> void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, int stride_uyvy,
-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy,
+                          int stride_uyvy,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
</ins><span class="cx"> void UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy,
</span><del>-                             uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                             uint8* dst_u,
+                             uint8* dst_v,
+                             int width);
</ins><span class="cx"> void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy,
-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy,
+                          int stride_uyvy,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
</ins><span class="cx"> void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy,
</span><del>-                             uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                             uint8* dst_u,
+                             uint8* dst_v,
+                             int width);
</ins><span class="cx"> void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy,
-                          uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_Any_NEON(const uint8* src_uyvy,
+                          int stride_uyvy,
+                          uint8* dst_u,
+                          uint8* dst_v,
+                          int width);
</ins><span class="cx"> void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy,
</span><del>-                             uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                             uint8* dst_u,
+                             uint8* dst_v,
+                             int width);
</ins><span class="cx"> void UYVYToYRow_Any_MSA(const uint8* src_uyvy, uint8* dst_y, int width);
</span><del>-void UYVYToUVRow_Any_MSA(const uint8* src_uyvy, int stride_uyvy,
-                         uint8* dst_u, uint8* dst_v, int width);
</del><ins>+void UYVYToUVRow_Any_MSA(const uint8* src_uyvy,
+                         int stride_uyvy,
+                         uint8* dst_u,
+                         uint8* dst_v,
+                         int width);
</ins><span class="cx"> void UYVYToUV422Row_Any_MSA(const uint8* src_uyvy,
</span><del>-                            uint8* dst_u, uint8* dst_v, int width);
</del><ins>+                            uint8* dst_u,
+                            uint8* dst_v,
+                            int width);
</ins><span class="cx"> 
</span><span class="cx"> void I422ToYUY2Row_C(const uint8* src_y,
</span><span class="cx">                      const uint8* src_u,
</span><span class="cx">                      const uint8* src_v,
</span><del>-                     uint8* dst_yuy2, int width);
</del><ins>+                     uint8* dst_yuy2,
+                     int width);
</ins><span class="cx"> void I422ToUYVYRow_C(const uint8* src_y,
</span><span class="cx">                      const uint8* src_u,
</span><span class="cx">                      const uint8* src_v,
</span><del>-                     uint8* dst_uyvy, int width);
</del><ins>+                     uint8* dst_uyvy,
+                     int width);
</ins><span class="cx"> void I422ToYUY2Row_SSE2(const uint8* src_y,
</span><span class="cx">                         const uint8* src_u,
</span><span class="cx">                         const uint8* src_v,
</span><del>-                        uint8* dst_yuy2, int width);
</del><ins>+                        uint8* dst_yuy2,
+                        int width);
</ins><span class="cx"> void I422ToUYVYRow_SSE2(const uint8* src_y,
</span><span class="cx">                         const uint8* src_u,
</span><span class="cx">                         const uint8* src_v,
</span><del>-                        uint8* dst_uyvy, int width);
</del><ins>+                        uint8* dst_uyvy,
+                        int width);
</ins><span class="cx"> void I422ToYUY2Row_Any_SSE2(const uint8* src_y,
</span><span class="cx">                             const uint8* src_u,
</span><span class="cx">                             const uint8* src_v,
</span><del>-                            uint8* dst_yuy2, int width);
</del><ins>+                            uint8* dst_yuy2,
+                            int width);
</ins><span class="cx"> void I422ToUYVYRow_Any_SSE2(const uint8* src_y,
</span><span class="cx">                             const uint8* src_u,
</span><span class="cx">                             const uint8* src_v,
</span><del>-                            uint8* dst_uyvy, int width);
</del><ins>+                            uint8* dst_uyvy,
+                            int width);
</ins><span class="cx"> void I422ToYUY2Row_NEON(const uint8* src_y,
</span><span class="cx">                         const uint8* src_u,
</span><span class="cx">                         const uint8* src_v,
</span><del>-                        uint8* dst_yuy2, int width);
</del><ins>+                        uint8* dst_yuy2,
+                        int width);
</ins><span class="cx"> void I422ToUYVYRow_NEON(const uint8* src_y,
</span><span class="cx">                         const uint8* src_u,
</span><span class="cx">                         const uint8* src_v,
</span><del>-                        uint8* dst_uyvy, int width);
</del><ins>+                        uint8* dst_uyvy,
+                        int width);
</ins><span class="cx"> void I422ToYUY2Row_Any_NEON(const uint8* src_y,
</span><span class="cx">                             const uint8* src_u,
</span><span class="cx">                             const uint8* src_v,
</span><del>-                            uint8* dst_yuy2, int width);
</del><ins>+                            uint8* dst_yuy2,
+                            int width);
</ins><span class="cx"> void I422ToUYVYRow_Any_NEON(const uint8* src_y,
</span><span class="cx">                             const uint8* src_u,
</span><span class="cx">                             const uint8* src_v,
</span><del>-                            uint8* dst_uyvy, int width);
</del><ins>+                            uint8* dst_uyvy,
+                            int width);
</ins><span class="cx"> void I422ToYUY2Row_MSA(const uint8* src_y,
</span><span class="cx">                        const uint8* src_u,
</span><span class="cx">                        const uint8* src_v,
</span><del>-                       uint8* dst_yuy2, int width);
</del><ins>+                       uint8* dst_yuy2,
+                       int width);
</ins><span class="cx"> void I422ToUYVYRow_MSA(const uint8* src_y,
</span><span class="cx">                        const uint8* src_u,
</span><span class="cx">                        const uint8* src_v,
</span><del>-                       uint8* dst_uyvy, int width);
</del><ins>+                       uint8* dst_uyvy,
+                       int width);
</ins><span class="cx"> void I422ToYUY2Row_Any_MSA(const uint8* src_y,
</span><span class="cx">                            const uint8* src_u,
</span><span class="cx">                            const uint8* src_v,
</span><del>-                           uint8* dst_yuy2, int width);
</del><ins>+                           uint8* dst_yuy2,
+                           int width);
</ins><span class="cx"> void I422ToUYVYRow_Any_MSA(const uint8* src_y,
</span><span class="cx">                            const uint8* src_u,
</span><span class="cx">                            const uint8* src_v,
</span><del>-                           uint8* dst_uyvy, int width);
</del><ins>+                           uint8* dst_uyvy,
+                           int width);
</ins><span class="cx"> 
</span><span class="cx"> // Effects related row functions.
</span><span class="cx"> void ARGBAttenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="lines">@@ -1789,14 +2793,22 @@
</span><span class="cx"> void ARGBAttenuateRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBAttenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBAttenuateRow_NEON(const uint8* src_argb, uint8* dst_argb, int width);
</span><del>-void ARGBAttenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
</del><ins>+void ARGBAttenuateRow_MSA(const uint8* src_argb, uint8* dst_argb, int width);
+void ARGBAttenuateRow_Any_SSE2(const uint8* src_argb,
+                               uint8* dst_argb,
</ins><span class="cx">                                int width);
</span><del>-void ARGBAttenuateRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb,
</del><ins>+void ARGBAttenuateRow_Any_SSSE3(const uint8* src_argb,
+                                uint8* dst_argb,
</ins><span class="cx">                                 int width);
</span><del>-void ARGBAttenuateRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
</del><ins>+void ARGBAttenuateRow_Any_AVX2(const uint8* src_argb,
+                               uint8* dst_argb,
</ins><span class="cx">                                int width);
</span><del>-void ARGBAttenuateRow_Any_NEON(const uint8* src_argb, uint8* dst_argb,
</del><ins>+void ARGBAttenuateRow_Any_NEON(const uint8* src_argb,
+                               uint8* dst_argb,
</ins><span class="cx">                                int width);
</span><ins>+void ARGBAttenuateRow_Any_MSA(const uint8* src_argb,
+                              uint8* dst_argb,
+                              int width);
</ins><span class="cx"> 
</span><span class="cx"> // Inverse table for unattenuate, shared by C and SSE2.
</span><span class="cx"> extern const uint32 fixed_invtbl8[256];
</span><span class="lines">@@ -1803,25 +2815,35 @@
</span><span class="cx"> void ARGBUnattenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
</span><span class="cx"> void ARGBUnattenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
</span><del>-void ARGBUnattenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,