aboutsummaryrefslogtreecommitdiff
path: root/call
AgeCommit message (Collapse)Author
2020-07-23Merge remote tracking branch 'upstream-master'Jorge E. Moreira
Bug: 153469641 Test: run cuttlefish locally Change-Id: Ida3bfe62ef5c6549278f4c155a1f690b008e9b9d
2020-07-21Do not propage RTPFragmentationHeader into rtp_rtcpDanil Chapovalov
It is not longer needed by the rtp_rtcp module. Bug: webrtc:6471 Change-Id: I89a4374a50c54a02e9f20a5ce789eac308aaffeb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/179523 Reviewed-by: Philip Eliasson <philipel@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31773}
2020-07-17Merge branch 'upstream-master'Jorge E. Moreira
Bug: 153469641 Test: none Change-Id: Ic33e363deb0d1ac4bb4d57c3c239eb2e45370802
2020-07-17Delete callbacks from RtpDemuxer on ssrc bindingDanil Chapovalov
It was only used by RtcpDemuxer that is now deleted Bug: None Change-Id: Ief2c285e293cde3ed7576b194d2df137d6cbad38 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178902 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31760}
2020-07-17Rename CriticalSection to RecursiveCriticalSection.Markus Handell
This name change communicates that the recursive critical section should not be used for new code. The relevant files are renamed rtc_base/critical_section* -> rtc_base/deprecated/recursive_critical_section* Bug: webrtc:11567 Change-Id: I73483a1c5e59c389407a981efbfc2cfe76ccdb43 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/179483 Commit-Queue: Markus Handell <handellm@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Tommi <tommi@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31754}
2020-07-09[Adaptation] Move AdaptationConstraints to VideoStreamAdapterEvan Shrubsole
Bug: webrtc:11754 Change-Id: Ic51059834ea61c08e977a3a6b5bba48abc86f873 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178906 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31688}
2020-07-09[Adaptation] Make ResourceAdaptationProcessorInterface resources thread-safeEvan Shrubsole
This is one less dependency on the task queue, and will make things like removing resources and cleanup much easier in the future. Bug: webrtc:11754 Change-Id: I732f1935d1b58ffe09ca2a2bf59beebc1930214d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178869 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31686}
2020-07-09[Adaptation] Move AdaptationListeners to VideoStreamAdapterEvan Shrubsole
This is a step needed for multi-stream and new mitigations. It also cleans up needing to signal adaptation changes in mutiple places from ResourceAdaptationProcessor. R=hbos@webrtc.org Bug: webrtc:11754 Change-Id: Ib185dc9f66fbb4a087eb9e970c68c3f47eafb17f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178874 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31684}
2020-07-08Delete RtcpDemuxer as unusedDanil Chapovalov
Bug: None Change-Id: I17b30af3fef6c165bf951cb58eef11cc9c37aa39 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178396 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31676}
2020-07-07[Adaptation] Remove deg.prefs from ResourceAdaptationProcessorEvan Shrubsole
Changes in effective degradation preference is now done directly on the VideoStreamAdapter. This means that the DegradationPreferenceListener class can be removed. Bug: webrtc:11700 Change-Id: I9ce4b627de0279df5ef2e5a38435a6d352fbb135 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178609 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@google.com> Cr-Commit-Position: refs/heads/master@{#31642}
2020-07-06Migrate call/ to webrtc::Mutex.Markus Handell
Bug: webrtc:11567 Change-Id: Iab7142c77bc0c1a026cf5121b756094e05bccefe Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176742 Commit-Queue: Markus Handell <handellm@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31636}
2020-07-06[Adaptation] Move TriggerAdaptationDueToFrameDroppedDueToSizeEvan Shrubsole
It has no relevance in ResourceAdaptationProcessorInterface. The logic moves to an interaction directly on the VideoStreamAdapter. Bug: webrtc:11700 Change-Id: I4c7b3e1e1361722a69b71e8f9bde33f5909c011a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178380 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31634}
2020-07-06[Adaptation] Adaptation holds restrictionsEvan Shrubsole
This refactoring enables us to do multi-step adaptations instead of the normal single step adaptations. This work is required pre-requisite work to remove the DropDueToSize methods from the ResourceAdaptationProcessorInterface. This work also gives a path to fixing webrtc:11719, since double adaptations can be done in a controlled manner with this API. Bug: webrtc:11700,webrtc:11719 Change-Id: Ic7d27a49c82d0cf7ebaf79d7bdf0bc6f382770ed Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178200 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31631}
2020-07-03[Adaptation] Move deg.pref. out of ResourceAdaptationProcessorEvan Shrubsole
This patch creates a new class which provides the DegradationPreference thread safe to all classes that need if (BalancedConstraint and QpScalerResource). It also broadcasts to all listeners when the preferences are updated, so the ResourceAdaptationProcessor can update the video if needed. In future work, this could be used to remove the need for two task queues for the VideoStreamEncoder resources. Bug: webrtc:11700 Change-Id: I05480db8b7157b5643f6f86ec9c64850839b3e76 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177522 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31623}
2020-07-03Reland "Reland "Allows FEC generation after pacer step.""Erik Språng
This is a reland of 19df870d924662e3b6efb86078d31a8e086b38b5 Patchset 1 is the original. Subsequent patchset changes threadchecker that crashed with downstream code. Original change's description: > Reland "Allows FEC generation after pacer step." > > This is a reland of 75fd127640bdf1729af6b4a25875e6d01f1570e0 > > Patchset 2 contains a fix. Old code can in factor call > RtpRtcpImpl::FetchFec(). It should only be a noop since deferred fec > is not supported there - we shouldn't crash. > > Original change's description: > > Allows FEC generation after pacer step. > > > > Split out from https://webrtc-review.googlesource.com/c/src/+/173708 > > This CL enables FEC packets to be generated as media packets are sent, > > rather than generated, i.e. media packets are inserted into the fec > > generator after the pacing stage rather than at packetization time. > > > > This may have some small impact of performance. FEC packets are > > typically only generated when a new packet with a marker bit is added, > > which means FEC packets protecting a frame will now be sent after all > > of the media packets, rather than (potentially) interleaved with them. > > Therefore this feature is currently behind a flag so we can examine the > > impact. Once we are comfortable with the behavior we'll make it default > > and remove the old code. > > > > Note that this change does not include the "protect all header > > extensions" part of the original CL - that will be a follow-up. > > > > Bug: webrtc:11340 > > Change-Id: I3fe139c5d53968579b75b91e2612075451ff0f5d > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177760 > > Commit-Queue: Erik Språng <sprang@webrtc.org> > > Reviewed-by: Sebastian Jansson <srte@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#31558} > > Bug: webrtc:11340 > Change-Id: I2ea49ee87ee9ff409044e34a777a7dd0ae0a077f > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177984 > Commit-Queue: Erik Språng <sprang@webrtc.org> > Reviewed-by: Sebastian Jansson <srte@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#31613} Bug: webrtc:11340 Change-Id: Ib741c8c284f523c959f8aca454088d9eee7b17f8 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178600 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31619}
2020-07-02[Adaptation] Move input state into VideoStreamAdapterEvan Shrubsole
Bug: webrtc:11700 Change-Id: I81a060b914f91f6724f13a9b672234c9c4a65fae Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177104 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@google.com> Cr-Commit-Position: refs/heads/master@{#31616}
2020-07-02[Adaptation] VideoStreamAdapter broadcasts adaptationsEvan Shrubsole
This moves this responsibility from the ResourceAdaptaitonProcessor to the VideoStreamAdapter. A new interface for listening to adaptation changes was added, and the ResourceAdaptationProcessor now listens on the VideoStreamAdapter for those changes. This means that going forward, 1. We can do adaptations outside of resource limitations, like setting prior adaptations on a resource like initial frame dropper is designed to. 2. Adaptations can be on a different queue than the ResourceAdaptaitonProcessor's queue since updates are pushed through the listener. Bug: webrtc:11700 Change-Id: I6de0dec748dba095e702f0b9893c5afa50b51aa9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176859 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@google.com> Cr-Commit-Position: refs/heads/master@{#31615}
2020-07-02Revert "Reland "Allows FEC generation after pacer step.""Erik Språng
This reverts commit 19df870d924662e3b6efb86078d31a8e086b38b5. Reason for revert: Downstream project failure Original change's description: > Reland "Allows FEC generation after pacer step." > > This is a reland of 75fd127640bdf1729af6b4a25875e6d01f1570e0 > > Patchset 2 contains a fix. Old code can in factor call > RtpRtcpImpl::FetchFec(). It should only be a noop since deferred fec > is not supported there - we shouldn't crash. > > Original change's description: > > Allows FEC generation after pacer step. > > > > Split out from https://webrtc-review.googlesource.com/c/src/+/173708 > > This CL enables FEC packets to be generated as media packets are sent, > > rather than generated, i.e. media packets are inserted into the fec > > generator after the pacing stage rather than at packetization time. > > > > This may have some small impact of performance. FEC packets are > > typically only generated when a new packet with a marker bit is added, > > which means FEC packets protecting a frame will now be sent after all > > of the media packets, rather than (potentially) interleaved with them. > > Therefore this feature is currently behind a flag so we can examine the > > impact. Once we are comfortable with the behavior we'll make it default > > and remove the old code. > > > > Note that this change does not include the "protect all header > > extensions" part of the original CL - that will be a follow-up. > > > > Bug: webrtc:11340 > > Change-Id: I3fe139c5d53968579b75b91e2612075451ff0f5d > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177760 > > Commit-Queue: Erik Språng <sprang@webrtc.org> > > Reviewed-by: Sebastian Jansson <srte@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#31558} > > Bug: webrtc:11340 > Change-Id: I2ea49ee87ee9ff409044e34a777a7dd0ae0a077f > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177984 > Commit-Queue: Erik Språng <sprang@webrtc.org> > Reviewed-by: Sebastian Jansson <srte@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#31613} TBR=sprang@webrtc.org,srte@webrtc.org Change-Id: I3b2b25898ce88b64c2322f68ef83f9f86ac2edb0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:11340 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178563 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31614}
2020-07-02Reland "Allows FEC generation after pacer step."Erik Språng
This is a reland of 75fd127640bdf1729af6b4a25875e6d01f1570e0 Patchset 2 contains a fix. Old code can in factor call RtpRtcpImpl::FetchFec(). It should only be a noop since deferred fec is not supported there - we shouldn't crash. Original change's description: > Allows FEC generation after pacer step. > > Split out from https://webrtc-review.googlesource.com/c/src/+/173708 > This CL enables FEC packets to be generated as media packets are sent, > rather than generated, i.e. media packets are inserted into the fec > generator after the pacing stage rather than at packetization time. > > This may have some small impact of performance. FEC packets are > typically only generated when a new packet with a marker bit is added, > which means FEC packets protecting a frame will now be sent after all > of the media packets, rather than (potentially) interleaved with them. > Therefore this feature is currently behind a flag so we can examine the > impact. Once we are comfortable with the behavior we'll make it default > and remove the old code. > > Note that this change does not include the "protect all header > extensions" part of the original CL - that will be a follow-up. > > Bug: webrtc:11340 > Change-Id: I3fe139c5d53968579b75b91e2612075451ff0f5d > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177760 > Commit-Queue: Erik Språng <sprang@webrtc.org> > Reviewed-by: Sebastian Jansson <srte@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#31558} Bug: webrtc:11340 Change-Id: I2ea49ee87ee9ff409044e34a777a7dd0ae0a077f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177984 Commit-Queue: Erik Språng <sprang@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31613}
2020-07-02[Adaptation] Multi-processor support for injected Resources.Henrik Boström
Because a single Resource only has a single ResourceListener, injected Resources only gets wired up to the stream's ResourceAdaptationProcessor that was last to call SetResourceListener. This could potentially lead to the relevant stream not adapting based on the injected resource because it got wired up to the wrong stream's processor. This CL fixes this issue by introducing BroadcastResourceListener. By listening to 1 resource (the injected one), it can spawn N "adapter" resources that mirror's the injected resource's usage signal, allowing all ResourceAdaptationProcessor's to react to the signal. This is wired up in Call, and tests are updated to verify the signal gets through. Bug: chromium:1101263, webrtc:11720 Change-Id: I8a37284cb9a68f08ca1bdb1ee050b7144c451297 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178386 Reviewed-by: Stefan Holmer <stefan@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31612}
2020-06-30Ensure CreateTimeControllerBasedCallFactory use simulated time in ↵Per Kjellander
Call::SharedModuleThread Also removes unnecessary Call::SharedModulesThread ctor. Bug: webrtc:11598 Change-Id: I6d6a7ca4359598fbbfd4ae1aa550be6227ea27e7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178394 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Tommi <tommi@webrtc.org> Commit-Queue: Per Kjellander <perkj@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31594}
2020-06-29Propagate active decode targets bitmask into DependencyDescriptorDanil Chapovalov
Bug: webrtc:10342 Change-Id: I5e8a204881b94fe5786b14e27cefce2fe056e91b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178140 Reviewed-by: Björn Terelius <terelius@webrtc.org> Reviewed-by: Philip Eliasson <philipel@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31579}
2020-06-29Remove media_has_been_sent from RtpState.Tomas Gunnarsson
The field is unused and the way it's currently laid out in the code, it maps to a state in the RtpSenderEgress class - which in turn puts unnecessary threading restrictions on that class. Bug: webrtc:11581 Change-Id: I41a4740c3277317f33f8e815d8c12c70b355c1db Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177426 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Magnus Flodman <mflodman@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31577}
2020-06-25negotiate RED codec for audioPhilipp Hancke
negotiates the RED codec for opus audio behind a field trial WebRTC-Audio-Redundancy This adds the following line to the SDP: a=rtpmap:someid RED/48000/2 To test start Chrome with --force-fieldtrials=WebRTC-Audio-Red-For-Opus/Enabled BUG=webrtc:11640 Change-Id: I8fa9fb07d03db5f90cdb08765baaa03d3d0458cc Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176372 Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Commit-Queue: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31562}
2020-06-24Revert "Allows FEC generation after pacer step."Erik Språng
This reverts commit 75fd127640bdf1729af6b4a25875e6d01f1570e0. Reason for revert: Breaks downstream test Original change's description: > Allows FEC generation after pacer step. > > Split out from https://webrtc-review.googlesource.com/c/src/+/173708 > This CL enables FEC packets to be generated as media packets are sent, > rather than generated, i.e. media packets are inserted into the fec > generator after the pacing stage rather than at packetization time. > > This may have some small impact of performance. FEC packets are > typically only generated when a new packet with a marker bit is added, > which means FEC packets protecting a frame will now be sent after all > of the media packets, rather than (potentially) interleaved with them. > Therefore this feature is currently behind a flag so we can examine the > impact. Once we are comfortable with the behavior we'll make it default > and remove the old code. > > Note that this change does not include the "protect all header > extensions" part of the original CL - that will be a follow-up. > > Bug: webrtc:11340 > Change-Id: I3fe139c5d53968579b75b91e2612075451ff0f5d > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177760 > Commit-Queue: Erik Språng <sprang@webrtc.org> > Reviewed-by: Sebastian Jansson <srte@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#31558} TBR=sprang@webrtc.org,srte@webrtc.org Change-Id: Ie714e5f68580cbd57560e086c9dc7292a052de5f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:11340 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177983 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31559}
2020-06-24Allows FEC generation after pacer step.Erik Språng
Split out from https://webrtc-review.googlesource.com/c/src/+/173708 This CL enables FEC packets to be generated as media packets are sent, rather than generated, i.e. media packets are inserted into the fec generator after the pacing stage rather than at packetization time. This may have some small impact of performance. FEC packets are typically only generated when a new packet with a marker bit is added, which means FEC packets protecting a frame will now be sent after all of the media packets, rather than (potentially) interleaved with them. Therefore this feature is currently behind a flag so we can examine the impact. Once we are comfortable with the behavior we'll make it default and remove the old code. Note that this change does not include the "protect all header extensions" part of the original CL - that will be a follow-up. Bug: webrtc:11340 Change-Id: I3fe139c5d53968579b75b91e2612075451ff0f5d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177760 Commit-Queue: Erik Språng <sprang@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31558}
2020-06-23Fix missing dependencies.Mirko Bonadei
Setting gtest_enable_absl_printers to false in .gn uncovers some missing dependencies that were pulled in by gtest. Bug: None Change-Id: Ibd7772f6e2af9c798c97161c24f70b1658e3723c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177843 Reviewed-by: Jeremy Leconte <jleconte@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31551}
2020-06-15Remove framemarking RTP extension.philipel
BUG=webrtc:11637 Change-Id: I47f8e22473429c9762956444e27cfbafb201b208 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176442 Commit-Queue: Philip Eliasson <philipel@webrtc.org> Reviewed-by: Tommi <tommi@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31522}
2020-06-15[Adaptation] Implement remove for most limited resources.Evan Shrubsole
When a resource is removed from the ResourceAdaptationProcessor, and the resource is the most limited resource, we reset the current adaptation to the next most limited resource level. In the case that this resource is the only adapted resource then we reset all adaptations. Bug: webrtc:11636 Change-Id: I29acc5a3934f42f00db79b3bb2171156b1313937 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176406 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31520}
2020-06-11Embed FrameDependencyTemplate builder helpers directly into the structDanil Chapovalov
Bug: None Change-Id: I4c13bdabd08dd6a6011cb534c765c1dd09f218d1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176843 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Björn Terelius <terelius@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Philip Eliasson <philipel@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31500}
2020-06-11[Adaptation] Adding adaptation resources from Call.Henrik Boström
This CL adds AddAdaptationResource to Call and AddAdaptationResource/GetAdaptationResources method to relevant VideoSendStream and VideoStreamEncoder interfaces and implementations. Unittests are added to ensure that resources can be added to the Call both before and after the creation of a VideoSendStream and that the resources always gets added to the streams. In a follow-up CL, we will continue to plumb the resources all the way to PeerConnectionInterface, and an integration test will then be added to ensure that injected resources are capable of triggering adaptation. Bug: webrtc:11525 Change-Id: I499e9c23c3e359df943414d420b2e0ce2e9b2d56 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177002 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Reviewed-by: Stefan Holmer <stefan@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31499}
2020-06-11Only allow most limited resource to trigger adapt upEvan Shrubsole
A more detailed explaination is in the bug, but this changes the way that adaptation happens when multiple resources are limited. Only the one that is most limited can trigger an adaptation up. If multiple resources are most limited both need to underuse to adapt up. Some of the changes in this patch to make it all work: * VideoStreamEncoder unittests that did not reflect this new behaviour have been changed. * PeekNextRestrictions returns the adaptation counters as well as the restrictions. * Adaptation statstics have changed so that when adapting up all resources are tagged as triggering the adaptation. Additionally the statistics for the current adaptation is now the total number of adaptations per reason, rather then the number of adaptations due to that reason. * PreventAdaptUpDueToActiveCounts is removed as most limited resource is a strong implementation of that. Bug: webrtc:11553 Change-Id: If1545a201c8e019598edf82657a1befde8b05268 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176128 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31497}
2020-06-08Use absl_deps in order to preapre to the Abseil component build release.Mirko Bonadei
Bug: webrtc:1046390 Change-Id: Ia35545599de23b1a2c2d8be2d53469af7ac16f1d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176502 Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31463}
2020-06-04Remove dependency from RtpRtcp on the Module interface.Tomas Gunnarsson
The 'Module' part of the implementation must not be called via the RtpRtcp interface, but is rather a part of the contract with ProcessThread. That in turn is an implementation detail for how timers are currently implemented in the default implementation. Along the way I'm deprecating away the factory function which was inside the interface and tied it to one specific implementation. Instead, I'm moving that to the implementation itself and down the line, we don't have to go through it if we just want to create an instance of the class. The key change is in rtp_rtcp.h and the new rtp_rtcp_interface.h header file (things moved from rtp_rtcp.h), the rest falls from that. Change-Id: I294f13e947b9e3e4e649400ee94a11a81e8071ce Bug: webrtc:11581 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176419 Reviewed-by: Magnus Flodman <mflodman@webrtc.org> Commit-Queue: Tommi <tommi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31440}
2020-06-04Clean resource_adaptation_processor_unittest use of TaskQueueForTestEvan Shrubsole
Use the current task queue in the test instead. R=hbos@webrtc.org Bug: None Change-Id: I266796df3de675a808bcf2da08901411fadc86ae Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176414 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31439}
2020-06-03Delete field trial WebRTC-GenericDescriptorDanil Chapovalov
this trial is by default on for three months since https://webrtc-review.googlesource.com/c/src/+/168661 Bug: webrtc:11503 Change-Id: I8f2e0996fd1c77113715628198a409f12a525d51 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176242 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31424}
2020-06-03Deprecate the static RtpRtcp::Create() method.Tomas Gunnarsson
The method is being used externally to create instances of the deprecated internal implementation. Instead, I'm moving how we instantiate the internal implementation into the implementation itself and move towards keeping the interface separate from a single implementation. Change-Id: I743aa86dc4c812b545699c546c253c104719260e Bug: webrtc:11581 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176404 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31420}
2020-06-03[Adaptation] Move Resource to api/ folder.Henrik Boström
This is a prerequisite to implementing it externally. Bug: webrtc:11525 Change-Id: I9cb3b4418396485d3eb9f25cafa51cbff6db7817 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176401 Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Stefan Holmer <stefan@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31418}
2020-06-03[Adaptation] Remove Resource::UsageState() and ClearUsageState().Henrik Boström
ResourceListener::OnResourceUsageStateMeasured() now takes ResourceUsageState as argument, making Resource::UsageState() superfluous. With the existing "fire-and-forget" behavior of always clearing usage state on reacting to a signal, there is no longer a need to call ClearUsageState() so this too is removed. (We may want to have a callback in the future to hint to the Resource that it is a good idea to clear internal measurement samples, i.e. because the load of the system is about to change, but we can revisit that when we need it.) Moving the usage state to the callback has the benefit of getting rid of the assumption that UsageState() has to return the same value every time it is called in the same task. This CL is also the final nail in the coffin for Resource needing to know about the adaptation task queue: ResourceAdaptationProcessor's ResourceListener now takes care of posting to the adaptation task queue. To support this, the processor's SequenceChecker is replaced by a TaskQueueBase pointer. Bug: webrtc:11525, webrtc:11618 Change-Id: I2277e71cc3759c85b62465020935603f03792c94 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176376 Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Cr-Commit-Position: refs/heads/master@{#31416}
2020-06-02[Adaptation] Move IsAdaptationUpAllowed/OnAdaptationApplied out of API.Henrik Boström
IsAdaptationUpAllowed is moved from Resource to AdaptationConstraint. OnAdaptationApplied is moved from Resource to AdaptationListener. In a future CL, Resource will be moved to api/, but AdaptationConstraint and AdaptationListener will stay in call/. The processor, encode stream and manager are updated to keep track of both resources, constraints and listeners. Fakes and tests are updated. After this CL, the manager's inner classes that prevent adaptation implement AdaptationConstraint instead of Resource. Bug: webrtc:11525 Change-Id: Ie9cd5b1ba7d8e161951e131ab8f6bd9d5cf765bf Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176368 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31409}
2020-06-02[Adaptation] Prep Resource for api/ move. Introduce VSE-Resource.Henrik Boström
This CL is in preparation for moving Resource to the api/ folder. It does not move it, but makes it such that the moving CL can be a pure move. In order to do this, we must stop depending on rtc_base/rtc::TaskQueue in favor of api/webrtc::TaskQueueBase. There are also other rtc_base/ dependencies that we do not want to expose to the api/ folder, like critical sections and thread annotations which are not publically exposed. To get around this, we make Resource an abstract interface and move all of the base class functionality into a new non-api/ class: VideoStreamEncoderResource. The Resource now has Register/UnregisterAdaptationTaskQueue() methods. By explicitly unregistering, we can ensure validity of the pointer even if the Resource outlives the PeerConnection. While public interface methods are only to be called on the adaptation task queue, posting to the task queue happens off-queue, so a |lock_| is introduced to guard it. Bug: webrtc:11525 Change-Id: I50b3a30960cdec9032016c779b47001c01dad32f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176320 Reviewed-by: Evan Shrubsole <eshr@google.com> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31402}
2020-06-01Rename worker_queue to send_transport_queue.Marina Ciocea
worker_queue is used in many places and it can be confusing. This queue is the send transport's worker queue. Rename to send_transport_queue to reflect that. Bug: none Change-Id: I43c5c4cbddaee3dae1ff75aa38dc3ddee6585902 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176362 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Tommi <tommi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31396}
2020-05-29[InsertableStreams] Send transformed frames on worker queue.Marina Ciocea
When video frame encoding is done on an external thread (for example in the case of hardware encoders), the WebRTC TaskQueueBase::Current() is null; in this case use the worker queue instead to send transformed frames. Bug: chromium:1086373 Change-Id: I903ddc52ad6832557fc5b5f76396fe26cf5a88f3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176303 Reviewed-by: Magnus Flodman <mflodman@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31388}
2020-05-29[Adaptation] Add const to Can* methods in VideoSourceRestrictorEvan Shrubsole
R=hbos@webrtc.org Bug: None Change-Id: I36e3f2d55b4a5bca6087baf04099dce5093629ac Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176301 Reviewed-by: Henrik Boström <hbos@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@google.com> Cr-Commit-Position: refs/heads/master@{#31384}
2020-05-28[Adaptation] Add more ResourceAdaptationProcessor logging.Henrik Boström
This should help debugging when adaptation is or is not happening unexpectedly. Log spam is prevented by not logging if the same result happened to the same resource already and we haven't adapted since then. Bug: webrtc:11616 Change-Id: Ia6c5cc35061d252f1c66f2f2bf3b94d2485498d6 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176221 Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31378}
2020-05-28Remove unnecessary sequence checker.Tommi
Just use the task queue it represents instead. Also rename the accessor to not confuse it with the 'network thread'. Bug: none Change-Id: Ic6c61652768ca3ff60dc0a2acc4850350feeb98e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176226 Reviewed-by: Philip Eliasson <philipel@webrtc.org> Commit-Queue: Tommi <tommi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31375}
2020-05-26Remove send_crit_, bitrate_crit_ and last_bandwidth_bps_crit_ locks.Tommi
...from the Call class. With minimal shifting of ownership of a few variables, we can maintain their state fully on the worker thread, where they're used. This change also removes the dependency on RWLockWrapper. Bug: webrtc:11612 Change-Id: Ia14be5bd6b50bd0b32d04f078b1e283080c00a19 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176122 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Markus Handell <handellm@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31360}
2020-05-26Remove receive_crit_ from Call.Tommi
This lock isn't needed anymore which has been clarified with recent refactoring. Updated thread guards and related comments. Change-Id: Ia7a1e59c45b67597264e73158654e4dffe6c4fc5 Bug: webrtc:11610 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176120 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Markus Handell <handellm@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31351}
2020-05-25Add SharedModuleThread class to share a module thread across Call instances.Tommi
This reduces the number of threads allocated per PeerConnection when more than one PC is needed. Bug: webrtc:11598 Change-Id: I3c1fd71705f90c4b4bbb1bc3f0f659c94016e69a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175904 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31347}
2020-05-25Add logging for video restrictionsEvan Shrubsole
This will help show what the restrictions are before and after they transform into sink wants. These will not be so spammy as adaptations do not happen very often. Bug: None Change-Id: Ib72b313f68c6934d7833d8a3f14ce00df602832b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175800 Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@google.com> Cr-Commit-Position: refs/heads/master@{#31341}