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}
Introduces a new capture class derived from cricket::VideoCapturer that
provides the ability to switch cameras and updates AppRTCDemo to use it.
Some future work pending to clean up AppRTCDemo UI.
BUG=4070
R=magjed@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/48279005
Cr-Commit-Position: refs/heads/master@{#9137}
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}
WebRtcTextureVideoFrame is currently an empty shell that only provides a convenience constructor of I420VideoFrame with a texture buffer. This CL moves that constructor, and all unittests, of WebRtcTextureVideoFrame into the base class. Then it's possible to completely remove WebRtcTextureVideoFrame and all its files.
BUG=1128
R=pbos@webrtc.org, perkj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/48399004
Cr-Commit-Position: refs/heads/master@{#8638}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8638 4adac7df-926f-26a2-2b94-8c16560cd09d
Mostly, it's about moving constructors and descructors to the .cc
files, so that they won't be inlined everywhere.
The reason this CL is so big is that a lot of code was using
common_types.h without declaring a dependency on webrtc_common, which
broke the build once common_types.h started to depend on
common_types.cc.
BUG=163
R=kjellander@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/26089004
Cr-Commit-Position: refs/heads/master@{#8516}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8516 4adac7df-926f-26a2-2b94-8c16560cd09d
This CL is part II in a major refactoring effort. See https://webrtc-codereview.appspot.com/33969004 for part I.
- Removes unused code and old WEBRTC logging macros
- Now uses optimal sample rate and buffer size in Java AudioTrack (used hard-coded sample rate before)
- Makes code more inline with the implementation in Chrome
- Adds helper methods for JNI handling to improve readability
- Changes the threading model (high-prio audio thread now lives in Java-land and C++ only works as proxy)
- Simplified the delay estimate
- Adds basic thread checks
- Removes all locks in C++ land
- Removes all locks in Java
- Improves construction/destruction
- Additional cleanup
Tested using AppRTCDemo and WebRTCDemo APKs on N6, N5, N7, Samsung Galaxy S4 and
Samsung Galaxy S4 mini (which uses 44.1kHz as native sample rate).
BUG=NONE
R=magjed@webrtc.org, perkj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/39169004
Cr-Commit-Position: refs/heads/master@{#8460}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8460 4adac7df-926f-26a2-2b94-8c16560cd09d
For now:
java_helpers - JNI convenience functions etc. Can in theory be moved to libjingle / webrtc general one day.
classreferenceholder - app/webrtc specific Java class loader.
androidvideocapturer_jni - the jni part of the video capturer I added.
peerconnection_jni - all the rest.
This also move all jni specifics into ns webrtc_jni to avoid naming collision.
R=glaznev@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/38099004
Cr-Commit-Position: refs/heads/master@{#8363}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8363 4adac7df-926f-26a2-2b94-8c16560cd09d
This CL performs the following renames of targets to
make GYP and GN more unified and make the targets that
have the same name as the module and include the external
render/capture implementation (the internal one is only
used by WebRTC tests).
This makes it natural to declare dependencies in GN
without having to specify the target.
Summary of the renames:
GYP:
video_render_module_impl -> video_render (new target)
video_capture_module_impl -> video_capture (new target)
GN:
video_capture -> video_capture_module (now identical to the GYP target)
video_capture_impl -> video_capture
video_render -> video_render_module (now identical to the GYP target)
video_render_impl -> video_render
BUG=456815
R=andresp@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/35099004
Cr-Commit-Position: refs/heads/master@{#8323}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8323 4adac7df-926f-26a2-2b94-8c16560cd09d
In order to do that, the signaling thread is also changed to wrap the current thread unless an external signaling thread thread is specified in the call to CreatePeerConnectionFactory.
This cleans up the PeerConnectionFactory and makes sure a user of the API will always access the factory on the signaling thread.
Note that both Chrome and the Android implementation use an external signaling thread.
R=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/35429004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8039 4adac7df-926f-26a2-2b94-8c16560cd09d
Original cl description:
Change Android PeerConnectionUnittest to build using Chrome macros.
The purpose is to be able to run the tests using Chromes buildbots. To run:
CHECKOUT_SOURCE_ROOT=`pwd` build/android/test_runner.py instrumentation --test-apk=libjingle_peerconnection_android_unittest
This also add a new build target to build java PeerConnection using Chromes build macros.
BUG=4031
R=kjellander@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/26349004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7874 4adac7df-926f-26a2-2b94-8c16560cd09d
The purpose is to be able to run the tests using Chromes buildbots. To run:
CHECKOUT_SOURCE_ROOT=`pwd` build/android/test_runner.py instrumentation --test-apk=libjingle_peerconnection_android_unittest
This also add a new build target to build java PeerConnection using Chromes build macros.
BUG=4031
R=kjellander@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/28189004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7826 4adac7df-926f-26a2-2b94-8c16560cd09d
This didn't compile on the FYI bots. Example error:
FAILED: E:\b\depot_tools\python276_bin\python.exe gyp-win-tool link-with-manifests environment.x86 True chrome_child.dll "E:\b\depot_tools\python276_bin\python.exe gyp-win-tool link-wrapper environment.x86 False link.exe /nologo /IMPLIB:chrome_child.dll.lib /DLL /OUT:chrome_child.dll @chrome_child.dll.rsp" 2 mt.exe rc.exe "obj\chrome\chrome_child_dll.chrome_child.dll.intermediate.manifest" obj\chrome\chrome_child_dll.chrome_child.dll.generated.manifest
content_renderer.lib(content_renderer.webrtc_video_capturer_adapter.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)
libjingle_webrtc_common.lib(libjingle_webrtc_common.peerconnectionfactory.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)
libjingle_webrtc_common.lib(libjingle_webrtc_common.videocapturer.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)
libjingle_webrtc_common.lib(libjingle_webrtc_common.dummydevicemanager.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)
chrome_child.dll : fatal error LNK1120: 1 unresolved externals
> cricket::VideoAdapter: Drop frames before spending time converting/scaling, not after.
>
> In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.
>
> This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.
>
> R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org
>
> Committed: https://code.google.com/p/webrtc/source/detail?r=7702
>
> Review URL: https://webrtc-codereview.appspot.com/29949004TBR=magjed@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/28019004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7708 4adac7df-926f-26a2-2b94-8c16560cd09d
In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.
This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.
R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org
Committed: https://code.google.com/p/webrtc/source/detail?r=7702
Review URL: https://webrtc-codereview.appspot.com/29949004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7707 4adac7df-926f-26a2-2b94-8c16560cd09d
Rease for revert: failed internal test cases
> cricket::VideoAdapter: Drop frames before spending time converting/scaling, not after.
>
> In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.
>
> This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.
>
> R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/29949004TBR=magjed@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/24279004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7703 4adac7df-926f-26a2-2b94-8c16560cd09d
In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.
This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.
R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/29949004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7702 4adac7df-926f-26a2-2b94-8c16560cd09d
Targets must now link with implementation of their choice instead of at "gyp"-time.
Targets linking with libjingle_media:
- internal implementation when build_with_chromium=0, default otherwise.
Targets linking with default render implementation:
- video_engine_tests
- video_loopback
- video_replay
- anything dependent on webrtc_test_common
Targets linking with internal render implementation:
- vie_auto_test
- video_render_tests
- libwebrtcdemo-jni
- video_engine_core_unittests
GN changes:
- Not many since there is almost no test definitions.
Work-around for chromium:
- Until chromium has updated libpeerconnection to link with video_capture_impl and video_render_impl, webrtc target automatically depends on it. This should fix the FYI bots and not require a webrtc roll to fix.
Re-enable android tests by reverting 7026 (some tests left disabled).
TESTED: passes all the bots. If this inadvertently breaks a target please fix the linking rules so the target has the desired implementation linked in.
BUG=3770
R=kjellander@webrtc.org, pbos@webrtc.orgTBR=mflodman@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/19359004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7217 4adac7df-926f-26a2-2b94-8c16560cd09d
into its own targets. Dependencies must link directly with the desired one.
Targets linking with libjingle_media:
- internal implementation when build_with_chromium=0, default otherwise.
Targets linking with default/external capture implementation:
- anything dependent on webrtc_test_common
- anything dependent on video_engine_core
Targets linking with internal capture implementation:
- vie_auto_test
- anything dependent on webrtc_test_renderer
GN changes:
- Not many since there is almost no test definitions.
TESTED: passes all the bots. If this inadvertently breaks a target please fix the linking rules so the target has the desired implementation linked in.
BUG=3768
R=glaznev@webrtc.orgTBR=kjellander@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/24589004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7209 4adac7df-926f-26a2-2b94-8c16560cd09d