Commit graph

1187 commits

Author SHA1 Message Date
Johannes Kron
05f8487627 Add processing time to VideoFrame
Bug: chromium:1011581
Change-Id: Icd675cb98b8b5052933b9a8eebe718be94c2fef2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166162
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30281}
2020-01-16 14:11:15 +00:00
Danil Chapovalov
d06588a758 Change Av1 depacketizer to implement VideoRtpDepacketizer interface
Bug: webrtc:11152
Change-Id: I322115263f60439bee36277157a0acef9bd28e3e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/165343
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30260}
2020-01-15 10:16:03 +00:00
Jonas Olsson
b2b2031457 Concatenate string literals at compile time.
This CL was generated by running:
git ls-files | grep ".cc" | xargs perl -i -ne 'BEGIN {undef $/}; s/("[\s\n]*<<[\s\n]*")/" "/g; print;'; git cl format

After that I manually edited modules/audio_processing/gain_controller2.cc to preserve its original
formatting.

This primary benefit of this change is a small reduction in binary size.

Bug: None
Change-Id: I689fa7ba9c717c314bb167e5d592c3c4e0871e29
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/165961
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30251}
2020-01-14 14:47:48 +00:00
Qingsi Wang
1c1b99e30f Revert "Delete RtpPayloadParams::SetDependenciesVp8Deprecated as unused"
This reverts commit dc7fe40f49.

Reason for revert: speculative revert for breaking downstream projects

Original change's description:
> Delete RtpPayloadParams::SetDependenciesVp8Deprecated as unused
> 
> Bug: webrtc:10242
> Change-Id: Iddad086d8ce3652bd9f0fb12788d5c73b5ebda76
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161945
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Elad Alon <eladalon@webrtc.org>
> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#30159}

TBR=danilchap@webrtc.org,eladalon@webrtc.org,nisse@webrtc.org,philipel@webrtc.org

Change-Id: Ie7f875291610a7b676539a5ccc4bac9a08011f42
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10242
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/165240
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30173}
2020-01-07 19:16:48 +00:00
Danil Chapovalov
dc7fe40f49 Delete RtpPayloadParams::SetDependenciesVp8Deprecated as unused
Bug: webrtc:10242
Change-Id: Iddad086d8ce3652bd9f0fb12788d5c73b5ebda76
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161945
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30159}
2020-01-07 09:13:29 +00:00
Jiwon Kim
077ee35774 Remove unused parameter in RtpFragmentize
Bug: None
Change-Id: Ic110e3561bc93cb2156240193bc2077e2646ed87
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161560
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30118}
2019-12-20 11:22:33 +00:00
Rasmus Brandt
5cad55b240 Signal requested resolution alignment requirements from sinks to sources.
Bug: webrtc:11218
Change-Id: I593b0515ea389bece472234a3c4082ccc5321ea5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/162400
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30113}
2019-12-19 10:39:04 +00:00
Artem Titov
8525a8028a Add ability to resize buffers pool in decoder and use it in IVF generator
Bug: webrtc:10138
Change-Id: I452f08f1d9af57de789bd947a1fcb95536845f80
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/162183
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30098}
2019-12-16 14:51:16 +00:00
Danil Chapovalov
c9e532a7eb Fix PacketBuffer::LastReceivedKeyframePacketMs
to return time of the last receieved packet of a key frame rather than
last received first packet of a key frame.

To match VideoReceiveStream expectation and prevent requesting
a new key frame if a large key frame is currently on the way.

Bug: None
Change-Id: I443a60872a3580d324f050080a9868f7b90d71a2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161730
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30084}
2019-12-13 11:36:24 +00:00
Ying Wang
ef3998ffd1 Add directive to make webrtc metrics optional.
Bug: webrtc:11144
Change-Id: I4e75e6aec033784685de3670e880bb9f2b6ee8d2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161043
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30040}
2019-12-09 13:55:50 +00:00
Artem Titov
33f9d2b383 Migrate WebRTC on FrameGeneratorInterface and remove FrameGenerator class
Bug: webrtc:10138
Change-Id: If85290581a72f81cf60181de7a7134cc9db7716e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161327
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30033}
2019-12-07 00:54:26 +00:00
Florent Castelli
907dc806c7 Reland "Add support for RtpEncodingParameters::max_framerate"
Perf test failure was fixed separately.

TBR=steveanton@webrtc.org,sprang@webrtc.org,asapersson@webrtc.org

Original change's description:
> This adds the framework support for the max_framerate parameter.
> It doesn't implement it in any encoder yet.
>
> Bug: webrtc:11117
> Change-Id: I329624cc0205c828498d3623a2e13dd3f97e1629
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160184
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Commit-Queue: Florent Castelli <orphis@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29907}

Bug: webrtc:11117
Change-Id: I9c1daf7887c2024c6669dc79bff89d737417458c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161445
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30030}
2019-12-06 15:11:54 +00:00
Markus Handell
269ac81a86 VideoReceiveStream: Enable encoded frame sink.
This change ultimately enables wiring up VideoRtpReceiver::OnGenerateKeyFrame and
OnEncodedSinkEnabled into internal::VideoReceiveStream so that encoded frames
can flow to sinks installed in VideoTrackSourceInterface.

Bug: chromium:1013590
Change-Id: I0779932c251a2159880a39b2d42d5ce439cc88e6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161090
Commit-Queue: Markus Handell <handellm@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29988}
2019-12-03 15:55:04 +00:00
Danil Chapovalov
e3c4884b76 in PacketBuffer::Packet pass payload using smart buffer
Together with RtpDepacketizer refactoring that would reduce
number of memcpy while handling an rtp packet

Bug: webrtc:11152
Change-Id: I6f4e09c93af5e2a9314967a15eac8ced57ec712e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161087
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29985}
2019-12-03 14:55:54 +00:00
Florent Castelli
6c0e94650e Fix VP8 encoder maxFramerate support
By using the top level VideoCodec maxFramerate, the FrameBufferController
would sometimes not use the intended value for each simulcast layer.
In the case of "conference mode", top level maxFramerate was set to 5,
which matches the lower layer but is different from the overall maximum
maxFramerate which would be 60.

Bug: webrtc:11117
Change-Id: I4e1e68184d32675b083cd8e4e73a5291dc8fa620
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161096
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29982}
2019-12-03 12:47:20 +00:00
Artem Titov
5256d8bc4b Refactor FrameGenerator to return VideoFrameBuffer with VideoFrame::UpdateRect
Bug: webrtc:10138
Change-Id: I22079e2630bb1f3bb27472795fe923f9143b3401
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161010
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29973}
2019-12-02 17:11:37 +00:00
Danil Chapovalov
0682ca9a83 Use AV1 packetizer/depacketizer for AV1 bitstreams
Bug: webrtc:11042
Change-Id: Ibf45a99d8016dccbe109d946ac967efa927312e4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161011
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29953}
2019-11-28 18:01:10 +00:00
Johannes Kron
b8306cc9bb Remove temporary 8-bit H264 HDR fix
Bug: webrtc:10575, chromium:956468
Change-Id: Ie49af9c9624962bd19147833a167e5830bb81fe2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161004
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29948}
2019-11-28 15:32:04 +00:00
Florent Castelli
5cef9c3581 Revert "Add support for RtpEncodingParameters::max_framerate"
This reverts commit 15be5282e9.

Reason for revert: crbug.com/1028937

Original change's description:
> Add support for RtpEncodingParameters::max_framerate
> 
> This adds the framework support for the max_framerate parameter.
> It doesn't implement it in any encoder yet.
> 
> Bug: webrtc:11117
> Change-Id: I329624cc0205c828498d3623a2e13dd3f97e1629
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160184
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Commit-Queue: Florent Castelli <orphis@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29907}

TBR=steveanton@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org,orphis@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:11117
Change-Id: Ic44dd36bea66561f0c46e73db89d451cb3e22773
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160941
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29935}
2019-11-27 14:01:53 +00:00
Artem Titov
a101a4f186 Reland "Add IvfVideoFrameGenerator"
This is a reland of 712a26f384

Original change's description:
> Add IvfVideoFrameGenerator
> 
> Bug: webrtc:10138
> Change-Id: Iea590f334d22fb7d22077c9bdd3b5ba79691df2e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160185
> Commit-Queue: Artem Titov <titovartem@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29902}

Bug: webrtc:10138
Change-Id: If522d079f0a1e30d6f2b330792aa1d1fc043b8b8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160418
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29913}
2019-11-26 09:56:47 +00:00
Steve Anton
13ea34f305 Revert "Add IvfVideoFrameGenerator"
This reverts commit 712a26f384.

Reason for revert: consistently failing on iOS64 Debug: https://ci.chromium.org/p/webrtc-internal/builders/ci/iOS64%20Debug/20119

Original change's description:
> Add IvfVideoFrameGenerator
> 
> Bug: webrtc:10138
> Change-Id: Iea590f334d22fb7d22077c9bdd3b5ba79691df2e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160185
> Commit-Queue: Artem Titov <titovartem@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29902}

TBR=ilnik@webrtc.org,titovartem@webrtc.org

Change-Id: Ie34e254a7a4ff5ff8fdab7c6b3212792b52b6f53
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10138
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160560
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29910}
2019-11-25 21:58:02 +00:00
Florent Castelli
15be5282e9 Add support for RtpEncodingParameters::max_framerate
This adds the framework support for the max_framerate parameter.
It doesn't implement it in any encoder yet.

Bug: webrtc:11117
Change-Id: I329624cc0205c828498d3623a2e13dd3f97e1629
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160184
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29907}
2019-11-25 16:43:59 +00:00
Artem Titov
712a26f384 Add IvfVideoFrameGenerator
Bug: webrtc:10138
Change-Id: Iea590f334d22fb7d22077c9bdd3b5ba79691df2e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160185
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29902}
2019-11-25 13:38:09 +00:00
Artem Titov
5831ddad65 Introduce IVF file reader
Bug: webrtc:10138
Change-Id: I97d332942f4e645527330159efefb1cb1d8034a0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160008
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29844}
2019-11-20 13:20:56 +00:00
Danil Chapovalov
aa3f5da8dc Fork VCMPacket for PacketBuffer into own struct
it is easier to reduce and eliminate it when it is not bound to legacy video code

Bug: webrtc:10979
Change-Id: I517e298501b3358a914a23ddce40fcb3075d672d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159707
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29821}
2019-11-18 15:48:07 +00:00
Danil Chapovalov
3527a4fe55 In PacketBuffer split logic for detecting frame boundaries and assembling frame.
Bug: webrtc:11042
Change-Id: If1695067054b332569f4839aa6762af33173b769
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159283
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29799}
2019-11-14 13:32:06 +00:00
Åsa Persson
e644a03195 Add field trial for rampup in quality based on available bandwidth.
Bug: none
Change-Id: I32e1ea6fb2f2e20fc631e09b02c8f3a11b6c9fac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158888
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29751}
2019-11-11 10:13:28 +00:00
Sergey Silkin
df8fd28d0b Add output_path to VideoCodecTestFixture::Config.
This lets test to set output path explicitly.

