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}
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
Review URL: https://codereview.webrtc.org/1715673002
Cr-Commit-Position: refs/heads/master@{#11882}
This fixes a couple major issues.
#1: If the payload type that an RTX codec refers to has been reassigned, and then the RTX codec is added in a subsequent offer, it refers to the wrong payload type.
#2: If we receive an offer with two payload types referring to the same codec (which we support), our answer contains both (instead of just one), which causes issues down the road since the video engine only supports one payload type per codec.
BUG=webrtc:5450,webrtc:5499
R=pthatcher@webrtc.org
Review URL: https://codereview.webrtc.org/1616033002 .
Cr-Commit-Position: refs/heads/master@{#11880}
Soft reset can be used when input frame resolution changes
to avoid re creating MediaCodec instance.
Instead MediaCodec is flushed and some variables are reset.
R=pbos@webrtc.org, perkj@webrtc.org
Review URL: https://codereview.webrtc.org/1732533002 .
Cr-Commit-Position: refs/heads/master@{#11878}
api function that directly returns aec_core.
BUG=webrtc:5201
Review URL: https://codereview.webrtc.org/1695743004
Cr-Commit-Position: refs/heads/master@{#11875}
With this change, NetEq now uses AudioFrame as output type, like the
surrounding functions in ACM and VoiceEngine already do.
The computational savings is probably slim, since one memcpy is
removed while another one is added (both in AcmReceiver::GetAudio).
More simplifications and clean-up will be done in
AcmReceiver::GetAudio in future CLs.
BUG=webrtc:5607
Review URL: https://codereview.webrtc.org/1750353002
Cr-Commit-Position: refs/heads/master@{#11874}
This new class allows usage of a QuicSession to establish a QUIC handshake.
BUG=
Review URL: https://codereview.webrtc.org/1721673004
Cr-Commit-Position: refs/heads/master@{#11873}
This temporarily fixes a probem where renderers causes VideoSinkWants.rotation_applied=true.
The problem was introduced by https://codereview.webrtc.org/1759473003/ where VideTrackRenderes are registered to the cricket::VideoCapturer with default VideoSinkWants.
BUG=webrtc:5621
Review URL: https://codereview.webrtc.org/1764693004
Cr-Commit-Position: refs/heads/master@{#11871}