Currently, VideoCapturerAndroid sets the thread and handler in the ctor
and clears them in dispose(). This CL sets the handler in startCapture()
instead and clears it in stopCapture(). The purpose is to prepare for
sending in the SurfaceTextureHelper in startCapture() instead of letting
VideoCapturerAndroid create it in the ctor.
All access to the handler is now synchronized by a lock, and all
Runnables are posted with a token so that they can be removed all at
once in stopCapture() to guarantee that no pending operation will be
executed after stopCapture().
BUG=webrtc:5519
Review URL: https://codereview.webrtc.org/1763673002
Cr-Commit-Position: refs/heads/master@{#11939}
Also fix a timestamp issue in video analyzer test.
BUG=webrtc:5637, webrtc:5537
Review URL: https://codereview.webrtc.org/1779773002
Cr-Commit-Position: refs/heads/master@{#11938}
This involves changing a few verification functions for frames
received so that they always accept the result if there's no stream.
BUG=
Review URL: https://codereview.webrtc.org/1772353002
Cr-Commit-Position: refs/heads/master@{#11937}
Adds setConfiguration back and renames statsId back to reportId.
BUG=
Review URL: https://codereview.webrtc.org/1778033002
Cr-Commit-Position: refs/heads/master@{#11936}
Reason for revert:
Breaks Android it looks like.
See your own try jobs and
https://build.chromium.org/p/client.webrtc/builders/Android32%20Tests%20%28L%...
Original issue's description:
> Drop the 16kHz sample rate restriction on AECM and zero out higher bands
>
> The restriction has been removed completely and AECM now supports any
> number of higher bands. But this has been achieved by always zeroing out the
> higher bands, instead of applying a constant gain which is the average over half
> of the lower band (like it is done for the AEC), because that would be
> non-trivial to implement and we don't want to spend too much time on AECM, since
> we want to get rid of it in the long term anyway.
>
> R=peah@webrtc.org, solenberg@webrtc.org, tina.legrand@webrtc.org
>
> Committed: https://crrev.com/f687d53aabee0523ce6e9e0636163af8df120e41
> Cr-Commit-Position: refs/heads/master@{#11931}
TBR=peah@webrtc.org,turaj@webrtc.org,tina.legrand@webrtc.org,solenberg@webrtc.org,aluebs@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.webrtc.org/1781893002
Cr-Commit-Position: refs/heads/master@{#11932}
The restriction has been removed completely and AECM now supports any
number of higher bands. But this has been achieved by always zeroing out the
higher bands, instead of applying a constant gain which is the average over half
of the lower band (like it is done for the AEC), because that would be
non-trivial to implement and we don't want to spend too much time on AECM, since
we want to get rid of it in the long term anyway.
R=peah@webrtc.org, solenberg@webrtc.org, tina.legrand@webrtc.org
Review URL: https://codereview.webrtc.org/1774553002 .
Cr-Commit-Position: refs/heads/master@{#11931}
CompactNtpIntervalToMs renamed to CompactNtpRttToMs and handle special cases:
large values consider negative/invalid and result in value of 1.
0 result consider too small and increases to 1.
BUG=590996
R=asapersson@webrtc.org, stefan@webrtc.org
Review URL: https://codereview.webrtc.org/1763823003 .
Cr-Commit-Position: refs/heads/master@{#11928}
- Use better types in AudioSendStream::SendTelephoneEvent() and related methods.
BUG=webrtc:4690
Review URL: https://codereview.webrtc.org/1722253002
Cr-Commit-Position: refs/heads/master@{#11927}
* Both timestamps must be unwrapped before comparing
* rtp timestamp delta must be subtracted before unwrapping
BUG=webrtc:5637, webrtc:5537
Review URL: https://codereview.webrtc.org/1774123003
Cr-Commit-Position: refs/heads/master@{#11926}
It may be null if the network is unknown.
Also revised the logging to replace network id with network.toString(). They are pretty much the same for logging but network.toString does not need to parse the int value.
BUG=
Review URL: https://codereview.webrtc.org/1774343002
Cr-Commit-Position: refs/heads/master@{#11925}
At the top level, setting a track on an RtpSender is equivalent to
setting a source (previously called a renderer)
on a voice send stream. An RtpSender without a track
is not supposed to send data (not even muted data), so a send stream without
a source shouldn't send data.
Also replacing SendFlags with a boolean and implementing "Start"
and "Stop" methods on AudioSendStream, which was planned anyway
and simplifies this CL.
R=pthatcher@webrtc.org, solenberg@webrtc.org
Review URL: https://codereview.webrtc.org/1741933002 .
Cr-Commit-Position: refs/heads/master@{#11918}
switchCamera() only calls stopCaptureOnCameraThread(), not
stopCapture(), so the stopListening() call must be placed there.
BUG=webrtc:5519,b/27497950
R=perkj@webrtc.org
Review URL: https://codereview.webrtc.org/1770423002 .
Cr-Commit-Position: refs/heads/master@{#11917}
When the iOS application is not in the foreground, the hardware encoder and
decoder become invalidated. There doesn't seem to be a way to query their state
so we don't know they're invalid until we get an error code after an
encode/decode request. To solve the issue, we just don't encode/decode when the
app is not active, and reinitialize the encoder/decoder when the app is active
again.
Also fixes a leak in the decoder.
BUG=webrtc:4081
Review URL: https://codereview.webrtc.org/1732953003
Cr-Commit-Position: refs/heads/master@{#11916}
for webrtc/base/numerics/safe_conversions.h.
This prevents downstream projects from breaking that have not yet been
updated to use the new file path. As soon as they have this file should
be removed.
This is a follow-up to https://codereview.webrtc.org/1753293002/.
TBR=hta@webrtc.org
NOPRESUBMIT=True
NOTRY=True
BUG=webrtc:5548
Review URL: https://codereview.webrtc.org/1774933003
Cr-Commit-Position: refs/heads/master@{#11912}
We want this because otherwise the ACM uses its mutex to protect an
encoder that's owned by someone else. That someone else may easily
slip up and delete or otherwise touch the encoder before making sure
that the ACM has stopped using it, bypassing the lock.
BUG=webrtc:5028
Review URL: https://codereview.webrtc.org/1702943002
Cr-Commit-Position: refs/heads/master@{#11909}
This copies the contents (unittest excluded) of base/numerics in
chromium to base/numerics in webrtc. Files added:
- safe_conversions.h
- safe_conversions_impl.h
- safe_math.h
- safe_math_impl.h
A really old version of safe_conversions[_impl].h previously existed in
base/, this has been deleted and sources using it have been updated
to include the new base/numerics/safe_converions.h.
This CL also adds a DEPS file to webrtc/base.
NOPRESUBMIT=True
BUG=webrtc:5548, webrtc:5623
Review URL: https://codereview.webrtc.org/1753293002
Cr-Commit-Position: refs/heads/master@{#11907}
The type is included in the AudioFrame output parameter.
Rename the type NetEqOutputType to just OutputType, since it is now
internal to NetEq.
BUG=webrtc:5607
Review URL: https://codereview.webrtc.org/1769883002
Cr-Commit-Position: refs/heads/master@{#11903}
This change essentially does two things:
1. Remove the VAD-related methods from AcmReceiver. These are
EnableVad(), DisableVad(), and vad_enabled(). None of them were used
outside of unit tests.
2. Move the functionality to set AudioFrame::speech_type_ and
AudioFrame::vad_activity_ inside NetEq. This was previously done in
AcmReceiver, but based on information inherently owned by NetEq.
With the change in 2, NetEq's GetAudio interface can be simplified by
removing the output type parameter. This will be done in a follow-up
CL.
BUG=webrtc:5607
Review URL: https://codereview.webrtc.org/1772583002
Cr-Commit-Position: refs/heads/master@{#11902}
Previous logged delay was: network delay (rtt/2) + jitter delay + decode time + render delay.
Make capture time in local timebase available for decoded VP9 video frames (propagate ntp_time_ms from EncodedImage to decoded VideoFrame).
BUG=
Review URL: https://codereview.webrtc.org/1688143003
Cr-Commit-Position: refs/heads/master@{#11901}
The 3-band splitting filter is highly complex on this architecture. Today this is not a problem, because on those platforms we mostly use AECM which forces us to downsample to 16kHz anyway, but this is a way of guarding against it. In the long term we want to optimize the 3-band splitting filter for ARM architectures, but for now we can just disable it.
Review URL: https://codereview.webrtc.org/1766103002
Cr-Commit-Position: refs/heads/master@{#11900}
VideoTrackSource will be implemented in an upcoming cl but is needed to be included in libjingle.gyp in Chrome before the cl can be landed.
R=kjellander@webrtc.org
Review URL: https://codereview.webrtc.org/1769343003 .
Cr-Commit-Position: refs/heads/master@{#11897}
Moved VideoSourceInterface to MediaStreamInterface.h
Renamed VideoSourceTest to VideoCapturerTrackSourceTest
Renamed VideoSource to VideoCaptureTrackSource and cl lint and cl format.
BUG=webrtc:5426
TBR=pthatcher@webrtc.org
Review URL: https://codereview.webrtc.org/1770003002 .
Cr-Commit-Position: refs/heads/master@{#11893}
Changing from:
virtual void RequestIdentity(
rtc::KeyParams key_params,
rtc::Optional<uint64_t> expires,
const rtc::scoped_refptr<DtlsIdentityRequestObserver>& observer);
to:
virtual void RequestIdentity(
const rtc::KeyParams& key_params,
const rtc::Optional<uint64_t>& expires_ms,
const rtc::scoped_refptr<DtlsIdentityRequestObserver>& observer);
Making FakeDtlsIdentityStore DCHECK that |expires_ms| is not set, since it does not support that parameterization.
In a follow-up chromium CL the new signature will be used.
BUG=webrtc:5092, chromium:544902
Review URL: https://codereview.webrtc.org/1766673002
Cr-Commit-Position: refs/heads/master@{#11892}
Also change the type of "time interval" to int from uint32.
Fixed a few TODO therein. I think we should have the following convention:
1. All time delay/intervals should have type int although the time instant should have time uint32_t.
2. "interval" is preferred to "delay" if the delay will be repeated (like rescheduling).
BUG=
R=pthatcher@webrtc.org
Review URL: https://codereview.webrtc.org/1762863002 .
Cr-Commit-Position: refs/heads/master@{#11888}
Reason for revert:
Unfortunately this breaks in the main waterfall: https://build.chromium.org/p/client.webrtc/builders/Android32%20Builder/builds/6362
I think it's related to dcheck_always_on=1 which is set in GYP_DEFINES only on the trybots, but not on the bots in the main waterfall.
Original issue's description:
> Implement the NackModule as part of the new jitter buffer.
>
> Things done/implemented in this CL:
> - An interface that can send Nack (VCMNackSender).
> - An interface that can request KeyFrames (VCMKeyFrameRequestSender).
> - The nack module (NackModule).
> - A set of convenience functions for modular numbers (mod_ops.h).
>
> BUG=webrtc:5514
>
> Committed: https://crrev.com/f472c5b6722dfb221f929fc4d3a2b4ca54647701
> Cr-Commit-Position: refs/heads/master@{#11882}
TBR=sprang@webrtc.org,stefan@webrtc.org,terelius@webrtc.org,torbjorng@webrtc.org,perkj@webrtc.org,tommi@webrtc.org,philipel@webrtc.org
BUG=webrtc:5514
NOTRY=True
Review URL: https://codereview.webrtc.org/1771883002
Cr-Commit-Position: refs/heads/master@{#11887}
Sparse macro replaced for all audio histograms that have a constant name.
BUG=webrtc:5283
Review URL: https://codereview.webrtc.org/1762863003
Cr-Commit-Position: refs/heads/master@{#11885}
1. Fix the case of key frame accumulation being incorrect due to the chunk
size being computed at the time of leak based on input frame rate. The issue
is that the count is computed based on key frame ratio and the actual chunk
size computed from current input frame rate. These can be wildly different
especially at the beginning of the stream (key frame ratio defaults based
on 30 fps) resulting in incorrect key frame accumulation causing large frame
drops when the input frame rate is low.
2. Add large delta frame compensation. The current code accounts for key frames
but not large delta frames. This is a common occurence in some application
(remote desktop as an example)
3. Fixes an issue identified by the unit tests. The accumulation of
key frames had an issue in the scenario of a high key frame ratio where
the full key frame was not being accounted for.
3. Removes fast mode and other methods that are mostly dead code.
4. Cleans up variable names as per chromium style.
Review URL: https://codereview.webrtc.org/1750493002
Cr-Commit-Position: refs/heads/master@{#11884}
(the ones that were recently moved from c)
There are many files changed but most changes just
consist of adding namespaces.
In aec_common.h an C++-specific #ifdef needed to be added as
that file is both included from C and C++. I could see no
way around that but please let me know if there is a better
way around that.
BUG=webrtc:5201
Review URL: https://codereview.webrtc.org/1766663002
Cr-Commit-Position: refs/heads/master@{#11883}