Bug: none
Change-Id: I756484775f4c7f44cd1bb904c89d9215ffa48fe1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158798
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29702}
2019-11-06 08:48:52 +00:00
Rasmus Brandt
2b9317ad76 Stop checking VP8BaseHeavyTl3RateAllocation field trial on every frame.
- Centralize field trial string reading to RateControlSettings
- Cache RateControlSettings at all production code use sites

Bug: None
Change-Id: I0dbce9cc97fea0bc780982e7ef270b417a8c15bf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158664
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29680}
2019-11-04 13:50:59 +00:00
Danil Chapovalov
09860e0bc3 Split out counting unique rtp timestamps from packet_buffer
Bug: None
Change-Id: Ia6fd05f284e8304cf56ab9ddf944fb222a4c9573
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158676
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29656}
2019-10-30 15:27:48 +00:00
Danil Chapovalov
fbec2ec292 Detach H264 sps pps tracker from VCMPacket
Bug: webrtc:10979
Change-Id: I6ec5db570c3957dd068109accad88d2f62304163
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158523
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29639}
2019-10-29 09:52:38 +00:00
Erik Språng
3eae7e4e3c Add exponential backoff of retransmissions for a given packet
Bug: webrtc:8624
Change-Id: I8900c54935bf1da11ac74665426b0d198bd6d814
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/30900
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29625}
2019-10-28 10:06:23 +00:00
Danil Chapovalov
1dac707ecb Cleanup PacketBuffer tests to use immediate result
delete traces of the OnAssembledFrame callback
relax some expectation to better match test purpose,
in particular avoid verifying every test buffer is not cleared on new packet.
switch comparisons from EXPECT_EQ(constant, value) to more natural EXPECT_EQ(value, constant)

Bug: None
Change-Id: I81e2c9d0133221435cb2bb02c9190d9f32abd548
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158140
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29610}
2019-10-25 09:35:47 +00:00
Sergey Silkin
b2290f4e13 Revert "Reset end-of-frame flag in non-VCL packet."
This reverts commit c98ff2eff0.

Reason for revert: breaks decoding of H264 RTP streams where M bit is set in AUD packets.

Original change's description:
> Reset end-of-frame flag in non-VCL packet.
> 
> Bug: chromium:999807
> Change-Id: I28309d2fda16842e620e499cb9e77ec771827b8c
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157160
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29560}

TBR=philipel@webrtc.org,ssilkin@webrtc.org,philipel@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:999807
Change-Id: I8d6bcf4c00197b00d279b9e53a11652d3e61171b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158204
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29600}
2019-10-24 12:12:26 +00:00
Danil Chapovalov
ce1ffcdc06 change PacketBuffer to return it's result rather that use callback
Bug: None
Change-Id: I8cc05dd46e811d6db37af520d2106af21c671def
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157893
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29589}
2019-10-23 16:50:57 +00:00
Ilya Nikolaevskiy
5f2fc41fb5 VP9 decoder: replace DCHECK with error message
Bug: chromium:1016160
Change-Id: I0ef0db2b254829e7c0dff24b7a8da3a4056547ac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157890
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29567}
2019-10-22 09:54:19 +00:00
Sergey Silkin
c98ff2eff0 Reset end-of-frame flag in non-VCL packet.
Bug: chromium:999807
Change-Id: I28309d2fda16842e620e499cb9e77ec771827b8c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157160
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29560}
2019-10-21 13:54:31 +00:00
Mirko Bonadei
3663ed3ad6 Move rtc_base/ignore_wundef.h to its own target.
Since rtc_base/ignore_wundef.h doesn't have any dependency, it is easy to
move it to its own target and allow its dependant to avoid to take a
dependency rtc_base:on rtc_base_approved.

Bug: webrtc:9419
Change-Id: I17f205b0cb2b21cad388b04e60082df9398dffdf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157428
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29548}
2019-10-19 10:50:36 +00:00
Danil Chapovalov
4aae11dc46 Remove redundant fields in PacketBuffer
merge two vectors of the same size into single vector
Remove redundant size_ variable.
Remove redundant variables in the StoredPacket internal struct.
Remove frame_created flags since shortly after it is set, used flag is set to false

Bug: webrtc:10979
Change-Id: Ia37944362abda4e2a6c6741f436f95c45e0f7069
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157174
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29535}
2019-10-18 10:05:10 +00:00
Danil Chapovalov
05269ecd0b Rename PacketBuffer tests to follow conventions
Rename file with tests to match code under test.
Rename fixture by moving 'Test' from prefix to suffix

Bug: None
Change-Id: I54c36d3b517bde7cdffa3a7e74528cc464ea7ad7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157301
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29532}
2019-10-18 09:05:06 +00:00
Niels Möller
f07003c2ec Avoid Realloc in LibvpxVp8Encoder
Instead, compute the needed buffer size for the encoded VP8 frame
prior to copying the data.

Bug: chromium:1012256
Change-Id: I3dda921f6d8f974731d2138bc5f6166cfdb9a321
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157303
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29531}
2019-10-18 08:36:23 +00:00
Mirko Bonadei
86d053c2db Use source_sets in component builds and static_library in release builds.
Static libraries don't guarantee that an exported symbol gets linked
into a shared library (and in order to support Chromium's component
build mode, WebRTC needs to be linked as a shared library).

Source sets always pass all the object files to the linker.

On the flip side, source_sets link more object files in release builds
and to avoid this, this CL introduces a the GN template "rtc_library" that
expands to static_library during release builds and to source_set during
component builds.

See: https://gn.googlesource.com/gn/+/master/docs/reference.md#func_source_set

Bug: webrtc:9419
Change-Id: I4667e820c2b3fcec417becbd2034acc13e4f04fe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157168
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#29525}
2019-10-17 21:17:18 +00:00
Shyam Sadhwani
5b2df17422 Width and Height was not associated and provided to decoder for H264 streams which have Nalus before SPS
Summary:
There is an issue with WebRTC for handling of certain H.264 bitstreams where the packets forming the H.264 stream has non-zero packets before the packet containing SPS.

Typically a IDR (key frame) will have SPS/PPS (if present) or the IDR slice in the first packet.
But this is not required in all cases, for example when packetization-mode = 0, you can have each NALU in separate packet. And certain NALUs can exist before SPS, for example SEI, AUD.

The way WebRTC associates width/height to encoded frames is by tracking the dependency of IDR slices to SPS/PPS.
RTP packets containing SPS/PPS have correct width/height stored in them during parsing of SPS in RtpDepacketizerH264::ProcessStapAOrSingleNalu
IDR packets refer to SPS using ppsid, spsid and the width/height fields get transferred from packet containing SPS to IDR packet in H264SpsPpsTracker::CopyAndFixBitstream.

When packets are assembled into a single encoded H264 frame in PacketBuffer::FindFrames, the loop goes through all the packets/nalus in backward scan from last RTP packet of IDR to first one.
Hence the order of NALUs during this scan is : Last parts of IDR Slice -> Mid parts of IDR Slice RTP packet -> first IDR slice Packet (this should have correct width / height) -> RTP packet containing SPS/PPS (this should have correct width/height)
start_index points to the first RTP packet of the frame and its passed into RtpFrameObject's constructor. RtpFrameObject will use the width/height stored in first RTP packet.

This works fine as long as the first RTP packet has width/height, which will be the case if first RTP packet is IDR or SPS.
In H.264 first RTP packet may be AUD, SEI in those cases, RtpFrameObject will create IDR with width/height = 0 and this causes problem for Android hardware decoders.
On Android hardware decoders rely on correct width/height to initialize the hardware decoder.

Verified on real scenario that we have.
Simulated on AppRTCMobile on IOS Simulator
Added unit tests : ninja -C out/Default && ./out/Default/modules_unittests --gtest_filter=*FrameResolution*

Bug: webrtc:11025
Change-Id: Ie2273aae5e81fd62497e1add084876a3aa05af4d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156260
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Shyam Sadhwani <shyamsadhwani@fb.com>
Cr-Commit-Position: refs/heads/master@{#29515}
2019-10-17 13:51:16 +00:00
Danil Chapovalov
eb90e6ffe3 Merge SendTask implementation for SingleThreadedTaskQueueForTesting and TaskQueueForTest
That allows to use SingleThreadedTaskQueueForTesting via TaskQueueBase interface
but still have access to test-only SendTask function.

Bug: webrtc:10933
Change-Id: I3cc397e55ea2f1ed9e5d885d6a2ccda412beb826
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156002
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29480}
2019-10-15 09:17:36 +00:00
Elad Alon
c67a4d63dd Fix WebRTC-Video-MinVideoBitrate for VP9
Make sure the experiment-derived value is used for VP9.

Bug: webrtc:11024
Change-Id: I80b6d388486f2dec793bc8ca872babe6165dcfb2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156562
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29453}
2019-10-11 17:56:51 +00:00
Kuang-che Wu
f17976d019 Use single thread vp9 decoder for fuzzing
Single thread vp9 decoder is more fuzzer friendly.

Bug: chromium:1009073
Change-Id: I7f98680f1ce227126a62a1beccd8a283c9423aa6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156361
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Kuang-che Wu <kcwu@google.com>
Cr-Commit-Position: refs/heads/master@{#29435}
2019-10-10 13:49:40 +00:00
Kuang-che Wu
c466f080dd Cap vp9 fuzzer frame size to prevent OOM
Bug: chromium:1009073
Change-Id: I3583e6751249e42decb1f5d48afe10f0d8bd0a1a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156360
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Kuang-che Wu <kcwu@google.com>
Cr-Commit-Position: refs/heads/master@{#29433}
2019-10-10 13:29:40 +00:00
Ilya Nikolaevskiy
5963c7cf0a Count disabled due to low bw streams or layers as bw limited quality in GetStats
Bug: webrtc:11015
Change-Id: I65cd890706f765366d89ded8c21fa7507797fc23
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155964
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29421}
2019-10-09 16:58:34 +00:00
Niels Möller
d9755eea22 Delete large up-front allocation in LibvpxVp8Encoder::InitEncode
No longer useful after cl
https://webrtc-review.googlesource.com/c/src/+/155163

Bug: chromium:1012256,webrtc:9378
Change-Id: I2ee000b72add0b34933b7954ad7c8bf0d69fc88e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156163
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29416}
2019-10-09 12:40:31 +00:00
Sergey Silkin
999afa9cb8 Fix cropping in H264 decoder wrapper.
FFmpeg applies cropping (if needed) by moving plane pointers and
by adjusting frame resolution. Wrap AVframe into WrapI420Buffer.

Bug: webrtc:10892
Change-Id: I9814518759c9fc37f2bb6e16248fc32017ca4f4e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155662
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29404}
2019-10-08 13:19:34 +00:00
Ilya Nikolaevskiy
e93b1fe8fd Improve bitstream dumping logic to handle multiple SLs correctly
Before this change all layers were glued together at the receive side
into a single IVF frame. This confuses most bitstream parsers.
Since this change all spatial layers would be written as separate frames
on the receive side also (on the send side it's already done that way).

Bug: none
Change-Id: I68543e4d4b336f87699ec3b4a113b8c93af0b7e4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156082
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29401}
2019-10-08 11:55:19 +00:00
Danil Chapovalov
7c06777ab0 Cleanup includes in modules/include/module_common_types.h
Add missing includes to files that were transactivly depending on removed includes.

