- Create an unit test skeleton for VideoReceiveStream.
- Add an actual test case for creating a frame from H264 Sprop Parameter
Sets and an Rtp H264 IDR Nalu.
BUG=webrtc:5948
Review-Url: https://codereview.webrtc.org/2721653002
Cr-Commit-Position: refs/heads/master@{#16892}
SquareGenerator is a FrameGenerator that draws 10 randomly sized and colored
squares. Between each new generated frame, the squares are moved slightly
towards the lower right corner.
BUG=webrtc:7192
Review-Url: https://codereview.webrtc.org/2705973002
Cr-Commit-Position: refs/heads/master@{#16870}
Also reducing locking in NackModule (and by extension RtpStreamReceiver)
BUG=webrtc:7246
Review-Url: https://codereview.webrtc.org/2720603002
Cr-Commit-Position: refs/heads/master@{#16856}
Reason for revert:
Reland after fixing broken perf tests.
Original issue's description:
> Revert of Set scaling limit at 320 * 180 for all implementations. (patchset #2 id:20001 of https://codereview.webrtc.org/2709153002/ )
>
> Reason for revert:
> Looks like webrtc_perf_test started failing on linux, mac and windows after this cl landed.
>
> Example failure:
>
> https://build.chromium.org/p/client.webrtc.perf/builders/Linux%20Trusty/builds/1386/steps/webrtc_perf_tests/logs/stdio
>
> [ RUN ] CallPerfTest.ReceivesCpuOveruseAndUnderuse
> ../../webrtc/call/call_perf_tests.cc:522: Failure
> Value of: Wait()
> Actual: false
> Expected: true
> Timed out before receiving an overuse callback.
> [ FAILED ] CallPerfTest.ReceivesCpuOveruseAndUnderuse (120056 ms)
>
>
> Original issue's description:
> > Set scaling limit at 320 * 180 for all implementations.
> >
> > The MediaCodec decoder on android has trouble decoding video at
> > so low resolutions. We set the limit a bit higher for all implementations
> > pending a robust software fallback implementation for MediaCodec.
> >
> > BUG=webrtc:7206
> >
> > Review-Url: https://codereview.webrtc.org/2709153002
> > Cr-Commit-Position: refs/heads/master@{#16798}
> > Committed: 560ddb7321
>
> TBR=magjed@webrtc.org,sprang@webrtc.org,kthelgason@webrtc.org
> # Not skipping CQ checks because original CL landed more than 1 days ago.
> BUG=webrtc:7206
>
> Review-Url: https://codereview.webrtc.org/2711913007
> Cr-Commit-Position: refs/heads/master@{#16839}
> Committed: 37510bf094TBR=magjed@webrtc.org,sprang@webrtc.org,tommi@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:7206
Review-Url: https://codereview.webrtc.org/2718013002
Cr-Commit-Position: refs/heads/master@{#16853}
Reason for revert:
Looks like webrtc_perf_test started failing on linux, mac and windows after this cl landed.
Example failure:
https://build.chromium.org/p/client.webrtc.perf/builders/Linux%20Trusty/builds/1386/steps/webrtc_perf_tests/logs/stdio
[ RUN ] CallPerfTest.ReceivesCpuOveruseAndUnderuse
../../webrtc/call/call_perf_tests.cc:522: Failure
Value of: Wait()
Actual: false
Expected: true
Timed out before receiving an overuse callback.
[ FAILED ] CallPerfTest.ReceivesCpuOveruseAndUnderuse (120056 ms)
Original issue's description:
> Set scaling limit at 320 * 180 for all implementations.
>
> The MediaCodec decoder on android has trouble decoding video at
> so low resolutions. We set the limit a bit higher for all implementations
> pending a robust software fallback implementation for MediaCodec.
>
> BUG=webrtc:7206
>
> Review-Url: https://codereview.webrtc.org/2709153002
> Cr-Commit-Position: refs/heads/master@{#16798}
> Committed: 560ddb7321TBR=magjed@webrtc.org,sprang@webrtc.org,kthelgason@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:7206
Review-Url: https://codereview.webrtc.org/2711913007
Cr-Commit-Position: refs/heads/master@{#16839}
calculating frame sizes. Added actual_bitrate metric which also accounts
for TL and SL info. Metric encoded_frame_size calculation is cleaned up. Perf alerts should be ignored.
BUG=webrtc:7095
Review-Url: https://codereview.webrtc.org/2709483009
Cr-Commit-Position: refs/heads/master@{#16800}
The MediaCodec decoder on android has trouble decoding video at
so low resolutions. We set the limit a bit higher for all implementations
pending a robust software fallback implementation for MediaCodec.
BUG=webrtc:7206
Review-Url: https://codereview.webrtc.org/2709153002
Cr-Commit-Position: refs/heads/master@{#16798}
The new constructor introduces two new changes:
* Support specifying thread priority at construction time.
- Moving forward, the SetPriority() method will be removed.
* New thread function type.
- The new type has 'void' as a return type and a polling loop
inside PlatformThread, is not used.
The old function type is still supported until all places have been moved over.
In this CL, the first steps towards deprecating the old mechanism are taken
by moving parts of the code that were simple to move, over to the new callback
type.
BUG=webrtc:7187
Review-Url: https://codereview.webrtc.org/2708723003
Cr-Commit-Position: refs/heads/master@{#16779}
For them implemeted upscaling in libyuv metrics calculation.
Updated maximum number of SL in vp9 encoder to 3.
Refactored names of some fields in Video_quality_check analyzer.
BUG=webrtc:7095
Review-Url: https://codereview.webrtc.org/2681683003
Cr-Commit-Position: refs/heads/master@{#16625}
The flaky test was introduced in ad9010c9836, and is essentially a race
where the ViE Encoder has already configured the quality scaler on the
encoder thread before we've updated the ScalingSettings. This CL adds
a forced reconfiguration of the quality scaler to avoid this issue.
BUG=None
TBR=sprang@webrtc.org
Review-Url: https://codereview.webrtc.org/2695873004
Cr-Commit-Position: refs/heads/master@{#16612}
This avoids redoing RTP header parsing already done in Call, for video.
The next step is to convert other types of receive streams, i.e.,
audio and flexfec, to use a compatible OnRtpPacket method. We can then
introduce a shared base interface, and simplify media-independent
receive processing in Call.
BUG=webrtc:7135
Review-Url: https://codereview.webrtc.org/2681673004
Cr-Commit-Position: refs/heads/master@{#16583}
The only implementation which used a nullptr was a mock used in tests,
so add a dummy instance there instead.
Remove tests for stats_proxy_ in vie_encoder and just dcheck in the
constructor instead.
BUG=None
Review-Url: https://codereview.webrtc.org/2695643002
Cr-Commit-Position: refs/heads/master@{#16577}
Updated comment.
Don't call AdaptUp/AdaptDown in tests without first emitting a frame.
Handle frame received precondition in AdaptUp/AdaptDown with DCHECK
instead of return.
BUG=webrtc:4172, webrtc:6850
Review-Url: https://codereview.webrtc.org/2690023002
Cr-Commit-Position: refs/heads/master@{#16572}
The current method with max_pixel_count and max_pixel_count_step_up,
where only one should be used at a time and this first signaling an
inclusive upper bound and other other an exclusive lower bound, makes
for a lot of confusion.
I've updated this to have a desired target and a maximum instead. The
source should select a resolution as close to the target as possible,
but no higher than the maximum.
I intend to also add similar frame rate settings in an upcoming cl.
BUG=webrtc:4172,webrtc:6850
Review-Url: https://codereview.webrtc.org/2672793002
Cr-Commit-Position: refs/heads/master@{#16533}
Reason for revert:
Fix the problem.
Original issue's description:
> Revert of Add QP sum stats for received streams. (patchset #10 id:180001 of https://codereview.webrtc.org/2649133005/ )
>
> Reason for revert:
> Breaks downstream build.
>
> Original issue's description:
> > Add QP sum stats for received streams.
> >
> > This is not implemented yet in any of the decoders.
> >
> > BUG=webrtc:6541
> >
> > Review-Url: https://codereview.webrtc.org/2649133005
> > Cr-Commit-Position: refs/heads/master@{#16475}
> > Committed: ff0e72fd16
>
> TBR=hta@webrtc.org,hbos@webrtc.org,sprang@webrtc.org,magjed@webrtc.org,stefan@webrtc.org,sakal@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6541
>
> Review-Url: https://codereview.webrtc.org/2680893002 .
> Cr-Commit-Position: refs/heads/master@{#16480}
> Committed: 69fb2cca4dTBR=hta@webrtc.org,hbos@webrtc.org,sprang@webrtc.org,magjed@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
BUG=webrtc:6541
Review-Url: https://codereview.webrtc.org/2681663005
Cr-Commit-Position: refs/heads/master@{#16511}
Reason for revert:
Speculative revert due to regression in perf tests.
Original issue's description:
> Added VP8 simulcast tests. Fixed analyzer to correctly infer timestamps.
>
>
> BUG=webrtc:7095
>
> Review-Url: https://codereview.webrtc.org/2668763004
> Cr-Commit-Position: refs/heads/master@{#16428}
> Committed: 5f47126865TBR=sprang@webrtc.org,nisse@webrtc.org,mflodman@webrtc.org,magjed@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:7095
Review-Url: https://codereview.webrtc.org/2687073002
Cr-Commit-Position: refs/heads/master@{#16510}
Reason for revert:
Breaks downstream build.
Original issue's description:
> Add QP sum stats for received streams.
>
> This is not implemented yet in any of the decoders.
>
> BUG=webrtc:6541
>
> Review-Url: https://codereview.webrtc.org/2649133005
> Cr-Commit-Position: refs/heads/master@{#16475}
> Committed: ff0e72fd16TBR=hta@webrtc.org,hbos@webrtc.org,sprang@webrtc.org,magjed@webrtc.org,stefan@webrtc.org,sakal@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6541
Review-Url: https://codereview.webrtc.org/2680893002 .
Cr-Commit-Position: refs/heads/master@{#16480}
This is not implemented yet in any of the decoders.
BUG=webrtc:6541
Review-Url: https://codereview.webrtc.org/2649133005
Cr-Commit-Position: refs/heads/master@{#16475}
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: 83399caec5
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: 35fc2aa82fTBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
We can then drop the CongestionController and RemoteBitrateEstimator
completely from the receive streams.
BUG=webrtc:6847
Review-Url: https://codereview.webrtc.org/2669463006
Cr-Commit-Position: refs/heads/master@{#16459}
Reason for revert:
Will try to reland FlexFEC tests, since these do not seem to be flaky on the buildbots.
Original issue's description:
> Revert of Improve and re-enable FEC end-to-end tests. (patchset #3 id:40001 of https://codereview.webrtc.org/2675573004/ )
>
> Reason for revert:
> Ulpfec tests are still flaky on buildbots.
>
> Original issue's description:
> > Improve and re-enable FEC end-to-end tests.
> >
> > These tests got flaky under the new jitter buffer.
> >
> > Enhancements:
> > - Use send-side BWE.
> > - Let BWE ramp up before applying packet loss.
> > - Improve packet loss simulation for ULPFEC.
> > - Add delay to fake network pipe for FlexFEC.
> > (Not added for ULPFEC, since this makes those flaky...?)
> > - Add FlexFEC+NACK test, using RTX instead of "raw retransmits".
> > - Tighter checks of received packets' payload types and SSRCs.
> >
> > TESTED=
> > $ ninja -C out/Debug video_engine_tests && third_party/gtest-parallel/gtest-parallel -r 1000 out/Debug/video_engine_tests --gtest_filter="*EndToEnd*Ulpfec*:*EndToEnd*Flexfec*"
> > ninja: Entering directory `out/Debug'
> > ninja: no work to do.
> > [12000/12000] TestWithNewVideoJitterBuffer/EndToEndTest.RecoversWithFlexfecAndNack/1 (14935 ms)
> >
> > BUG=webrtc:7047
> >
> > Review-Url: https://codereview.webrtc.org/2675573004
> > Cr-Commit-Position: refs/heads/master@{#16449}
> > Committed: d40b0f39e0
>
> TBR=stefan@webrtc.org,nisse@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:7047
>
> Review-Url: https://codereview.webrtc.org/2672373002
> Cr-Commit-Position: refs/heads/master@{#16450}
> Committed: fd8d2654d7TBR=stefan@webrtc.org,nisse@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7047
Review-Url: https://codereview.webrtc.org/2675283003
Cr-Commit-Position: refs/heads/master@{#16452}
Also fixes a bug where RTCP transport feedback was sent even though RTCP was disabled.
May affect perf numbers since the behavior of the send-side BWE differs a lot from the recv-side BWE.
BUG=webrtc:7111
Review-Url: https://codereview.webrtc.org/2669413003
Cr-Commit-Position: refs/heads/master@{#16451}
Reason for revert:
Ulpfec tests are still flaky on buildbots.
Original issue's description:
> Improve and re-enable FEC end-to-end tests.
>
> These tests got flaky under the new jitter buffer.
>
> Enhancements:
> - Use send-side BWE.
> - Let BWE ramp up before applying packet loss.
> - Improve packet loss simulation for ULPFEC.
> - Add delay to fake network pipe for FlexFEC.
> (Not added for ULPFEC, since this makes those flaky...?)
> - Add FlexFEC+NACK test, using RTX instead of "raw retransmits".
> - Tighter checks of received packets' payload types and SSRCs.
>
> TESTED=
> $ ninja -C out/Debug video_engine_tests && third_party/gtest-parallel/gtest-parallel -r 1000 out/Debug/video_engine_tests --gtest_filter="*EndToEnd*Ulpfec*:*EndToEnd*Flexfec*"
> ninja: Entering directory `out/Debug'
> ninja: no work to do.
> [12000/12000] TestWithNewVideoJitterBuffer/EndToEndTest.RecoversWithFlexfecAndNack/1 (14935 ms)
>
> BUG=webrtc:7047
>
> Review-Url: https://codereview.webrtc.org/2675573004
> Cr-Commit-Position: refs/heads/master@{#16449}
> Committed: d40b0f39e0TBR=stefan@webrtc.org,nisse@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7047
Review-Url: https://codereview.webrtc.org/2672373002
Cr-Commit-Position: refs/heads/master@{#16450}
These tests got flaky under the new jitter buffer.
Enhancements:
- Use send-side BWE.
- Let BWE ramp up before applying packet loss.
- Improve packet loss simulation for ULPFEC.
- Add delay to fake network pipe for FlexFEC.
(Not added for ULPFEC, since this makes those flaky...?)
- Add FlexFEC+NACK test, using RTX instead of "raw retransmits".
- Tighter checks of received packets' payload types and SSRCs.
TESTED=
$ ninja -C out/Debug video_engine_tests && third_party/gtest-parallel/gtest-parallel -r 1000 out/Debug/video_engine_tests --gtest_filter="*EndToEnd*Ulpfec*:*EndToEnd*Flexfec*"
ninja: Entering directory `out/Debug'
ninja: no work to do.
[12000/12000] TestWithNewVideoJitterBuffer/EndToEndTest.RecoversWithFlexfecAndNack/1 (14935 ms)
BUG=webrtc:7047
Review-Url: https://codereview.webrtc.org/2675573004
Cr-Commit-Position: refs/heads/master@{#16449}
Intervals when video is paused is no longer included in the stats:
"WebRTC.Video.BitrateSentInKbps"
"WebRTC.Video.MediaBitrateSentInKbps"
"WebRTC.Video.PaddingBitrateSentInKbps"
"WebRTC.Video.RetransmittedBitrateSentInKbps"
"WebRTC.Video.RtxBitrateSentInKbps"
"WebRTC.Video.FecBitrateSentInKbps"
BUG=webrtc:5283
Review-Url: https://codereview.webrtc.org/2536613002
Cr-Commit-Position: refs/heads/master@{#16447}
Use AdaptDown/AdaptUp instead of ScaleDown/ScaleUp, since we may want to
adapt using other means than resolution.
Also, extend vie_encoder with unit test that actually uses frames scaled
to resolution as determined by VideoAdapter, since that seems to be the
default implementation.
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2652893015
Cr-Commit-Position: refs/heads/master@{#16402}
Reason for revert:
due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
Original issue's description:
> Drop frames until specified bitrate is achieved.
>
> This CL fixes a regression introduced with the new quality scaler
> where the video would no longer start in a scaled mode. This CL adds
> code that compares incoming captured frames to the target bitrate,
> and if they are found to be too large, they are dropped and sinkWants
> set to a lower resolution. The number of dropped frames should be low
> (0-4 in most cases) and should not introduce a noticeable delay, or
> at least should be preferrable to having the first 2-4 seconds of video
> have very low quality.
>
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2630333002
> Cr-Commit-Position: refs/heads/master@{#16391}
> Committed: 83399caec5TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2666303002
Cr-Commit-Position: refs/heads/master@{#16395}