It works on all platforms except Android and iOS (FFmpeg limitation).
Implemented behind compile time flags, off by default.
The plan is to have it enabled in Chrome (see bug), but not in Chromium/webrtc by default.
Flags to turn it on:
- rtc_use_h264 = true
- ffmpeg_branding = "Chrome" (or other brand that includes H.264 decoder)
Tests using H264:
- video_loopback --codec=H264
- screenshare_loopback --codec=H264
- video_engine_tests (EndToEndTest.SendsAndReceivesH264)
NOTRY=True
BUG=500605, 468365
BUG=https://bugs.chromium.org/p/webrtc/issues/detail?id=5424
Review URL: https://codereview.webrtc.org/1306813009
Cr-Commit-Position: refs/heads/master@{#11390}
That these declarations were missing was a bug, which apparently
didn't actually cause build problems in either Chromium or WebRTC
standalone. (Presumably, because rent_a_codec was always linked
together with other build targets that did declare such dependencies.)
BUG=webrtc:5435
Review URL: https://codereview.webrtc.org/1607463002
Cr-Commit-Position: refs/heads/master@{#11303}
This makes it possible to use protobuffers with
an external protobuf library instead of the one that
comes with the WebRTC code.
NOTRY=True
Review URL: https://codereview.webrtc.org/1589433002
Cr-Commit-Position: refs/heads/master@{#11236}
Defining use_third_party_h264 directly, and indirectly defining use_openh264 (from third_party/openh264) and ffmpeg_branding (from third_party/ffmpeg).
These will be used in a follow-up CL that adds an encoder and decoder implementation.
The flags are added in this CL so that they can be used by trybots/waterfall bots in GN without "Build argument had no effect" errors. Equivalent GYP changes are also added.
BUG=468365
Review URL: https://codereview.webrtc.org/1575913003
Cr-Commit-Position: refs/heads/master@{#11204}
This will make it possible to remove the build_with_libjingle=1 and key=''
GYP_DEFINES the bots are using (https://codereview.chromium.org/1450313002/).
It will also pave the road for enabling more WebRTC native tests on iOS.
BUG=webrtc:4755,webrtc:3185,webrtc:5165
TESTED=git cl try -c --bot=android_compile_rel --bot=linux_compile_rel --bot=win_compile_rel --bot=mac_compile_rel --bot=ios_rel --bot=linux_gn_rel --bot=win_x64_gn_rel --bot=mac_x64_gn_rel --bot=android_gn_rel -m tryserver.webrtc
Local compilation with:
GYP_DEFINES='OS=ios target_arch=arm' webrtc/build/gyp_webrtc
ninja -C out/Release-iphoneos
GYP_DEFINES='OS=ios target_arch=arm chromium_ios_signing=0' webrtc/build/gyp_webrtc
ninja -C out/Release-iphoneos
GYP_DEFINES='OS=ios target_arch=arm64' webrtc/build/gyp_webrtc
ninja -C out/Release-iphoneos
GYP_DEFINES='OS=ios target_arch=ia32' webrtc/build/gyp_webrtc
ninja -C out/Release-iphonesimulator
GYP_DEFINES='OS=ios target_arch=x64' webrtc/build/gyp_webrtc
ninja -C out/Release-iphonesimulator
R=henrika@webrtc.org
Review URL: https://codereview.webrtc.org/1457053003 .
Cr-Commit-Position: refs/heads/master@{#10711}
JNI already has jstring<->UTF8 string conversion, so using that should
save ~1mb off android binaries (ICU is *large*), probably around
300-400k after compression.
BUG=
Review URL: https://codereview.webrtc.org/1430023005
Cr-Commit-Position: refs/heads/master@{#10545}
We used to link with all audio codecs unconditionally (except Opus);
this patch makes gyp and gn only link to the ones that are used.
This unfortunately fails to have a measurable impact on Chromium
binary size, at least on x86_64 Linux; it turns out that iLBC and iSAC
fix were already being excluded from Chromium by some other means,
likely just the linker omitting compilation units with no incoming
references.
(This was previously landed as revisions 10046 and 10060, and got
reverted because it broke several of the Chromium FYI bots.)
BUG=webrtc:4557
Review URL: https://codereview.webrtc.org/1368843003
Cr-Commit-Position: refs/heads/master@{#10127}
Our perf test suite webrtc_perf_tests timed out, which caused most
of the delay landing this (https://crbug.comn/535973 and
https://codereview.chromium.org/1370133004).
Other problems with executing Android tests also needed to be
resolved in order to land this (http://crbug.com/534849).
Libvpx has moved from third_party/libvpx to third_party/libvpx_new
as of https://codereview.chromium.org/1323333002/
Android GN was blocking this roll due to a problem that ended up
being caused by a bug (http://crbug.com/534849).
Relevant changes:
* src/buildtools: f7310ee..8d89c1b
* src/third_party/boringssl/src: 1d128f3..4c60d35
* src/third_party/icu: 6b3ce81..423fc7e
* src/third_party/libjpeg_turbo: 631e2dd..e4e7503
* src/third_party/libvpx: ac1772e..70db223
* src/third_party/libyuv: fcacbfb..62c49dc
* src/tools/gyp: 5d01a8c..01528c7
* src/tools/swarming_client: 77f720b..6e5d2b2
Details: 310ea93..8cf53d6/DEPS
Clang version changed 245965:247874
Details: 310ea93..8cf53d6/tools/clang/scripts/update.sh
BUG=481034, 535973
TBR=marpan@webrtc.org
Review URL: https://codereview.webrtc.org/1355083002
Cr-Commit-Position: refs/heads/master@{#10101}
Reason for revert:
Breaking Chromium FYI bots.
Original issue's description:
> Don't link with audio codecs that we don't use
>
> We used to link with all audio codecs unconditionally (except Opus);
> this patch makes gyp and gn only link to the ones that are used.
>
> (This unfortunately fails to have a measurable impact on Chromium
> binary size, at least on x86_64 Linux; it turns out that iLBC and iSAC
> fix were already being excluded from Chromium by some other means
> (likely just the linker omitting compilation units with no incoming
> references).)
>
> BUG=webrtc:4557
>
> Committed: https://crrev.com/f66a9251424351ea6d631c54dd1feb64cc13d809
> Cr-Commit-Position: refs/heads/master@{#10046}
TBR=henrik.lundin@webrtc.org,tina.legrand@webrtc.org,kjellander@webrtc.org,kwiberg@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4557
Review URL: https://codereview.webrtc.org/1368933002
Cr-Commit-Position: refs/heads/master@{#10069}
We used to link with all audio codecs unconditionally (except Opus);
this patch makes gyp and gn only link to the ones that are used.
(This unfortunately fails to have a measurable impact on Chromium
binary size, at least on x86_64 Linux; it turns out that iLBC and iSAC
fix were already being excluded from Chromium by some other means
(likely just the linker omitting compilation units with no incoming
references).)
BUG=webrtc:4557
Review URL: https://codereview.webrtc.org/1349393003
Cr-Commit-Position: refs/heads/master@{#10046}
Reason for revert:
Breaks FYI bots.
ninja: error: '../../third_party/webrtc_overrides/webrtc/base/logging.cc', needed by 'obj/third_party/webrtc_overrides/webrtc/base/rtc_base.logging.o', missing and no known rule to make it
Original issue's description:
> Update build files to use webrtc_overrides in Chromium instead of overrides.
>
> This is a part of moving the overrides to Chromium. See bug comment #65 for all steps.
>
> BUG=chromium:468375
>
> Committed: https://crrev.com/baae0a8a6c873ddf812a5687b84638359b2e7e5b
> Cr-Commit-Position: refs/heads/master@{#9996}
TBR=kjellander@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:468375
Review URL: https://codereview.webrtc.org/1352423002
Cr-Commit-Position: refs/heads/master@{#9998}
This is a part of moving the overrides to Chromium. See bug comment #65 for all steps.
BUG=chromium:468375
Review URL: https://codereview.webrtc.org/1354933002
Cr-Commit-Position: refs/heads/master@{#9996}
The disabling of the sin,cos,sinf,cosf functions had the wrong
condition for GN. This fixes that and also makes the condition
in common.gypi a bit more readable.
BUG=
R=pbos@webrtc.org
Review URL: https://codereview.webrtc.org/1307633008 .
Cr-Commit-Position: refs/heads/master@{#9871}
Merge WEBRTC_ARCH_ARM64_NEON and WEBRTC_ARCH_ARM_NEON into one
WEBRTC_HAS_NEON.
Replace WEBRTC_DETECT_ARM_NEON by WEBRTC_DETECT_NEON.
Replace WEBRTC_ARCH_ARM by WEBRTC_ARCH_ARM64 for arm64 cpu.
BUG=4002
R=andrew@webrtc.org, jridges@masque.com, kjellander@webrtc.org
Change-Id: I870a4d0682b80633b671c9aab733153f6d95a980
Review URL: https://webrtc-codereview.appspot.com/49309004
Cr-Commit-Position: refs/heads/master@{#9228}
BUG=4573,2982,2175,3590
TEST=modules_unittests --gtest_filter=AudioDevice*, AppRTCDemo and WebRTCDemo
Summary:
- Removes dependency of the 'enable_android_opensl' compiler flag.
Instead, OpenSL ES is always supported, and will enabled for devices that
supports low-latency output.
- WebRTC no longer supports OpenSL ES for the input/recording side.
- Removes old code and demos using OpenSL ES for audio input.
- Improves accuracy of total delay estimates (better AEC performance).
- Reduces roundtrip audio latency; especially when OpenSL can be used.
Performance verified on: Nexus 5, 6, 7 and 9. Samsung Galaxy S4 and S6.
Android One device.
R=magjed@webrtc.org, phoglund@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/51759004
Cr-Commit-Position: refs/heads/master@{#9208}
This makes the build more flexible when linking against
prebuilt external libraries.
Use existing build_* variables for libyuv and json in talk/
(already in use in webrtc/).
Also make it possible to avoid building the GTK parts of the Linux build.
BUG=4242
R=andrew@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/44179005
Cr-Commit-Position: refs/heads/master@{#9087}
Now that android_webview_build is no longer supported, remove build
conditionals referencing it and also remove the extra level of
indirection used to reference the cpufeatures target.
BUG=chromium:440793
R=henrika@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/44119005
Patch from Richard Coles <torne@chromium.org>.
Cr-Commit-Position: refs/heads/master@{#8963}
WebRTC doesn't use or support the target_subarch
GYP variable in the same way as Chromium does, and we
currently don't build fat binaries at our buildbots.
This is needed to unblock the chromium_revision roll in
https://webrtc-codereview.appspot.com/50569004/ and it
also makes it a bit easier to build for iOS since it
is no longer needed to set target_subarch=arm64 when
target_arch=arm64 (i.e. when you build for ARM64).
TBR=tkchin@webrtc.org
BUG=4503
Review URL: https://webrtc-codereview.appspot.com/48869004
Cr-Commit-Position: refs/heads/master@{#8937}
The problem we were running into on the Mac 10.9 debug bot in Chrome turned out to be good ol'fashion memory corruption. Part of webrtc was being compiled with _DEBUG, another half without it. This caused the definition of some symbols to be out of sync (notably pthread_mutex_t) and would cause code built from common.gypi, to overwrite memory allocated via common types from base/base.gypi derived code. Fun stuff to track down. This was a problem in particular with base/criticalsection.h since it's inlined into multiple object files but will have different definitions of what a mutex is.
TBR=pbos,kjellander
BUG=
Review URL: https://webrtc-codereview.appspot.com/43659004
Cr-Commit-Position: refs/heads/master@{#8646}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8646 4adac7df-926f-26a2-2b94-8c16560cd09d
For build_with_chromium==1 the includes will be the same.
For build_with_chromium==0 the <(DEPTH) variable is replaced by ../..
which should be the same in all common use cases.
This change makes the include paths for all GYP targets
more similar to the setup in the
direct_dependent_settings section further down.
BUG=4185
TESTED=Trybots + build in Chromium with third_party/webrtc patched with this CL.
R=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/41739004
Cr-Commit-Position: refs/heads/master@{#8219}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8219 4adac7df-926f-26a2-2b94-8c16560cd09d
The work landed in 4034 (use of HW AEC in AppRTC) is currently not
active by default since we build for Open SL. I missed that when I
did my initial change (since I always disabled OpenSL by GYP_DEFINES).
This CL ensures that Java based audio is used as default in WebRTC.
It would be great if we could shift over to Open SL (to cut latency)
but that would (today) mean that we can't support the HW AEC.
Hence, we are not ready to do so yet.
BUG=4034
R=kjellander@webrtc.org, perkj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/36699004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8040 4adac7df-926f-26a2-2b94-8c16560cd09d
All *neon.S files in aecm and ns modules have been removed. We need no
assembly offset generation now.
Pass byte to byte conformance test for aecm and ns test in audioproc
between new NEON (written in intrinsics) version and C version on both
ARMv7 and ARM64.
BUG=3580
R=andrew@webrtc.org, jridges@masque.com
Change-Id: I05d43d0c04d00bead65ca8c8fda25f0a42394b2b
Review URL: https://webrtc-codereview.appspot.com/32229004
Patch from Zhongwei Yai <zhongwei.yao@arm.com>.
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7800 4adac7df-926f-26a2-2b94-8c16560cd09d
Allows successful build of arm64 libraries using
GYP_DEFINES="OS=ios target_arch=arm64 target_subarch=arm64".
Note that not all libraries will be NEON optimized (eg common_audio),
however most importantly libvpx will be. WEBRTC_ARCH_ARM needs to be
defined so that libvpx doesn't post-process, which is significantly
detrimental to performance.
BUG=3898
R=kjellander@webrtc.org, pthatcher@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/26959004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7573 4adac7df-926f-26a2-2b94-8c16560cd09d