Bug: None
Change-Id: Id5923bb8dc3e1d8fbb664e460278ad3e5993be7e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155963
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29396}
2019-10-07 16:06:26 +00:00
Shyam Sadhwani
2b84dad18c Fixed issue with H264 packet buffer where it was not detecting presence of sps/pps for idr frames
This issue happens for default case sps_pps_idr_is_h264_keyframe_ is false

The way PacketBuffer::FindFrames works for H264 is it keeps on skipping the packets till it finds a packet which has last=1
This is checked here : if (sequence_buffer_[index].frame_end)
Inside this block there is a loop, to go back and scan all the packets till start of the frame.
Since the scan is backwards, the sequence of nalus in this scan is IDR -> PPS -> SPS.
Once IDR is detected if (h264_header->nalus[j].type == H264::NaluType::kIdr) , the code will has_h264_idr = true.
When it scans the previous packets, it skips those as has_h264_idr is true. These packets have the SPS / PPS and hence has_h264_sps / pps flags were never set to true.
This resulted in warning as no SPS/PPS has been found for IDR.

Test plan : verified loopback call on IOS simulator using H264 codec and the warning log "Received H.264-IDR frame..." is not present anymore

Bug: webrtc:11006
Change-Id: Icbe8a393e3679a8d621af6c76e4999fd60db04a0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155420
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Shyam Sadhwani <shyamsadhwani@fb.com>
Cr-Commit-Position: refs/heads/master@{#29386}
2019-10-04 14:56:05 +00:00
Niels Möller
b9bfe655d4 Delete VCMEncodedFrame::VerifyAndAllocate
And mark EncodedImage::Allocate as deprecated.

Bug: webrtc:9378
Change-Id: I03ce907fa6b87803ddb72f548f60a9bf1b7c317d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155163
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29383}
2019-10-04 14:16:49 +00:00
Erik Språng
f4e0c29ed1 SimulcastEncoderAdapter: support per layer fallback and single encoder proxying
This CL adds an optional second encoder factory to SimulcastEncoderAdapter,
that can be used to create software fallback adapter per simulcast layer.

It also adds logic to check if the encoder supports simulcast natively, if so
it only allocates a single instance and delegates the simulcast logic to that
encoder instead. This means we will be able to remove EncoderSimulcastProxy.

Bug: webrtc:11000
Change-Id: Ifd5f029cc281ee2cedf9d18efa5e7e460884d6ff
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155171
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29364}
2019-10-01 17:31:44 +00:00
philipel
b3bb2040a1 Remove unused RtpFrameObject ctor.
Bug: webrtc:10979
Change-Id: I9ab8cbd3da4c753f0fa318c41b6e74ddd9679901
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155172
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29354}
2019-10-01 11:23:26 +00:00
Ilya Nikolaevskiy
002b6f4f23 Fixes for support of disabling lower spatial layers in VP9
1) Always allocate at least one spatial layer in svc rate allocator

2) Ensure tests reflect known existing failing scenario
(k-svc video with no external ref control).

3) Update log representation of bitrate allocation, as it looks very
confusing with lower layers disabled.

Was:
[
[],
[], [x, y, z]]
New:
[
[]
[]
[x,y,z]]

Bug: webrtc:10977
Change-Id: I248d9b44c8848710aa5a194a5c1b96df6a2734ac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154744
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29345}
2019-09-30 13:20:12 +00:00
Niels Möller
2449d7aa78 Refactor legacy FrameBuffer to use EncodedImageBuffer::Realloc
Preparation for deleting VCMEncodedFrame::VerifyAndAllocate and
EncodedImage::Allocate.

Bug: webrtc:9378
Change-Id: If7c16061962bbd58c3e7d5720189854e00a3d7bf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154570
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29339}
2019-09-30 09:48:26 +00:00
philipel
fc3587418d Use new RtpFrameObject ctor for unittests.
Bug: webrtc:10979
Change-Id: I63f501b3a4538d65a73aae226f2006de191dbbec
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154565
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29337}
2019-09-30 08:28:45 +00:00
Niels Möller
ff2e215bcd Change FrameBuffer::CombineAndDeleteFrames to allocate a new buffer
Modifying buffers passed in to the frame buffer breaks sharing. This
cl is also a preparation for deleting
VCMEncodedFrame::VerifyAndAllocate and EncodedImage::Allocate.

Bug: None
Change-Id: I4e14bc4708bbcbcd91af2d4b764cb9b8271ec090
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154569
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29336}
2019-09-30 07:06:10 +00:00
Ilya Nikolaevskiy
bc8049ef0b Reland "VP9 encoder: handle disabled layers correctly"
Now vp9 screenshare would enable new layers as soon as requested and will force all spatial layers present on the next frame, even if they should be dropped because of frame-rate limiting.

This might cause frame-rate liming to be exceeded if layer is toggling on and off very often, but this situation is bad itself. E.g. in realtime video it will cause too many key-frames.

Now SvcRateAllocator and VP9EncoderImpl are aware that there may be some skipped layers before the first enabled. Key-frames and ss_info triggering logic is also updated.

(This is a reland without changes after updates to downstream projects)
Original-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153483

Bug: webrtc:10977
Change-Id: I02459c5982da2e0542a837514f5753c5f96401c6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154355
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29330}
2019-09-27 09:28:38 +00:00
philipel
7acc4a4a3a Reset |reference_finder_| on codec switch.
In this CL:
 - Moved critical section out of RtpFrameReferenceFinder.
 - RtpFrameReferenceFinder can now assign picture ids with an offset.
 - RtpVideoStreamReceiver will now reset the |reference_finder_| in case
   of a codec switch.

Bug: webrtc:10795, webrtc:10828
Change-Id: I22631c121a465c434de24af5ce8be2a647fe3556
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154353
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29317}
2019-09-26 11:05:59 +00:00
philipel
5dacece70c Removed unused _rotation_set variable from EncodedFrame.
Bug: none
Change-Id: I398417541fb66e58b0ad90c4b17c5d36eb61a004
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154520
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29316}
2019-09-26 10:45:03 +00:00
philipel
85d5c197a8 Added RtpFrameObject ctor with no PacketBuffer pointer.
Bug: webrtc:10979
Change-Id: Ie6a2b56e7374d60d1f74d8c315216b27df22a19b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154426
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29314}
2019-09-26 08:55:00 +00:00
Ilya Nikolaevskiy
90d6efbd4e Revert "VP9 encoder: handle disabled layers correctly"
This reverts commit 88fe84b7fb.

Reason for revert: Downstream project isn't updated to the latest libvpx roll yet, thus some tests are broken.

Original change's description:
> VP9 encoder: handle disabled layers correctly
> 
> Now vp9 screenshare would enable new layers as soon as requested and will
> force all spatial layers present on the next frame, even if they should be
> dropped because of frame-rate limiting.
> 
> This might cause frame-rate liming to be exceeded if layer is toggling on
> and off very often, but this situation is bad itself. E.g. in realtime video
> it will cause too many key-frames.
> 
> Now SvcRateAllocator and VP9EncoderImpl are aware that there may be some skipped
> layers before the first enabled. Key-frames and ss_info triggering logic is also
> updated.
> 
> Bug: webrtc:10977
> Change-Id: Ie2555210c0368a1d3c51ddf6670d0052e6d679de
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153483
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29296}

TBR=ilnik@webrtc.org,ssilkin@webrtc.org

Change-Id: If33886a5f8a0c3b33168dcadfe45c11a6f4387c1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10977
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154354
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29299}
2019-09-25 09:06:59 +00:00
Ilya Nikolaevskiy
88fe84b7fb VP9 encoder: handle disabled layers correctly
Now vp9 screenshare would enable new layers as soon as requested and will
force all spatial layers present on the next frame, even if they should be
dropped because of frame-rate limiting.

This might cause frame-rate liming to be exceeded if layer is toggling on
and off very often, but this situation is bad itself. E.g. in realtime video
it will cause too many key-frames.

Now SvcRateAllocator and VP9EncoderImpl are aware that there may be some skipped
layers before the first enabled. Key-frames and ss_info triggering logic is also
updated.

Bug: webrtc:10977
Change-Id: Ie2555210c0368a1d3c51ddf6670d0052e6d679de
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153483
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29296}
2019-09-25 08:42:19 +00:00
Johannes Kron
9d281028c7 Remove deprecated method
Bug: None
Change-Id: Ia390e05e3bb462e0e79bf3ff7fae6cba891e73ca
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154262
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29285}
2019-09-24 14:52:20 +00:00
Mirko Bonadei
1b575417b3 Always pass arguments to INSTANTIATE_TEST_SUITE_P.
Passing an empty arg is working at the moment but it is not
guaranteed to continue to work in the future.

This CL has been generated with:
git grep -l "INSTANTIATE_TEST_SUITE_P(," | xargs sed -i \
    "s/INSTANTIATE_TEST_SUITE_P(,/INSTANTIATE_TEST_SUITE_P(All,/g"

Bug: None
Change-Id: Icd2fb9d9d29aed5d692a234124bd990d0f097db4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153890
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29282}
2019-09-24 08:56:24 +00:00
Niels Möller
834a554962 Include module_common_types.h only where needed
Bug: None
Change-Id: I73d493f8f186b429c7be808f4dfac0398f150931
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153891
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29277}
2019-09-24 08:22:38 +00:00
Danil Chapovalov
f7457e55fe Store PacketBuffer by value instead of as reference counted object
Bug: None
Change-Id: I5a594972e8a8dad731c927a1a374301e549f5d71
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153887
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29267}
2019-09-23 13:28:09 +00:00
philipel
0cff4fce55 Removed unused frame_size param from RtpFrameObject ctor.
Bug: webrtc:10979
Change-Id: Idde493dc7f5165e3ca173d5a38861b444b5904a4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153668
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29253}
2019-09-20 10:56:01 +00:00
philipel
b5e4785464 RtpFrameObject now takes an EncodedImageBuffer in its ctor.
Bug: webrtc:10979
Change-Id: Ibc8b4a524ca95b5faa8850a41df8f2f0136a2969
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153666
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29251}
2019-09-20 10:15:01 +00:00
philipel
f0be5b5380 Make GetBitstream non-virtual since it is no longer needed for testing.
Bug: webrtc:10979
Change-Id: Id313c7fddbec40b9f19dae95f736379b872e3082
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153663
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29242}
2019-09-19 14:04:09 +00:00
philipel
76161f7446 Move the call to GetBitstream out of the RtpFrameObject ctor.
Bug: webrtc:10979
Change-Id: I9159eb04d4a371e8ed8f932a989d6b884faa7be7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153661
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29237}
2019-09-19 12:08:04 +00:00
philipel
e607a06338 Removed unused include from PacketBuffer.
Bug: none
Change-Id: I502f634e85421e38a02cd31d8ae5446cbe32d138
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153520
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29223}
2019-09-18 15:35:59 +00:00
Mirko Bonadei
317a1f09ed Use std::make_unique instead of absl::make_unique.
WebRTC is now using C++14 so there is no need to use the Abseil version
of std::make_unique.

This CL has been created with the following steps:

git grep -l absl::make_unique | sort | uniq > /tmp/make_unique.txt
git grep -l absl::WrapUnique | sort | uniq > /tmp/wrap_unique.txt
git grep -l "#include <memory>" | sort | uniq > /tmp/memory.txt

