Bad changes are from CL 2745523002.
These changes were originally done by Sprang@. Sometimes, when encoder is failed to be configured on release build it causes a crash at vie_encoder.cc:451. That changes look like they are not important to other changes. This CL is simply reverting them.
BUG=chromium:701526
Review-Url: https://codereview.webrtc.org/2747403002
Cr-Commit-Position: refs/heads/master@{#17241}
It appears that for some H264 streams that the width/height is not set for
the first packet of the IDR but in the packet containing the SPS/PPS.
BUG=chromium:698088, webrtc:7139
Review-Url: https://codereview.webrtc.org/2750633003
Cr-Commit-Position: refs/heads/master@{#17239}
I cannot even imagine this change is useful. But it consistently reduces average
capture time by 0.375% (4.07 -> 4.055), and average encode time by 0.313%
(8.042 -> 8.016) without other impacts. Considering this is a one-line change,
it's worthy to be added.
BUG=679523
Review-Url: https://codereview.webrtc.org/2743233002
Cr-Commit-Position: refs/heads/master@{#17235}
The getters are not used and the implementation cannot be guaranteed
to return a correct value except when called synchronously from
the decoding thread while decoding.
The methods as is imply that the implementation needs to offer some
sort of synchronization, and that's not desirable.
BUG=webrtc:7328
R=stefan@webrtc.org
Review-Url: https://codereview.webrtc.org/2741853008 .
Cr-Commit-Position: refs/heads/master@{#17233}
different sample rate frequency.
BUG=webrtc:7327
Problems before the fix:
1. NetEqImpl::timestamp_ is inconsistent. Initially it is set to
the original RTP timestamp, but later gets updated with the
scaled timestamp.
2. NetEqImpl::InsertPacketInternal::main_timestamp is set with
the original RTP timestamp, but later gets compared with the
NetEqImpl::timestamp_ which may or may not be with the same
sample rate frequency and this results in major problems.
3. IncreaseEndTimestamp(main_timestamp - timestamp_) will be
incorrect when SSRC is changed and not the first packet.
4. delay_manager_->Update() may not be always invoked, since
the (main_timestamp - timestamp_) >= 0 will not be true when
the previous scaled timestamp_ is bigger than the main_timestamp
(current RTP timestamp) even if the current RTP timestamp is
bigger than the previous RTP timestamp.
5. delay_manager_->Update() parameters are main_timestamp
which increments with the RTP sample rate frequency and the
fs_hz_ which is the decoder sample rate frequency. When these
two frequencies are different as is the case with g.722, the
DelayManager::Update() will misfire and calculate incorrect
packet_len_ms and inter-arrival time (IAT) as a result. This
in effect will cause neteq to enter kPreemptiveExpand operation
and will keep expanding the jitter buffer even if the RTP packets
arrive with no jitter at all.
The fix corrects all these problems by making sure the
main_timestamp and the timestamp_ are always set with the scaled
timestamp and increment with the decoder sample rate frequency.
Review-Url: https://codereview.webrtc.org/2743063005
Cr-Commit-Position: refs/heads/master@{#17232}
* The _receiveCallback member of VCMDecodedFrameCallback does actually not require locking now that the threading model is slightly clearer. Documentation and checks have been added.
* UserReceiveCallback() never returns null and must always be called on the decoder thread. Checks have been added and the two test suites that were failing to set this callback, have been fixed and a new mock class added. (looks like sakal@ may have hit some issues with flaky tests there).
* Changed VcmPayloadSink to use move semantics which I suspect was the intention at the time the code was written (when we didn't have move semantics).
* Added thread checker to a couple of classes and started adding thread checks for known behavior. There's more to be done there.
* Remove the |_decoder| member variable in VideoReceiver. It is not needed and as it could be used, left us open to a race.
* TODOs added for places where we can reduce locking. I suspect that we can get away with not needing a lock around _codecDataBase in VideoReceiver once we've got a clear picture of the threading model and ensured that all adhere to it.
BUG=webrtc:7328
Review-Url: https://codereview.webrtc.org/2744013002
Cr-Commit-Position: refs/heads/master@{#17226}
The only non-const operation was a one-time initialization of a member only used in this function. I've moved it to the ctor.
BUG=webrtc:5298
Review-Url: https://codereview.webrtc.org/2741733002
Cr-Commit-Position: refs/heads/master@{#17223}
By default the return value will be 0, which if we hit, could cause busy loops.
BUG=webrtc:7187
Review-Url: https://codereview.webrtc.org/2750503002
Cr-Commit-Position: refs/heads/master@{#17213}
Reason to go back is that we may end up with a bunch of streams that are never cleaned up and consume resources.
BUG=webrtc:7175, b/35863246
Review-Url: https://codereview.webrtc.org/2746763002
Cr-Commit-Position: refs/heads/master@{#17210}
A DCHECK added in a recent bugfix, which asserted that a signed 64->32
bit cast did not overflow, has been found to not always pass. We fix
this by saturating.
BUG=chromium:693868
Review-Url: https://codereview.webrtc.org/2746903002
Cr-Commit-Position: refs/heads/master@{#17209}
Modification affects EglRenderer on Android. Moves frame dropping to the
renderer thread. Frame listeners are triggered even when FPS reduction is
active unless applyFpsReduction is set to true.
BUG=webrtc:7149
Review-Url: https://codereview.webrtc.org/2688843002
Cr-Commit-Position: refs/heads/master@{#17206}
This was a trivial delegation wrapper, with only a single use.
BUG=None
Review-Url: https://codereview.webrtc.org/2741413003
Cr-Commit-Position: refs/heads/master@{#17205}
Turns out temporal_layer_thresholds_bps doesn't work quite as expected.
It's for instance not honored at all for normal VP8 video. We need to
take a pass over this in general.
BUG=chromium:700297
Review-Url: https://codereview.webrtc.org/2744823002
Cr-Commit-Position: refs/heads/master@{#17199}
Reason for revert:
CallPerfTest.ReceivesCpuOveruseAndUnderuse perf test fails due to this CL. It requires very accurate frame rate, which may not be so accurate now.
Original issue's description:
> Reland of rewrite frame generator capturer to use TaskQueue instead of EventTimeWrapper (patchset #1 id:1 of https://codereview.webrtc.org/2743993002/ )
>
> And enable large full-stack test depending on that change (Reland of https://codereview.webrtc.org/2741823003/)
> TBR=stefan@webrtc.org,tommi@webrtc.org
> BUG=webrtc:7301,webrtc:7325
>
> Review-Url: https://codereview.webrtc.org/2744003002
> Cr-Commit-Position: refs/heads/master@{#17196}
> Committed: 8c0a5896d1TBR=stefan@webrtc.org,tommi@webrtc.org,sprang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7301,webrtc:7325
Review-Url: https://codereview.webrtc.org/2748643002
Cr-Commit-Position: refs/heads/master@{#17198}
Doing so competes with the actual decoding that happens on a different thread.
BUG=695438
Review-Url: https://codereview.webrtc.org/2745813003
Cr-Commit-Position: refs/heads/master@{#17184}
Packets on source ports 32768-49151 got identified as RTP packets by
"IsRtpPacket" and were ignored by the SCTP transport.
This CL changes this to check the packet flags for "PF_SRTP_BYPASS".
BUG=webrtc:6959
Review-Url: https://codereview.webrtc.org/2743653005
Cr-Commit-Position: refs/heads/master@{#17179}
To simplify things, the candidate pool is only used in the first
offer/answer.
After setting a local description, the size is frozen, and changing ICE
servers won't refresh the pool.
After setting an answer, the pooled candidates are discarded.
BUG=webrtc:5180
Review-Url: https://codereview.webrtc.org/2717893003
Cr-Commit-Position: refs/heads/master@{#17178}
Reason for revert:
Causes problems with TSAN: https://bugs.chromium.org/p/webrtc/issues/detail?id=7325
Original issue's description:
> Reland of rewrite frame generator capturer to use TaskQueue instead of EventTimeWrapper.
>
> Fix CallPerfTest.ReceivesCpuOveruseAndUnderuse to not fail on Android with new FrameGeneratorCapturer.
>
> BUG=webrtc:7301
>
> Review-Url: https://codereview.webrtc.org/2745583006
> Cr-Commit-Position: refs/heads/master@{#17168}
> Committed: b00742508aTBR=stefan@webrtc.org,tommi@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7301
Review-Url: https://codereview.webrtc.org/2743993002
Cr-Commit-Position: refs/heads/master@{#17173}
Reason for revert:
This depends on another patchset, which causes problem and will be reverted too.
Original issue's description:
> Enable big largeroom fullstack tests on Windows
>
> BUG=webrtc:7301
>
> Review-Url: https://codereview.webrtc.org/2741823003
> Cr-Commit-Position: refs/heads/master@{#17169}
> Committed: 15939e7775TBR=sprang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7301
Review-Url: https://codereview.webrtc.org/2738353006
Cr-Commit-Position: refs/heads/master@{#17172}
Previously we grab a run loop source and add a source with mode
kCFRunLoopDefaultMode. With this mode, it won't callback when context menu popup
(which needs the NSEventTrackingRunLoopMode), then screen capture can't get
refreshed frame with context menu until the context menu is gone.
The fix is to use kCFRunLoopComonModes, which includes default,modal and event
tracking modes by default.
BUG=chromium:697780
Review-Url: https://codereview.webrtc.org/2732393003
Cr-Commit-Position: refs/heads/master@{#17171}
Fix CallPerfTest.ReceivesCpuOveruseAndUnderuse to not fail on Android with new FrameGeneratorCapturer.
BUG=webrtc:7301
Review-Url: https://codereview.webrtc.org/2745583006
Cr-Commit-Position: refs/heads/master@{#17168}
Since HW codecs are not as well-behaved as SW codecs, we need a
way to disable the EXPECT_EQ's in the VideoProcessor integration tests
for the former. This CL introduces such an ability.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2710913004
Cr-Commit-Position: refs/heads/master@{#17166}
Prior to this CL, the encoding/decoding in the VideoProcessor integration
tests were run "online", in the sense that rate allocations could be
changed in between frames. This is useful for evaluating the rate control
of SW codecs, which is one of the reasons for the existence of these
integration tests in the first place.
This CL adds a batch mode, in which the tests are run "offline". The two
main differences to the original mode are: 1) rate control metrics are
calculated after the fact, and 2) no rate allocation changes are allowed
during the test. Difference 1) is the reason for this CL, as HW codecs
that are pipelining will not work well when rate control metrics are
calculated right after a frame has been sent for encode. Difference 2)
is a side effect of the introduction of the batch mode. If we want to
be able to support online rate allocation for pipelining HW codecs in
the future, this can be introduced by adding a delay between encoding
and rate allocation. This was not deemed necessary at this point in time,
and hence this CL does not do that.
The batch mode is only intended to be used for manual experimentation
on devices with HW codecs, and the integration tests running on the
bots should thus NOT use batch mode.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2707023008
Cr-Commit-Position: refs/heads/master@{#17164}
Reason for revert:
Less precise FrameGeneratorCapturer broke CallPerfTest.ReceivesCpuOveruseAndUnderuse on Android
Original issue's description:
> Rewrite frame generator capturer to use TaskQueue instead of EventTimeWrapper
>
> BUG=webrtc:7301
>
> Review-Url: https://codereview.webrtc.org/2740723002
> Cr-Commit-Position: refs/heads/master@{#17161}
> Committed: 7c5503a8b3TBR=kjellander@webrtc.org,sprang@webrtc.org,tommi@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7301
Review-Url: https://codereview.webrtc.org/2739393002
Cr-Commit-Position: refs/heads/master@{#17163}
Reason for revert:
CryptString usage is now deleted in Chrome, see cl https://codereview.chromium.org/2738973004/
Original issue's description:
> Revert of Delete cryptstring.h and cryptstring.cc. (patchset #1 id:1 of https://codereview.webrtc.org/2740633003/ )
>
> Reason for revert:
> It turns out cryptstring was used by Chrome. In the xmpp code recently moved there from webrtc.
>
> So this code has to be moved too, it canät just be deleted.
>
> Original issue's description:
> > Delete cryptstring.h and cryptstring.cc.
> >
> > They became unused with cl https://codereview.webrtc.org/2731673002/
> >
> > BUG=webrtc:6424
> >
> > Review-Url: https://codereview.webrtc.org/2740633003
> > Cr-Commit-Position: refs/heads/master@{#17128}
> > Committed: 822638b481
>
> TBR=pthatcher@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6424
>
> Review-Url: https://codereview.webrtc.org/2742743002
> Cr-Commit-Position: refs/heads/master@{#17130}
> Committed: d665207601TBR=pthatcher@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6424
Review-Url: https://codereview.webrtc.org/2745523004
Cr-Commit-Position: refs/heads/master@{#17160}