diff --new-line-format="" --unchanged-line-format="" \
  /tmp/make_unique.txt /tmp/wrap_unique.txt | sort | \
  uniq > /tmp/only_make_unique.txt
diff --new-line-format="" --unchanged-line-format="" \
  /tmp/only_make_unique.txt /tmp/memory.txt | \
  xargs grep -l "absl/memory" > /tmp/add-memory.txt

git grep -l "\babsl::make_unique\b" | \
  xargs sed -i "s/\babsl::make_unique\b/std::make_unique/g"

git checkout PRESUBMIT.py abseil-in-webrtc.md

cat /tmp/add-memory.txt | \
  xargs sed -i \
  's/#include "absl\/memory\/memory.h"/#include <memory>/g'
git cl format
# Manual fix order of the new inserted #include <memory>

cat /tmp/only_make_unique | xargs grep -l "#include <memory>" | \
  xargs sed -i '/#include "absl\/memory\/memory.h"/d'

git ls-files | grep BUILD.gn | \
  xargs sed -i '/\/\/third_party\/abseil-cpp\/absl\/memory/d'

python tools_webrtc/gn_check_autofix.py \
  -m tryserver.webrtc -b linux_rel

# Repead the gn_check_autofix step for other platforms

git ls-files | grep BUILD.gn | \
  xargs sed -i 's/absl\/memory:memory/absl\/memory/g'
git cl format

Bug: webrtc:10945
Change-Id: I3fe28ea80f4dd3ba3cf28effd151d5e1f19aff89
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153221
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29209}
2019-09-17 15:47:29 +00:00
Niels Möller
a740142398 Refactor LossNotificationController to not use VCMPacket
Bug: None
Change-Id: I15e1b3405c6538dd22aaeb125751c158c069478a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152384
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29193}
2019-09-16 11:25:45 +00:00
Niels Möller
ca79dc6779 Delete VideoReceiver2::TriggerDecoderShutdown.
This method used to be wired down to VCMReceiver and to
VCMJitterBuffer::Stop, but has become a nop. Also delete some
obsoleted comments.

Bug: webrtc:7408
Change-Id: I4c1e67272b1ffda786cc0ff358fa38e594aff304
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152620
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29167}
2019-09-12 13:44:13 +00:00
Ilya Nikolaevskiy
1af0f908c8 VP9 screenshare: use CONSTRAINED_FROM_ABOVE_DROP mode
This mode was added by libvpx team specificaly for this usecase: if a
layer is dropped, all lower layers have to be dropped also.

This ensures that higher layers always have higher framerate than the
lower layers and stream is RTP compatible.

This CL also renames full_superframe_drop_ to !layer_buffering, as it
closer reflects the purpose of that flag (in screenshare mode, no
buffering is needed, because the highest layer is always present in the
superframe, yet, it's not a full-superframe dropping mode).

Bug: webrtc:10257
Change-Id: I2589bfd2b9b63de0e410f277a716276234993843
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151764
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29155}
2019-09-11 11:21:39 +00:00
Johannes Kron
7ddea57e94 Add field-trial parameter to enable tests simulating a slow decoder
This CL adds a field trial parameter WebRTC-SlowDownDecoder that is
used to simulate a slow decoder. The parameter specifies how many
extra ms it takes to decode each video frame. This must only be used
in manual testing.

Bug: None
Change-Id: Iad4079100d67b95c224277aaeaf572e38068717f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151911
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29153}
2019-09-11 11:08:59 +00:00
Marin Kišić
9a91161b9f Fixing way of printing logs because RTC_LOG() on Android has limit on printing 1024-60 characters in line.
Bug: webrtc:10885
Change-Id: I42c365555b682f3352644330167e2a4331ba0527
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149180
Commit-Queue: Marin Kišić <kisicmar@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29151}
2019-09-11 10:44:07 +00:00
Niels Möller
2eecfc1f9a Trim dependencies in modules/video_coding/
And move jitter_buffer_common.h to the legacy build target.

Bug: None
Change-Id: I986649f2f0773cadfa7dd9c8b533af7ecf01f3a3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152382
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29150}
2019-09-11 09:31:10 +00:00
Niels Möller
45b01c7962 Delete some dead code in vcm::VideoReceiver and VCMReceiver
Bug: None
Change-Id: I9cb8bd57af697762a9fc76007e139695afaf1fa4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152381
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29134}
2019-09-10 12:40:58 +00:00
Niels Möller
fe407b7a1d Move code related to VideoCodingModule to its own build target
The new target, modules/video_coding:video_coding_legacy, is not
depended upon by any webrtc non-test code.

Bug: webrtc:7408
Change-Id: I94127e2b8b3b8f15917bfa38e602f8face91fcdb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152163
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29133}
2019-09-10 12:34:38 +00:00
Niels Möller
9509d95c48 Add empty build target modules/video_coding:video_coding_legacy
A followup cl will move VideoCodingModule and related code into this
target.

Bug: webrtc:7408
Change-Id: Iade572b597769456c9b8c76f584500e2bd9a58f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152280
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29122}
2019-09-10 07:30:49 +00:00
Niels Möller
ee3d995091 New class VideoReceiver2, a trimmed-down vcm::VideoReceiver
The vcm::VideoReceiver class is used by both VideoReceiveStream and
the legacy api VideoCodingModule. They have different requirements,
since the latter uses the old jitterbuffer and runs the code on a
ProcessThread.

By making a copy and trimming it down to what's actually used by
VideoReceiveStream, we can drop the dependency on the old
jitterbuffer, without breaking the legacy api. This should also make
it easier to do follow-up refactorings to trim down the class further,
and ultimately remove it.

Bug: webrtc:7408
Change-Id: Iec8a167fe5d0425114b0b67a5b4c2fd5fc4fa150
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151910
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29108}
2019-09-09 11:23:54 +00:00
Ilya Nikolaevskiy
30323e2fb2 VP9 screenshare: fix incorrect assumptions on buffer contents
if higher layer is enabled, then disabled, then key-frame is issued, then
the layer is enabled again, the buffer would contain a picture from before
the key-frame and it might have a higher pid than the currently encoded one.
This would trigger the DCHECK. It's safe to remove the DCHECK completely, because
such occasions would cause unsigned overflow and cause the following check for
maximum allowed picture difference to fail and the wrong picture won't
be used as a temporal reference.

This error only caused failures in debug builds and couldn't lead to corruptions
because there're periodical key-frames generated and pid difference can never become so
big that negative value would overflow to something close to 0.

Bug: webrtc:10257
Change-Id: Ie3b3ed0e24421787e3b40a37987ccecb75d04635
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151643
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29099}
2019-09-06 12:30:16 +00:00
Erik Språng
2b9dba3d9c Implement stable rate support in SimulcastRateAllocator
Bug: webrtc:10126
Change-Id: I2ea8d27b0bd6f7ffd1ebbba451bd1ce1f2eee3d9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151121
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29097}
2019-09-06 11:17:30 +00:00
Erik Språng
cf9cbf5edb Add support for stable bitrate target in SvcRateAllocator
Bug: webrtc:10126
Change-Id: I1362d183bb91510db4e2763a779bcdf681d855ef
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149069
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29066}
2019-09-04 14:22:43 +00:00
Johannes Kron
a370556270 Refactor to free up PacketBuffer as soon as possible
The packets belonging to a frame were kept in PacketBuffer
until the frame was decoded. This CL clears the dependencies
of an existing RtpFrameObject to PacketBuffer so that we can
free up PacketBuffer as soon as the RtpFrameObject is created.

Bug: none
Change-Id: Ic939be91815519ae1d1c67ada82006417b2d26a3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149818
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28977}
2019-08-28 08:07:32 +00:00
Johannes Kron
0c141c591a Fix frames dropped statistics
The |frames_dropped| statistics contain not only frames that are dropped
but also frames that are in internal queues. This CL changes that so
that |frames_dropped| only contains frames that are dropped.

Bug: chromium:990317
Change-Id: If222568501b277a75bc514661c4f8f861b56aaed
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150111
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28968}
2019-08-27 07:43:01 +00:00
Yves Gerey
1fda027729 [vp9] Array temporal_up_switch wasn't properly initialized.
This CL makes ubsan happy. Previously failing on this line:
https://cs.chromium.org/chromium/src/third_party/webrtc/modules/video_coding/codecs/vp9/include/vp9_globals.h?rcl=a2dae38ee7729ec1d6fcb7d22b7a597c627ad81a&l=142

Bug: webrtc:9855
Change-Id: Ib9ddecab4cac8e403986287bb01a2f15e980206c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150524
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Yves Gerey <yvesg@google.com>
Cr-Commit-Position: refs/heads/master@{#28952}
2019-08-26 09:17:57 +00:00
Johannes Kron
b88b44e7a4 Don't include duplicated and incomplete frames in stats.
The received frames statistics currently include also frames
that are dropped because they are duplicated, incomplete, or
the buffer being full. After this CL only frames that are
added to the decode queue are counted.

This CL is part of fixing the dropped frames statistics that
are currently also counting frames that are in the decode
queue.

Bug: chromium:990317
Change-Id: I7df31939ecb7b9e222086e1141a15420fa2819dc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150108
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28939}
2019-08-22 11:59:37 +00:00
Jonas Olsson
9fd2908f2e Remove unused framerate parameter from simulcast bitrate allocator.
It's not removed from VideoBitrateAllocationParameters as that struct
is part of the API.

Bug: webrtc:9883
Change-Id: I69f683e3c1dc3a0edc1711f6289514b86b05ad77
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149815
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28935}
2019-08-22 09:01:54 +00:00
Åsa Persson
f5e5d250bc BalancedDegradationSettings: add option to configure a min framerate diff.
If a framerate reduction (input fps - restricted fps) is less than the
configured diff, shorten interval to next qp check.

Bug: none
Change-Id: Ia0b9e0638e5ba75cdc20a1bb45bfcb7d858c5f89
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149040
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28880}
2019-08-16 16:13:46 +00:00
Erik Språng
d7ee76cadd Wire up field trials for some experimental screenshare settings
Bug: b/132074409
Change-Id: I83d5334255bad4fcf585b9850506bbfe1914ba57
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147868
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28758}
2019-08-05 13:47:01 +00:00
Florent Castelli
8bbdb5b9bd Update VideoBitrateAllocator allocate to take a struct with more fields
We want to evaluate more data in order to make better choices in the
bitrate allocators.
In order to freely update the parameter list without
breaking the API many times for projects customizing them, we'll use a
struct instead.

Bug: webrtc:10126
Change-Id: I443f86781c5134950294cdd1e3197a47447cf973
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141418
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28748}
2019-08-02 13:52:54 +00:00
Johannes Kron
bd3f30535c Request a new key frame if packet buffer is cleared
Bug: webrtc:10843
Change-Id: I1eab0891f3e68b7d504dc637790604a25c243856
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147721
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28735}
2019-08-01 14:35:54 +00:00
Sebastian Jansson
ed0febf573 Add k prefix to FrameGenerator::OutputType enum values
This prepares for using VideoFrameBuffer::Type as
FrameGenerator::OutputType, which will reduce the
number of redundant enums in the code.

Bug: webrtc:9883
Change-Id: I253f5f1ea7181e02a5cf1a92925f51da8ada6aa2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146982
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28696}
2019-07-29 09:41:31 +00:00
Florent Castelli
596ed251e1 Don't assume all simulcast screenshare have 2 temporal layers
The simulcast allocator would only set bitrates for the first 2 layers
in conference_screenshare_mode.
That would trigger an issue in the VP8 encoder initialization that expects
to have growing bitrates for the layers (3rd layer would have the same
bitrate as the 2nd one).

Bug: webrtc:8785
Change-Id: Ic6c940b78022387841b28074b373be6b2f45cb15
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145922
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28598}
2019-07-18 11:51:03 +00:00
philipel
2c850afe8d Use nalus_length instead of is_first_packet_in_frame to insert startcodes in the H264SpsPpsTracker.
Bug: none
Change-Id: I752b1696a6545356fc9ada9d70c63b2ab9bae9e6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145334
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Mirta Dvornicic <mirtad@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28559}
2019-07-12 14:04:26 +00:00
Ilya Nikolaevskiy
a0e2609a08 Partially revert of ColorSpace information copying around decoders
This partially reverts these 2 CLs:
1) Reland "Copy video frames metadata between encoded and plain frames in one place"
https://webrtc.googlesource.com/src/+/2ebf5239782bf6b46d4aa812f34fa9f9e5a02be9

2) Don't copy video frame metadata in each encoder/decoder
https://webrtc.googlesource.com/src/+/ab62b2ee51e622be6d0aade15e87e927fa60e6f2

The problem with them were that ColorSpace was made to always be copied from the
EncodedImage in the GenericDecoder, which overwrote ColorSpace information from
the decoder.

If decoder applied color space transition or bitstream color space information
was different from the WebRTC signaled one, the incorrect color space data were
passed to the renderer.

This CL removes introduced change regarding color space data: GenericDecoder
doesn't copy or store it and software decoders are restored to copy it.
Relevant tests are also removed.

Bug: chromium:982486
Change-Id: I989e01476ff7f7df376c05578ab8f540b95a1dd2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145323
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28556}
2019-07-12 11:27:07 +00:00
Sergey Silkin
44cec0b5bd Handle non-integer frame rates in video codec tests.
Encoder API accepts non-integer frame rate since
https://webrtc-review.googlesource.com/c/src/+/131949.

Bug: webrtc:10812
Change-Id: I5fc9c5dfac4b182b84a735218a2946a95cc2b93c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143483
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28548}
2019-07-12 07:37:43 +00:00
Danil Chapovalov
b249c54209 Delete GlobalTaskQueueFactory as now unused
Bug: webrtc:10284
Change-Id: I80fd75b0bd306a26e0c022047551587ee5fd08cd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144781
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28516}
2019-07-09 14:45:47 +00:00
Jonas Olsson
a4d873786f Format almost everything.
This CL was generated by running

git ls-files | grep -P "(\.h|\.cc)$" | grep -v 'sdk/' | grep -v 'rtc_base/ssl_' | \
grep -v 'fake_rtc_certificate_generator.h' | grep -v 'modules/audio_device/win/' | \
grep -v 'system_wrappers/source/clock.cc' | grep -v 'rtc_base/trace_event.h' | \
grep -v 'modules/audio_coding/codecs/ilbc/' | grep -v 'screen_capturer_mac.h' | \
grep -v 'spl_inl_mips.h' | grep -v 'data_size_unittest.cc' | grep -v 'timestamp_unittest.cc' \
| xargs clang-format -i ; git cl format

Most of these changes are clang-format grouping and reordering includes
differently.

Bug: webrtc:9340
Change-Id: Ic83ddbc169bfacd21883e381b5181c3dd4fe8a63
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144051
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28505}
2019-07-08 13:45:15 +00:00
Florent Castelli
668ce0c7fa Remove trial WebRTC-SimulcastMaxLayers and make its behavior default
Also cleans up the unused parameters from GetSimulcastConfig.

Bug: webrtc:8785, webrtc:8486
Change-Id: I1aea8f6c9e6590211ec5ee5cafc0ec2a2100d68f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144627
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28496}
2019-07-05 14:55:46 +00:00
Rasmus Brandt
1efb4a283b Add field trial for forcing partition resilience mode in libvpx.
Bug: None
Change-Id: I51c90e0eef111f3aee1ef9672b3ace5a62cbdcb4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144626
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28488}
2019-07-04 16:13:36 +00:00
philipel
e8ed83003d WebRtcVideoChannel encoder fallback.
In this CL:
 - Added WEBRTC_VIDEO_CODEC_ENCODER_FAILURE return code that can
   be returned by the encoder wrapper in case of a broken encoder.
 - Added EncoderFailureCallback interface that can be called
   to request encoder fallback to be performed. Implemented by
   WebRtcVideoChannel and called from the VideoStreamEncoder.
 - Updated SelectSendVideoCodec to select all compatible codecs instead
   of just one.

Bug: webrtc:10795
Change-Id: I87a83fd02e48c40493c930471c06c3d0941031ab
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140888
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28462}
2019-07-03 12:31:42 +00:00
Sergey Silkin
5ee6967c4e Don't reset encoder on max/min bitrate change.
- Don't reset encoder if max/min bitrate changed.
- Removed min/max bitrate DCHECKs from encoder wrappers.
- Reset encoder if start_bitrate changed. Only do this if encoding
  has not yet started.
- Updated ReconfigureBitratesSetsEncoderBitratesCorrectly test.
- Removed EncoderSetupPropagatesCommonEncoderConfigValues test since it
was a subset of ReconfigureBitratesSetsEncoderBitratesCorrectly.

Bug: webrtc:10773
Change-Id: Id9cbb2ea229232fd95967819e2a937b26948de9f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144028
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28446}
2019-07-02 12:52:55 +00:00
Elad Alon
45befc5f1f Pass FecControllerOverride to Vp8FrameBufferControllerFactory::Create
Previously, FecControllerOverride was passed to
Vp8FrameBufferController::SetFecControllerOverride. Passing to
the factory is a more elegant way, since it's only used when
the controller is constructed.

TBR=kwiberg@webrtc.org

Bug: webrtc:10769
Change-Id: Iae599889e7ca9003e3200c2911239cbb763ee65a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144380
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28443}
2019-07-02 10:55:55 +00:00
Johannes Kron
bfd343b9be Add totalDecodeTime to RTCInboundRTPStreamStats
Pull request to WebRTC stats specification:
https://github.com/w3c/webrtc-stats/pull/450

Bug: webrtc:10775
Change-Id: Id032cb324724329fee284ebc84595b9c39208ab8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144035
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28440}
2019-07-02 08:28:06 +00:00
Elad Alon
65764e4ed7 Add missing overrides in VideoEncoder proxies/adapters
Add:
1. OnPacketLossRateUpdate
2. OnRttUpdate
3. OnLossNotification

Add them to:
1. VideoEncoderSoftwareFallbackWrapper
2. SimulcastEncoderAdapter
3. MultiplexEncoderAdapter

Bug: None
Change-Id: I4b0799f7d8c19211741f48da87106daccd39af95
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144030
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28423}
2019-06-28 22:45:53 +00:00
Elad Alon
7e00c679a5 Pass FecControllerOverride to Vp8FrameBufferController
Bug: webrtc:10769
Change-Id: I06d875f5afdc7ebf290ad70934b6632e20ddf065
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143964
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28418}
2019-06-28 17:48:08 +00:00
Elad Alon
8f01c4e1b6 Define FecControllerOverride and plumb it down to VideoEncoder
The purpose of this interface is to allow VideoEncoder to override
the bandwidth allocation set by FecController in RtpVideoSender.

This CL defines the interface and sends it down to VideoSender.
Two upcoming CLs will:
1. Make LibvpxVp8Encoder pass it on to the (injectable)
   FrameBufferController, where it might be put to good use.
2. Modify RtpVideoSender to respond to the message sent to it
   via this API.

TBR=kwiberg@webrtc.org

Bug: webrtc:10769
Change-Id: I2ef82f0ddcde7fd078e32d8aabf6efe43e0f7f8a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143962
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28416}
2019-06-28 15:57:22 +00:00
Elad Alon
a47ba4119f Get rid of deprecated version of NackSender::SendNack [1/2]
[1/2] - Make new version pure-virtual, and deprecated version non-pure.
        This will allow deleting the deprecated version from downstream
	projects.
[2/2] - Remove deprecated version.

TBR=stefan@webrtc.org

Bug: webrtc:10336
Change-Id: Ia132ef071b1f379fc74834178e75e981ca908125
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144042
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28413}
2019-06-28 13:04:48 +00:00
Åsa Persson
a09484940b RateControlSettings: add option to set min pixels per frame for libvpx vp8.
Bug: none
Change-Id: I09aa1bcea2f4a9cd65ffeef1df1d9656e4604def
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144029
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28412}
2019-06-28 10:54:23 +00:00
Niels Möller
825aad13dc Delete almost all includes of platform_file.h
Only remaining user is WavReader. Demote its constructor
accepting a PlatformFile to private, to refactor implementation
in a later cl.

Bug: webrtc:6463
Change-Id: I7b950be6f02073cb135dd0fab1190b9dc0de1fba
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144025
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28410}
2019-06-28 07:30:15 +00:00
Danil Chapovalov
c2f56862a6 Extend structures to store updated version of the dependency descriptor
Rename structures to match terminology in the spec

Bug: webrtc:10342
Change-Id: I1329abaca98ae7f82307451032d5ce1533e80772
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143960
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28402}
2019-06-27 12:10:38 +00:00
Johnny Lee
c53850675b Enable H.264 temporal scalability in simulcast.
Bug: webrtc:10651
Change-Id: I58372186930ce33e925f85edb0f308657dbfe273
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142840
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28381}
2019-06-26 09:21:32 +00:00
Åsa Persson
1231419785 BalancedDegradationSettings: Add option to configure QP thresholds.
Add possibility to configure low/high QP thresholds based on resolution.

Bug: none
Change-Id: Iaa3168b77678bd74feb67295d7658c0140721231
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141867
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28348}
2019-06-24 09:32:51 +00:00
Elad Alon
2ffcd8256f Make DefaultTemporalLayers explicitly request a key frame
Bug: webrtc:10758
Change-Id: I426bfee7c3cdc2ac058f7e7f44368530a28b02a5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143169
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28345}
2019-06-24 08:26:17 +00:00
philipel
6c42d92ccc Added video_coding::EncodedFrame copy ctor.
Bug: none
Change-Id: I45272e81509741dc022d613758466ad0f8de7a31
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143160
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28333}
2019-06-20 11:19:50 +00:00
Chen Xing
f00bf42d1c Add plumbing of RtpPacketInfos to each VideoFrame as input for SourceTracker.
This change adds the plumbing of RtpPacketInfo from RtpVideoStreamReceiver::OnRtpPacket() to VideoReceiveStream::OnFrame() for video. It is a step towards replacing the non-spec compliant ContributingSources that updates itself at packet-receive time, with the spec-compliant SourceTracker that will update itself at frame-delivery-to-track time.

Bug: webrtc:10668
Change-Id: Ib97d430530c5a8487d3b129936c7c51e118889bd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/139891
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Chen Xing <chxg@google.com>
Cr-Commit-Position: refs/heads/master@{#28332}
2019-06-20 10:24:29 +00:00
Niels Möller
4d504c76cb New interface EncodedImageBufferInterface, replacing use of CopyOnWriteBuffer
Bug: webrtc:9378
Change-Id: I62b7adbd9dd539c545b5b1b1520721482a4623c4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138820
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28317}
2019-06-19 07:02:34 +00:00
philipel
5e953d7968 Insert startcodes for H264 single NALU packets.
Bug: none
Change-Id: I68ee9b84d75b67044d28a47fe740c79a2cd33517
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142169
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28287}
2019-06-14 13:45:21 +00:00
Elad Alon
5cf390386b Allow Vp8FrameBufferController::UpdateConfiguration to reset set of overrides
Bug: webrtc:10737
Change-Id: Ifdf82f140465d114300eda1e3ba1a26c70aaef76
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141663
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28247}
2019-06-12 10:12:44 +00:00
Niels Möller
47ae30358e Delete deprecated method VideoCodingModule::SetReceiverRobustnessMode
Bug: webrtc:7408
Change-Id: Ie0eb5b4b1522948bc215cab6e3aaaa745f4b3698
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141401
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28245}
2019-06-12 06:39:38 +00:00
Elad Alon
a27958421c Inform FrameBufferController of encoder capabilities
Bug: webrtc:10720
Change-Id: I958b83e29e8e87252e08419b8e16d554983a1a63
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140941
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28242}
2019-06-11 19:26:23 +00:00
Elad Alon
370f93a34a Reland "Inform VideoEncoder of negotiated capabilities"
This is a reland of 11dfff0878

Now that I am sure that WebRTC code is not calling the obsolete
versions, I will just remove the NOT_REACHED and call the
new version from the old ones, so as not to trip up downstream
projects.

Original change's description:
> Inform VideoEncoder of negotiated capabilities
>
> After this CL lands, an announcement will be made to
> discuss-webrtc about the deprecation of one version
> of InitEncode().
>
> Bug: webrtc:10720
> Change-Id: Ib992af0272bbb16ae16ef7e69491f365702d179e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140884
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28224}

TBR=sakal@webrtc.org,kwiberg@webrtc.org,sprang@webrtc.org

Bug: webrtc:10720
Change-Id: I46c69e45c190805c07f7e51acbe277d7eebd1600
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141412
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28236}
2019-06-11 14:49:37 +00:00
Sebastian Jansson
7a994334f1 Avoids crash in VCMJitterEstimator due to incorrectly calculated mean FPS.
Bug: webrtc:10728
Change-Id: I9e50ebdcfd9ef7d408cbf00111f29f0c80fd6c75
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141402
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28226}
2019-06-11 12:04:52 +00:00
Philip Eliasson
49d661a7d3 Revert "Inform VideoEncoder of negotiated capabilities"
This reverts commit 11dfff0878.

Reason for revert: Downstream import failure.

Original change's description:
> Inform VideoEncoder of negotiated capabilities
> 
> After this CL lands, an announcement will be made to
> discuss-webrtc about the deprecation of one version
> of InitEncode().
> 
> Bug: webrtc:10720
> Change-Id: Ib992af0272bbb16ae16ef7e69491f365702d179e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140884
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28224}

TBR=sakal@webrtc.org,kwiberg@webrtc.org,eladalon@webrtc.org,kthelgason@webrtc.org,sprang@webrtc.org

Change-Id: I7f833055c67f1f879b01dd8c156ba7b8840e8747
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10720
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141411
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28225}
2019-06-11 11:56:04 +00:00
Elad Alon
11dfff0878 Inform VideoEncoder of negotiated capabilities
After this CL lands, an announcement will be made to
discuss-webrtc about the deprecation of one version
of InitEncode().

Bug: webrtc:10720
Change-Id: Ib992af0272bbb16ae16ef7e69491f365702d179e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140884
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28224}
2019-06-11 11:32:13 +00:00
Chen Xing
5d24b16c77 Prepare for splitting the api/video:video_frames build rule.
This change is part of a change to break the dependency between "api:rtp_headers" and "api/video:video_frame". It does so by first creating an empty "api/video:video_rtp_headers" build rule so that downstream projects can be fixed before moving the source files.

Bug: webrtc:10668
Change-Id: I81aa6edfef3639b457a40aa93de048e62cbfd8ef
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140291
Commit-Queue: Chen Xing <chxg@google.com>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28209}
2019-06-10 11:50:51 +00:00
“Michael
d3a4ebe332 Control rtt_mult addition cap via experiment.
Bug: webrtc:10717
Change-Id: I68f7d8216e1a1611e692dd82ba96890cad98c7de
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140284
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28191}
2019-06-07 09:43:26 +00:00
Ilya Nikolaevskiy
ab62b2ee51 Don't copy video frame metadata in each encoder/decoder
As this is handled higher up the pipeline in a single
place for all encoders/decoders

Bug: webrtc:10460
Change-Id: I95b0a69aecaf07283c8776ac0d7e85d097e3576b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/139882
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28172}
2019-06-05 15:33:49 +00:00
Elad Alon
b64af4b168 Add retransmission_allowed flag to encoder output
Using this flag, an encoder may inform the RTP sender module that
the packet is not elligible for retransmission. Specifically, it
may not be retransmitted in response to a NACK message,
nor because of early loss detection (see CL #135881).

Bug: webrtc:10702
Change-Id: Ib6a9cc361cf10ea7214cf672e05940c27899a6be
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140105
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28169}
2019-06-05 12:08:07 +00:00
Elad Alon
f91353e7a9 FecControllerDefault nits (missing empty lines)
Bug: None
Change-Id: I69de2c0c0c9f20e0742ce4b3f325a030d37268f9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140285
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28165}
2019-06-05 10:17:15 +00:00
“Michael
e0f370471a Add cap to video jitter buffer size/latency in experiment branches only.
Bug: webrtc:10664
Change-Id: I03762c8b318f26f2689e89545aa8cc8e5b4a4329
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138081
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28155}
2019-06-04 15:50:27 +00:00
Elad Alon
e86af2c75f Allowing buffering a LNTF (loss notification) feedback message in RTCPSender
Loss notifications may either be sent immediately, or wait until another
RTCP feedback message is sent.

Bug: webrtc:10336
Change-Id: I40601d9fa1dec6c17b2ce905cb0c8cd2dcff7893
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/139242
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28142}
2019-06-03 16:28:34 +00:00
Elad Alon
ef09c5b734 Buffer RTCP feedback messages in RtpVideoStreamReceiver
Currently, if LNTF and NACK messages are both created, they will
be sent out in separate RTCP messages. This is wasteful.
This CL is the first of in a series of CLs that will ensure that
these feedback messages can be buffered together, without introducing
more of a delay than the CPU time required to process both messages.

Bug: webrtc:10336
Change-Id: I950324112ee346695a12a17d025483ea5e99c732
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/139112
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28136}
2019-06-03 12:19:36 +00:00
Ilya Nikolaevskiy
039a7146ab VP9 screenshare: drop base layer separately
Because of a low bitrate target, base layer has drops much more frequently
than other layers. But it reduces overall framerate, especially then
input framerate is low (5 fps).

This CL allows pre-layer drops and disables droppoing on higher spatial
layers for screenshare, solving the issue.
Additional care have to be taken then new spatial layers are enabled
dynamically to not create non-compatible with RTP references.

Bug: webrtc:10257
Change-Id: Ie056484c99a3f35ff4405ef71337dc2d034db8bb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138262
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28063}
2019-05-24 15:28:02 +00:00
Erik Språng
4c29546e15 Add test to cover bug in vp9 wrapper, triggered by field trial
This CL adds test coverage for the following fix:
https://webrtc-review.googlesource.com/c/src/+/138076

Bug: webrtc:10155, b:133399415
Change-Id: I4a680ad493f448f8565b570d09d3eb60a744325b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138260
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28061}
2019-05-24 13:47:06 +00:00
Mirko Bonadei
815b1a6f53 Use preprocessor to strip H264 implementation.
This CL makes it more flexible and easier to include/exclude H264 code
when using other build systems because it delegates the decision to
remove the code to the preprocessor instead of GN.

This CL should be a noop, and for WebRTC/Chromium the GN param
`rtc_use_h264` will still be the only thing to change in order to
include/exclude H264.

Moving code that requires ffmpeg or h264 out of the #ifdef/#endif
part should break the build since dependencies are only added if
`rtc_use_h264=true`.

Bug: webrtc:9213
Change-Id: Ibc04edc2f6b9e51489ffe638d5be4b32959cdca0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137430
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28055}
2019-05-24 11:33:07 +00:00
Ilya Nikolaevskiy
5c18a5ff5e Reland "VP9 screenshare: Don't base layers frame-rate on input frame-rate"
Reland with fixes.

If input framerate is a little unstable, using it to cap layers will
make output framerate even smaller for longer periods of time.

Also, fix screenshare_loopback test for low-fps vp9 testing.

Bug: webrtc:10257
Change-Id: Id40a780d461e6b51cb44d275b8aa5d7b348d3586
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138215
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28054}
2019-05-24 11:05:04 +00:00
Ilya Nikolaevskiy
ce723234ba Revert "VP9 screenshare: Don't base layers frame-rate on input frame-rate"
This reverts commit eb1754c575.

Reason for revert: breaks downstream projects

Original change's description:
> VP9 screenshare: Don't base layers frame-rate on input frame-rate
> 
> If input framerate is a little unstable, using it to cap layers will
> make output framerate even smaller for longer periods of time.
> 
> Also, fix screenshare_loopback test for low-fps vp9 testing.
> 
> Bug: webrtc:10257
> Change-Id: I64aa087e859ab4ab8e484c9ab7f5ac0fb18bd37d
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138204
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28050}

TBR=ilnik@webrtc.org,ssilkin@webrtc.org

Change-Id: I82bfbac58249cfe0da5ff565aa97a4745fd078ff
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10257
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138213
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28051}
2019-05-24 09:31:56 +00:00
Ilya Nikolaevskiy
eb1754c575 VP9 screenshare: Don't base layers frame-rate on input frame-rate
If input framerate is a little unstable, using it to cap layers will
make output framerate even smaller for longer periods of time.

Also, fix screenshare_loopback test for low-fps vp9 testing.

Bug: webrtc:10257
Change-Id: I64aa087e859ab4ab8e484c9ab7f5ac0fb18bd37d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138204
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28050}
2019-05-24 09:04:51 +00:00
Erik Språng
eb180f8f77 Fix incorrect libvpx vp9 dynamic rate control settings
Bug: webrtc:10155, b:133399415
Change-Id: I69430dce41cde8bc1f8716b8508d4be8d9645d6d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138076
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28037}
2019-05-23 12:55:36 +00:00
Sergey Silkin
2799e63bfb Add sizes of spatial layer frames to EncodedImage
WebRTC combines VP9 SVC spatial layer frames into superframe and passes
it to a decoder. The chromium HW VP9 decoder (wrapper) needs to know
location of each spatial layer frame in the frame buffer. To provide
decoder with such information this CL:
- Adds Set/SpatialLayerFrameSize methods to EncodedImage.
- Sets size of each spatial layer frame on superframe at assembly stage.

Bug: webrtc:10495
Change-Id: I68c3c0d668c67dfa1740e004059d860dd98f67f9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136922
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28032}
2019-05-23 07:16:42 +00:00
Stefan Holmer
4ed7e511f6 Revert "Add ability to cap the video jitter estimate to a max value."
This reverts commit a8ae407a48.

Reason for revert: This CL incorrectly affects non-experiment branch.  A new CL affecting only the experiment will be uploaded.

Original change's description:
> Add ability to cap the video jitter estimate to a max value.
>
> Bug: webrtc:10572
> Change-Id: I21112824dc02afa71db61bb8c2f02723e8b325b6
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133963
> Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27744}

TBR=stefan@webrtc.org,mhoro@webrtc.org

Bug: webrtc:10572
Change-Id: I4af334168ca70ecfae7fd18fc7c852819a98d866
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138063
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28025}
2019-05-22 15:07:33 +00:00
Niels Möller
fd26ef732f Delete unused RTPFragmentationHeader members
Deleted fragmentationTimeDiff and fragmentationPlType. Unused since cl
https://webrtc-review.googlesource.com/c/src/+/134212.

Bug: webrtc:6471
Change-Id: I36b45be6f6babeda5a5f172c1f1a3876bb752e7f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134308
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27972}
2019-05-17 09:26:17 +00:00
Elad Alon
9a4c93b7d7 Add DCHECK in LibvpxVp8Encoder
Ensure that frame_buffer_controller_ does not get assigned null
by the factory.

Bug: None
Change-Id: I84e141ae0390cd024863f88cdcdc79b8b13e7c64
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137043
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27962}
2019-05-16 13:29:07 +00:00
Ilya Nikolaevskiy
4fd42974b1 Fix metadata setting in H264 decoder
Bug: webrtc:10303
Change-Id: Ie819802bd99975184b7a0dba3a56260d156b0246
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136807
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27947}
2019-05-15 08:43:07 +00:00
Sergey Silkin
e62a08a87a Request key frame on all layers.
Explicitly request key frame on all layers until proper mapping is
implemented (webrtc:10615).

Bug: webrtc:10585
Change-Id: I9722610920a753c50700d925ff6a1babf0011e2f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136682
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27934}
2019-05-13 21:00:26 +00:00
Ilya Nikolaevskiy
2ebf523978 Reland "Copy video frames metadata between encoded and plain frames in one place"
Reland with fixes.

Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346

Bug: webrtc:10460
Change-Id: I98629589fa55ca1d74056033cf86faccfdf848cd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136582
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27930}
2019-05-13 14:51:11 +00:00
Elad Alon
e1225d389e Reland "Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder"
This is a reland of bd20c3f5ae.

Original change's description:
> Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder
>
> Bug: None
> Change-Id: I548a724f0fb81f46785517c90e527edc075e1476
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135040
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27836

TBR=brandtr@webrtc.org,eladalon@webrtc.org

Bug: chromium:961253
Change-Id: I4a44e8eb88920f33eb0ce0eadd121b04d410f02e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135943
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27908}
2019-05-10 10:02:19 +00:00
Elad Alon
fb0878197e Reland "Refactor handling of configuration overrides from Vp8FrameBufferController"
This is a reland of 4d6795f828

Original change's description:
> Refactor handling of configuration overrides from Vp8FrameBufferController
>
> Make Vp8FrameBufferController::UpdateConfiguration return a set
> of desired overrides. These overrides are cumulative with
> previously returned override sets.
>
> Bug: webrtc:10382
> Change-Id: I1aa9544ae0cf6c57115e80963b3bbcdc3101db5e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134649
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27835}

TBR=brandtr@webrtc.org,sprang@webrtc.org

Bug: webrtc:10382
Change-Id: I0b313d19843edf429aeeaa4deafc5426c434a0fd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135942
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27904}
2019-05-10 08:44:02 +00:00
Elad Alon
3d622d6e5c Revert "Refactor handling of configuration overrides from Vp8FrameBufferController"
This reverts commit 4d6795f828.

Reason for revert: chromium:961253

Original change's description:
> Refactor handling of configuration overrides from Vp8FrameBufferController
>
> Make Vp8FrameBufferController::UpdateConfiguration return a set
> of desired overrides. These overrides are cumulative with
> previously returned override sets.
>
> Bug: webrtc:10382
> Change-Id: I1aa9544ae0cf6c57115e80963b3bbcdc3101db5e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134649
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27835}

TBR=brandtr@webrtc.org,eladalon@webrtc.org,sprang@webrtc.org


Bug: chromium:961253
Change-Id: I06f0eafd4f38c441ddbdfeebae8055b02465eb9b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135940
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27900}
2019-05-09 21:09:23 +00:00
Elad Alon
159d04eadf Revert "Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder"
This reverts commit bd20c3f5ae.

Reason for revert: chromium:961253
This CL is not the cause of the regression, but reverting it will make the reverting of the actual cause easier.

Original change's description:
> Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder
>
> Bug: None
> Change-Id: I548a724f0fb81f46785517c90e527edc075e1476
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135040
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27836}

TBR=brandtr@webrtc.org,eladalon@webrtc.org

Bug: chromium:961253
Change-Id: I707337e0ce50f29f9cda7cf45500c11debace1a2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135750
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27898}
2019-05-09 21:00:43 +00:00
Ilya Nikolaevskiy
de20b9683c Revert "Reland "Copy video frames metadata between encoded and plain frames in one place""
This reverts commit 4fb12b0cae.

Reason for revert: Breaks some asan chromium bots

Original change's description:
> Reland "Copy video frames metadata between encoded and plain frames in one place"
> 
> Reland with fixes.
> 
> Currently some video frames metadata like rotation or ntp timestamps are
> copied in every encoder and decoder separately. This CL makes copying to
> happen at a single place for send or receive side. This will make it
> easier to add new metadata in the future.
> 
> Also, added some missing tests.
> 
> Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
> 
> Bug: webrtc:10460
> Change-Id: Ia71198685de7fbd990704b575231cdce94dc0645
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134961
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27828}

TBR=ilnik@webrtc.org,nisse@webrtc.org,sprang@webrtc.org,kron@webrtc.org,artit@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:10460
Change-Id: I9c87a43a716622b389974cb8377f973573fc29a5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135747
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27895}
2019-05-09 17:47:51 +00:00
Åsa Persson
d7dd49ff3d RateControlSettings: add option to set max QP for libvpx vp8.
Bug: none
Change-Id: Ia662068fe179faebc1df0aaa7f37b6e989b6525f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135569
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27888}
2019-05-09 07:04:55 +00:00
Åsa Persson
517678cc49 Add ability to configure quality scaler settings through field trial.
optional<int> min_frames: The minimum number frames to observe to make a
                          scaling decision.
Default: kMinFramesNeededToScale in quality_scaler.cc

optional<double> initial_scale_factor: The sample period scale factor.
Default: kSamplePeriodScaleFactor in quality_scaler.cc

optional<double> scale_factor: Option to use a reduced sampling interval when
                               last check did not result in an adaptation (if
                               unset the initial_scale_factor is used).

Bug: none
Change-Id: I3bb955d1f8d7d7d49bc118361614b5aa59605231
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135125
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27860}
2019-05-06 13:20:27 +00:00
Ilya Nikolaevskiy
a8507e359b Remove deprecated interface in I420BufferInterface::GetI420
Bug: none
Change-Id: I55895a360308fd0be79099f2466a7487ef10ce47
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134463
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27841}
2019-05-03 12:16:34 +00:00
Elad Alon
bd20c3f5ae Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder
Bug: None
Change-Id: I548a724f0fb81f46785517c90e527edc075e1476
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135040
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27836}
2019-05-03 09:16:51 +00:00
Elad Alon
4d6795f828 Refactor handling of configuration overrides from Vp8FrameBufferController
Make Vp8FrameBufferController::UpdateConfiguration return a set
of desired overrides. These overrides are cumulative with
previously returned override sets.

Bug: webrtc:10382
Change-Id: I1aa9544ae0cf6c57115e80963b3bbcdc3101db5e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134649
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27835}
2019-05-03 09:12:56 +00:00
Ilya Nikolaevskiy
4fb12b0cae Reland "Copy video frames metadata between encoded and plain frames in one place"
Reland with fixes.

Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346

Bug: webrtc:10460
Change-Id: Ia71198685de7fbd990704b575231cdce94dc0645
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134961
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27828}
2019-05-02 13:29:14 +00:00
philipel
cd936fdba5 Wait for keyframe after decoding error.
Bug: chromium:936715
Change-Id: I0a51c8fa0025cb0f8e9afcbe8d8e4a84c2709ecf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134960
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27827}
2019-05-02 12:52:55 +00:00
Niels Möller
d9c2d94620 Move ownership of VCMJitterEstimator to FrameBuffer
Bug: webrtc:7408
Change-Id: I8b33ead80abff1e84ae0b223e108266f71f03e2f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134180
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27823}
2019-05-02 10:57:04 +00:00
Johnny Lee
bc7f41b231 ManageFrameH264 for temporal layers (PART 3/3)
Bug: webrtc:10579
Change-Id: Iec54f6b1231d34c2018f22841c3614ddd0b05612
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/86200
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27820}
2019-05-02 09:26:25 +00:00
Johannes Kron
2ad2fabdcf Determine if it's HDR color space based on VUI or RTP header extension
The color space can either be specified in the VUI of the H264 bitstream
or using an RTP header extension. The color space set through the RTP
header extension overrides the color space in the VUI. The check for
HDR should look at the resulting color space.

Bug: webrtc:10575
Change-Id: I0ca6262d76d56dea938de169f55ad3894e6c4f8f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134860
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27816}
2019-05-01 17:22:52 +00:00
Elad Alon
b1070353ad Prevent memory over-consumption by DefaultTemporalLayers
Erase pending frames after they had been used.

Bug: chromium:956510
Change-Id: I55eec75dab9bbe350dd1b089953bdc2979d989fd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134641
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27811}
2019-04-30 11:44:21 +00:00
Niels Möller
7cca042dd4 Refactor FrameBuffer2 tests, without mocking the jitter estimator
Bug: webrtc:7408
Change-Id: Ibded415aefebb9b922ec88c8f5f7fb7ff23cf28d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134467
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27805}
2019-04-29 14:41:45 +00:00
Niels Möller
c5ba5e9572 Delete unused methods of VCMJitterEstimator
ResetNackCount and UpdateMaxFrameSize were unused.

Bug: None
Change-Id: I314b3edce368ee3230bc3510e1bba520806d1493
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134201
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27789}
2019-04-26 15:21:09 +00:00
philipel
da5aa4ddf5 Use CodecBufferUsage to determine dependencies.
In this CL:
 - Assign frame IDs so that simulcast streams share one frame ID space.
 - Added a CodecBufferUsage class that represent how a particular buffer
   was used (updated, referenced or both).
 - Calculate frame dependencies based on the CodecBufferUsage information.

Bug: webrtc:10342
Change-Id: I4ed5ad703f9376a7d995c04bb757c7d214865ddb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131287
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27784}
2019-04-26 12:13:28 +00:00
Elad Alon
544dece6c1 Allow Vp8FrameBufferController to override resilience mode
Bug: webrtc:10382
Change-Id: I626d616d7a1b50a696f5378345d026f6dce5b97f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134207
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27777}
2019-04-25 18:30:08 +00:00
Niels Möller
0fb0bd8e9f Delete WebRtcRTPHeader, this struct is no longer used.
Bug: webrtc:10397
Change-Id: I1b7acd9c89b9e14d1d8e1914c8c12c51fe4c643f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134203
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27773}
2019-04-25 14:36:30 +00:00
Elad Alon
8683467fde Allow Vp8FrameBufferController to initiate key frames
Bug: webrtc:10501
Change-Id: I54bdc5237fdebfc2c98403dec2c8d3f374cf97cb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133906
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27769}
2019-04-25 13:12:52 +00:00
Johannes Kron
042559fb92 Add fix for 8-bit H264 HDR content
8-bit H264 HDR content is not rendered correctly in Chrome on Windows.
This is a temporary fix that converts the 8-bit buffer to a 10-bit
buffer if the color space indicates that the buffer should be
rendered as HDR.

Bug: webrtc:10575
Change-Id: I106612ec489c6371fa774424a4cf07d9bad40fc3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134040
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27766}
2019-04-25 11:44:50 +00:00
Artem Titarenko
4b1afbe60a Revert "Reland "Copy video frames metadata between encoded and plain frames in one place""
This reverts commit c9a2c5e93a.

Reason for revert: Breaks downstream test

Original change's description:
> Reland "Copy video frames metadata between encoded and plain frames in one place"
> 
> Reland with fixes: Do not remove extra metadata copies in software decoders as some downstream projects assumes these fields are copied by the encoders.
> 
> Currently some video frames metadata like rotation or ntp timestamps are
> copied in every encoder and decoder separately. This CL makes copying to
> happen at a single place for send or receive side. This will make it
> easier to add new metadata in the future.
> 
> Also, added some missing tests.
> 
> Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
> 
> Bug: webrtc:10460
> Change-Id: I8e49589bf75f406e2b5ddee34882de0faedbd09a
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134102
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27756}

TBR=ilnik@webrtc.org,sprang@webrtc.org,kron@webrtc.org,artit@webrtc.org

Change-Id: I34cc563ec6383735c2a76a6f45a72a7726b74421
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10460
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134204
Reviewed-by: Artem Titarenko <artit@google.com>
Commit-Queue: Artem Titarenko <artit@google.com>
Cr-Commit-Position: refs/heads/master@{#27765}
2019-04-25 11:39:31 +00:00
Niels Möller
9204bab803 Delete unused types VCMTemporalDecimation, VCMFrameCount and unused error codes
Bug: None
Change-Id: I53885ce78e682619301b833d1e78e93b4184c4e4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134160
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27764}
2019-04-25 11:23:30 +00:00
Niels Möller
be7a0ec2e6 Change vcm::VideoReceiver::IncomingPacket to not use WebRtcRTPHeader
Bug: webrtc:10397
Change-Id: Id549516faab1b1047ef52dd8229a73eeb48c5fe2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134162
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27761}
2019-04-25 10:15:39 +00:00
Ilya Nikolaevskiy
c9a2c5e93a Reland "Copy video frames metadata between encoded and plain frames in one place"
Reland with fixes: Do not remove extra metadata copies in software decoders as some downstream projects assumes these fields are copied by the encoders.

Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346

Bug: webrtc:10460
Change-Id: I8e49589bf75f406e2b5ddee34882de0faedbd09a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134102
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27756}
2019-04-25 09:13:15 +00:00
Niels Möller
43f7002aff Delete DecodedImageCallback::ReceivedDecodedFrame
This was a companion method to ReceivedDecodedReferenceFrame, deleted
in https://webrtc-review.googlesource.com/c/src/+/133348.

Tbr: kwiberg@webrtc.org # Mock class update
Bug: webrtc:7408
Change-Id: I429f5f5c18f14c27136e82860297107a82c81d13
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133571
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27754}
2019-04-25 08:09:29 +00:00
“Michael
a8ae407a48 Add ability to cap the video jitter estimate to a max value.
Bug: webrtc:10572
Change-Id: I21112824dc02afa71db61bb8c2f02723e8b325b6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133963
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27744}
2019-04-24 16:03:15 +00:00
Niels Möller
abbc50e9b2 Move frame_type member from RtpDepacketizer::ParsedPayload to RTPVideoHeader
The latter is also a member of the former. This cleanup is also
a preparation for dropping WebRtcRTPHeader::frameType (or deleting
WebRtcRTPHeader right away), now that it's a video-specific member.


Tbr: kwiberg@webrtc.org # Comment change in modules/include/
Bug: None
Change-Id: I5c1f3f981f0d750713fc9b9b145278150fe32b5d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133024
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27740}
2019-04-24 13:13:04 +00:00
Elad Alon
9a86275860 Fix dangling pointers issue in LibvpxVp8Encoder::Encode()
LibvpxVp8Encoder::Encode() creates a local instance of
rtc::scoped_refptr<I420BufferInterface>, then sets members to
point into the internal state of that I420BufferInterface. These
pointers remain in place after the buffer is destroyed.

This CL fixes the issue by deleting the references when the
function exits.

Bug: webrtc:10570
Change-Id: I9623e2ff3dd43e8fd1d1cc7696a3f28227d4544b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133882
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27738}
2019-04-24 12:58:19 +00:00
Artem Titarenko
84ae2b6efd Revert "Copy video frames metadata between encoded and plain frames in one place"
This reverts commit 00d0a0a1a9.

Reason for revert: Breaks downstream tests

Original change's description:
> Copy video frames metadata between encoded and plain frames in one place
> 
> Currently some video frames metadata like rotation or ntp timestamps are
> copied in every encoder and decoder separately. This CL makes copying to
> happen at a single place for send or receive side. This will make it
> easier to add new metadata in the future.
> 
> Also, added some missing tests.
> 
> Bug: webrtc:10460
> Change-Id: Ia49072c3041e75433f125a61050d2982b2bec1da
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27719}

TBR=ilnik@webrtc.org,sprang@webrtc.org,kron@webrtc.org

Change-Id: I8960a6cc15e552925129ba0037f197ff3fd93c25
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10460
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134100
Reviewed-by: Artem Titarenko <artit@webrtc.org>
Commit-Queue: Artem Titarenko <artit@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27737}
2019-04-24 12:56:52 +00:00
Elad Alon
eb415cd482 Avoid unnecessary rescaling in LibvpxVp8Encoder::Encode
Bug: webrtc:10571
Change-Id: I3e41b299eb13a53178fd9179875239919ac57a28
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133902
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27736}
2019-04-24 11:55:58 +00:00
Ilya Nikolaevskiy
1ced889eb4 Expand video frame metadata cache
In simulcast screenshare the lower stream can be disabled for ~2 seconds
due to bandwidth limitations. During that time with 30 input fps more
than 50 frames can be pending.

This CL remove unnecessary warnings.

Bug: webrtc:4172
Change-Id: I979c946a03ff3f67f500843c66382e437ecd559b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134041
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27735}
2019-04-24 11:39:41 +00:00
Elad Alon
e1068c1bc9 Small change to LibvpxVp8Encoder::Release
The function iterated over two containers, destroyed their elements
and popped those elements one at a time. It's more efficient to
destroy all of the elements, then clear() the container.

Bug: None
Change-Id: I17aa88694ee41df64c5793b08b96899b7ff04071
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133901
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27730}
2019-04-24 08:50:23 +00:00
Ilya Nikolaevskiy
00d0a0a1a9 Copy video frames metadata between encoded and plain frames in one place
Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Bug: webrtc:10460
Change-Id: Ia49072c3041e75433f125a61050d2982b2bec1da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27719}
2019-04-23 14:31:03 +00:00
Ilya Nikolaevskiy
b4a70ed643 Fix potential crash in FrameBuffer::IsCompleteSuperFrame
According to crash reports, crash happens at the line with nothing but
|next_frame->second.frame->is_last_spatial_layer|.

Probably, |frames_| contains entries with empty frame unique_ptr.
This CL adds checks to not dereference those empty pointers.

Bug: chromium:955040
Change-Id: I3060f9e1af8bfc3c8a079c14107b5b4a82f5d015
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133626
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27706}
2019-04-23 10:05:11 +00:00
Sergey Silkin
a323cc027c Write VP9 RTP SS on key frames of each independently coded spatial layer.
Bug: webrtc:10565
Change-Id: I186ca043268872bacd1dc4a462b67632b74e6510
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133621
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27703}
2019-04-23 09:55:34 +00:00
Niels Möller
bcb7c209d4 Delete vcm::VideoReceiver methods Delay and SetRenderDelay.
They are called only from VideoReceiveStream, which can access
VCMTiming directly.

Bug: webrtc:7408
Change-Id: Ibf5799b1441c00b41143342ca1d99024cb68ba17
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133569
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27700}
2019-04-23 09:38:54 +00:00
Niels Möller
2317c5ee0a Delete method DecodedImageCallback::ReceivedDecodedReferenceFrame
The code invoking it was deleted in
https://codereview.webrtc.org/2753783002

Tbr: kwiberg@webrtc.org # Change to mock class in api/test
Bug: webrtc:7408
Change-Id: I576d7aacd7dc60e42a05d2ea837fddf16594e685
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133348
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27680}
2019-04-18 08:14:40 +00:00
Elad Alon
979c4426a4 Rename "UpdateLayerConfig" to "NextFrameConfig"
Rename "UpdateLayerConfig" to the more appropriate "NextFrameConfig".
Also update some comments in vp8_frame_buffer_controller.h.

Bug: None
Change-Id: Iba8227f84e33e5ebd28d2eeb10fe03e776036603
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133202
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27660}
2019-04-17 11:59:07 +00:00
Elad Alon
123ee9be8f OnLossNotification() receives references
A typo in a previous CL made OnLossNotification() accept its
single argument as a const-value, rather than a const-reference.

Bug: webrtc:10501
Change-Id: I5e6f9c79f15205b75ec90a53d3fccf3dd9927e33
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133343
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27659}
2019-04-17 11:47:25 +00:00
Niels Möller
50150a18f4 Delete VCMJitterBuffer::UpdateRtt and related unused code
Bug: webrtc:7408
Change-Id: Ic4bd745ed36dd7f7d5eec6531e05204035a545fd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133188
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27648}
2019-04-16 15:13:13 +00:00
Niels Möller
7eb4248b02 Delete unused class Vp9SsMap
Appears unused since https://codereview.webrtc.org/1426813002

Bug: webrtc:7408
Change-Id: I13b8c35548314705eaf31ff2366636f358fef718
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133203
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27645}
2019-04-16 14:36:55 +00:00
Elad Alon
c3f31dc395 Avoid copying of InlinedVector by DefaultTemporalLayers ctor
Bug: None
Change-Id: I31767a97ad5438001b6fc348157ef25a97ed6168
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133180
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27639}
2019-04-16 10:50:41 +00:00
Elad Alon
6796ec2289 Add OnFrameDropped() to Vp8FrameBufferController
Prior to this CL, this was indicated by passing |size_bytes| = 0
to the method.

Bug: webrtc:10501
Change-Id: Icff3bb83344834dc62d62bde5ec5d05096a08e11
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132712
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27620}
2019-04-15 12:35:45 +00:00