Commit Graph

30920 Commits

Author SHA1 Message Date
3476e12446 Revert "Add an optional override for AudioRecord device"
This reverts commit 1b8ef63876ebfa55a51c8ca9b1d8206bf8233e01.

Reason for revert: Breaks downstream projects. b/155256727

Original change's description:
> Add an optional override for AudioRecord device
>
> This is important when we have multiple named devices connected over
> USB (eg. "Webcam", "Microphone", "Headset") and there is some way to
> choose a specific input device to route from.
>
> Bug: b/154440591
> Change-Id: I8dc1801a5e4db7f7bb439e855d43897c1f7d8bc4
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173748
> Commit-Queue: Robin Lee <rgl@google.com>
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31130}

TBR=henrika@webrtc.org,sakal@webrtc.org,rgl@google.com

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

Bug: b/154440591, b/155256727
Change-Id: I6836676096d47d9da5702a40b9d127569ad50dda
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175008
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31238}
2020-05-13 13:15:29 +00:00
d2490aef20 Delete unused code to handle posix signals in PhysicalSocketServer
Bug: None
Change-Id: I3abddef4f1af5499f39a8d3f643c779effe9e01d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175006
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31237}
2020-05-13 12:33:09 +00:00
84afe46549 Don't await adaptation after deg-pref change
Now we only await a previous adaptation if the degradataion
preference is the same as our current degradation preference.
Without this guard we can get stuck as detailed in the attached bug.

Bug: webrtc:11562
Change-Id: I91be48546446ef8d01fe901bc6889201a5b97ba6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174805
Commit-Queue: Evan Shrubsole <eshr@google.com>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31236}
2020-05-13 12:14:36 +00:00
1d6e70f33d Roll chromium_revision a081fb662a..7a46078a3f (768098:768198)
Change log: a081fb662a..7a46078a3f
Full diff: a081fb662a..7a46078a3f

Changed dependencies
* src/base: e59babb238..a4ea6a9188
* src/build: f5f5bbab6c..995e5d1e59
* src/ios: 8d59f9ebdc..9e7aab0d66
* src/testing: ce6179960e..c9f85e9d97
* src/third_party: ece4e14917..b289306719
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/376279b1a5..ca8802d27b
* src/tools: 615119f309..2205024628
DEPS diff: a081fb662a..7a46078a3f/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: I045576182aec649b5414548405e21719c1c37c30
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175020
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#31235}
2020-05-13 10:43:13 +00:00
95d40ee0df Remove unused VideoStream::balanced_settings()
R=hbos@webrtc.org

Bug: None
Change-Id: I86bc1040f1e8197ce14c16ad7cb7e18dd643b456
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175002
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#31234}
2020-05-13 10:06:42 +00:00
2105d64a02 Add field trial for using different network cost cellular types
This field trial will be used to rollout the cellular costs added
in https://webrtc-review.googlesource.com/c/src/+/172582 in
a controlled fashion.

Bug: webrtc:11473
Change-Id: I14fd5cada187ba161124325a7ff69d355ef52b25
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174880
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31233}
2020-05-13 09:43:11 +00:00
f3319816ad Separate capturing device index from VideoConfig
The last step of the pc framework tests migration.

Bug: webrtc:11534
Change-Id: I344c443b6d21422ef418315b7e5a6cb26ae3473d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174741
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31232}
2020-05-13 09:16:40 +00:00
381d10963a [Adaptation] Move adaptation logic to a separate task queue.
This CL unblocks future Call-Level Mitigation strategies by moving the
ResourceAdaptationProcessor to a separate task queue. This signifies a
major milestone in the new resource adaptation architecture because
with this CL the threading model is in place and moving the Processor
to the Call and increasing its responsibilities is made possible.

In this CL, we still have one Processor per VideoStreamEncoder and the
VideoStreamEncoder is responsible for the creation and the destruction
of its Processor and that Processor's task queue. But the PostTasks are
in place and the decision-making is executed on a separate queue.

This CL:
- Moves ResourceAdaptationProcessor to an adaptation task queue.
  It continues to be entirely single-threaded, but now operates on a
  separate task queue.
- Makes Resources thread-safe: Interaction with the Processor, i.e.
  OnResourceUsageStateMeasured() and IsAdaptationUpAllowed(), happens
  on the adaptation task queue. State updates are pushed from the
  encoder task queue with PostTasks.
- QualityScalerResource operates on both task queues; the QP usage
  callbacks are invoked asynchronously.
- The VideoStreamEncoderResourceManager operates on the encoder task
  queue with the following exceptions:
  1) Its resources are accessible on any thread (using a mutex). This
     is OK because resources are reference counted and thread safe.
     This aids adding and removing resources to the Processor on the
     adaptation task queue.
  2) |active_counts_| is moved to the adaptation task queue. This makes
     it possible for PreventAdaptUpDueToActiveCounts to run
     IsAdaptationUpAllowed() on the adaptation task queue.
     A side-effect of this is that some stats reporting now happen on
     the adaptation task queue, but that is OK because
     VideoStreamEncoderObserver is thread-safe.

The Manager is updated to take the new threading model into account:
- OnFrameDroppedDueToSize() posts to the adaptation task queue to
  invoke the Processor.
- OnVideoSourceRestrictionsUpdated(), now invoked on the adaptation
  task queue, updates |active_counts_| synchronously but posts to the
  encoder task queue to update video source restrictions (which it
  only uses to calculate target frame rate).
- MaybePerformQualityRampupExperiment() posts to the adaptation task
  queue to maybe reset video source restrictions on the Processor.
  |quality_rampup_done_| is made std::atomic.

Bug: webrtc:11542, webrtc:11520
Change-Id: I1cfd76e0cd42f006a6d2527f5aa2aeb5266ba6d6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174441
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@{#31231}
2020-05-13 08:21:23 +00:00
1190f49aea Roll chromium_revision cb4a800cb3..a081fb662a (767931:768098)
Change log: cb4a800cb3..a081fb662a
Full diff: cb4a800cb3..a081fb662a

Changed dependencies
* src/base: 74726f3171..e59babb238
* src/build: 4abdc0b5fe..f5f5bbab6c
* src/ios: 8166204950..8d59f9ebdc
* src/testing: 5e2febb6fe..ce6179960e
* src/third_party: de1e8ccb15..ece4e14917
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/be5a62acfa..376279b1a5
* src/third_party/depot_tools: 1fbaf73aef..8280ae5e0a
* src/third_party/guava: a6fba501f3a0de88b9be1daa2052632de5b96a46..y8Zx7cKTiOunLhOrfC4hOt5kDQrLJ_Rq7ISDmXkPdYsC
* src/tools: bce03b1ea7..615119f309
DEPS diff: cb4a800cb3..a081fb662a/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: I6e106bfd1cad956082abaab401b171cc96a48bf4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174962
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#31230}
2020-05-13 02:36:50 +00:00
2aa935684a Reset frame queue in ScreenCapturerX11::SelectSource to fix issues with different sized monitors.
When Chromium displays the selection dialog for screens it gets the thumbnails by calling SelectSource for the first monitor then CaptureFrame, then SelectSource for the next monitor then CaptureFrame, and so on. With 1 or 2 screens this does not show any issues, but with 3 or more screens the program may crash.

The queue of frame buffers is actually just 2 frame buffers that get swapped every time a frame is captured. When you have one monitor both buffers will be sized for it's resolution. When you have two monitor the first buffer is sized for the first monitor and the second buffer for the second monitor. Since the monitors are selected in turn monitors and frame buffers stay matched up and things work fine. With a third monitor the first buffer is sized for the first monitor, but then later reused to capture the third monitor. If the resolution of the third monitor does not match the first we either crash or have extra junk in the frame from when we captured the first monitor.

Bug: chromium:396091
Change-Id: I7b5ee914b02fee48c09422cee1e320396c9550c7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174520
Commit-Queue: Jamie Walch <jamiewalch@chromium.org>
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#31229}
2020-05-12 22:45:05 +00:00
b856dc1556 Remove VideoGeneratorType from pc framework test api.
VideoGeneratorType wasn't deleted in https://webrtc-review.googlesource.com/c/src/+/174541

Bug: webrtc:11534
Change-Id: I3e631240dc0b28a53e62b65e3dd094b5773fac2c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174721
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31228}
2020-05-12 22:24:36 +00:00
72b74997ce Roll chromium_revision 35425e2e59..cb4a800cb3 (767819:767931)
Change log: 35425e2e59..cb4a800cb3
Full diff: 35425e2e59..cb4a800cb3

Changed dependencies
* src/base: 3112ac08c4..74726f3171
* src/third_party: 9266801e08..de1e8ccb15
* src/third_party/android_deps/libs/androidx_appcompat_appcompat: version:1.0.0-cr0..version:1.2.0-beta01-cr0
* src/third_party/android_deps/libs/androidx_arch_core_core_common: version:2.0.0-cr0..version:2.1.0-cr0
* src/third_party/android_deps/libs/androidx_collection_collection: version:1.0.0-cr0..version:1.1.0-cr0
* src/third_party/android_deps/libs/androidx_core_core: version:1.0.0-cr0..version:1.3.0-beta01-cr0
* src/third_party/android_deps/libs/androidx_fragment_fragment: version:1.0.0-cr0..version:1.1.0-cr0
* src/third_party/android_deps/libs/androidx_lifecycle_lifecycle_common: version:2.0.0-cr0..version:2.1.0-cr0
* src/third_party/android_deps/libs/androidx_lifecycle_lifecycle_runtime: version:2.0.0-cr0..version:2.1.0-cr0
* src/third_party/android_deps/libs/androidx_lifecycle_lifecycle_viewmodel: version:2.0.0-cr0..version:2.1.0-cr0
* src/third_party/android_deps/libs/androidx_vectordrawable_vectordrawable: version:1.0.0-cr0..version:1.1.0-cr0
* src/third_party/android_deps/libs/androidx_vectordrawable_vectordrawable_animated: version:1.0.0-cr0..version:1.1.0-cr0
* src/third_party/android_deps/libs/androidx_versionedparcelable_versionedparcelable: version:1.0.0-cr0..version:1.1.0-cr0
* src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/5f43b12d52..a810d82575
* src/tools: 6ad6192f87..bce03b1ea7
Added dependencies
* src/third_party/android_deps/libs/androidx_activity_activity
* src/third_party/android_deps/libs/androidx_appcompat_appcompat_resources
* src/third_party/android_deps/libs/androidx_savedstate_savedstate
DEPS diff: 35425e2e59..cb4a800cb3/DEPS

Clang version changed 4e0d9925d6a3561449bdd8def27fd3f3f1b3fb9f:99ac9ce7016d701b43b8f0c308dc3463da57d983
Details: 35425e2e59..cb4a800cb3/tools/clang/scripts/update.py

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: Ifbd095e9de3551f74df1d55ed1cda35d9961e288
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174940
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#31227}
2020-05-12 21:20:13 +00:00
f531c4968f Roll chromium_revision ceb47b836c..35425e2e59 (767701:767819)
Change log: ceb47b836c..35425e2e59
Full diff: ceb47b836c..35425e2e59

Changed dependencies
* src/base: 96e022e94f..3112ac08c4
* src/build: 694ba37aa6..4abdc0b5fe
* src/ios: 022f563d9d..8166204950
* src/testing: 5c92cb7930..5e2febb6fe
* src/third_party: 1d3eddb497..9266801e08
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/ed728376c1..be5a62acfa
* src/third_party/freetype/src: 093f87bfe4..3f70e6d20c
* src/tools: fe020f1696..6ad6192f87
DEPS diff: ceb47b836c..35425e2e59/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: Iaf3b92a587d14a78110f587ad3dfc712d51111bc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174920
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#31226}
2020-05-12 16:50:01 +00:00
1aec2bf115 reorder sdes suites to not prefer gcm
BUG=chromium:713701

Change-Id: I1ef00df7a7b86a83ae97d4c7c5f41d85eb60b391
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174803
Commit-Queue: Philipp Hancke <philipp.hancke@googlemail.com>
Reviewed-by: Taylor <deadbeef@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31225}
2020-05-12 14:43:43 +00:00
8c7384c307 Add field trial for surfacing cellular types in AndroidNetworkMonitor
This field trial will be used to rollout the cellular types added
in https://webrtc-review.googlesource.com/c/src/+/174500 in
a controlled fashion.

Bug: webrtc:11473
Change-Id: I371d13d6935f6e0273a023657ce1b11b32bef346
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174831
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31224}
2020-05-12 13:05:38 +00:00
cd1ba9411b Roll chromium_revision a775f4aeaa..ceb47b836c (759199:767701)
Change log: a775f4aeaa..ceb47b836c
Full diff: a775f4aeaa..ceb47b836c

Changed dependencies
* src/base: 2e2abc3c38..96e022e94f
* src/build: 212b25dc86..694ba37aa6
* src/buildtools: 2c41dfb19a..204a35a2a6
* src/buildtools/third_party/libunwind/trunk: 43bb9f8722..d999d54f4b
* src/ios: 2f8d00d1cb..022f563d9d
* src/testing: e5ced51413..5c92cb7930
* src/third_party: 76bcf1e499..1d3eddb497
* src/third_party/android_build_tools/aapt2: LKH_DI44rZhQ4RkScMFQLGSJ4jZyuPcff0llITnq-i4C..R2k5wwOlIaS6sjv2TIyHotiPJod-6KqnZO8NH-KFK8sC
* src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/f9e0cda2d8..5f43b12d52
* src/third_party/breakpad/breakpad: f32b83eb08..2ffe116322
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/4b4e879132..ed728376c1
* src/third_party/depot_tools: e1a9c8db7e..1fbaf73aef
* src/third_party/ffmpeg: 31886e8f39..587a3f4849
* src/third_party/freetype/src: 11beee855e..093f87bfe4
* src/third_party/googletest/src: e3f0319d89..a09ea700d3
* src/third_party/harfbuzz-ng/src: 0d5695983e..100d40c827
* src/third_party/icu: 13cfcd5874..f222396170
* src/third_party/libaom/source/libaom: https://aomedia.googlesource.com/aom.git/+log/611c58e511..c810066815
* src/third_party/libvpx/source/libvpx: 8dc6f353c6..77960f37b3
* src/third_party/openh264/src: 6f26bce0b1..a5473711f3
* src/third_party/r8: I91wspV6GMc7l_m-k9v3-ooP-CBrK76OVc3rfnB5T7kC..UAycWqc5QfELtJhhnoU4jQHjsyxPjRNyZ0EfvlojaY4C
* src/third_party/usrsctp/usrsctplib: bee946a606..a8c51df76c
* src/tools: 3f15275073..fe020f1696
* src/tools/luci-go: git_revision:513b1319d7d855f6c42bc01471562df910fd61b3..git_revision:56ae79476e3caf14da59d75118408aa778637936
* src/tools/luci-go: git_revision:513b1319d7d855f6c42bc01471562df910fd61b3..git_revision:56ae79476e3caf14da59d75118408aa778637936
* src/tools/luci-go: git_revision:513b1319d7d855f6c42bc01471562df910fd61b3..git_revision:56ae79476e3caf14da59d75118408aa778637936
Added dependencies
* src/third_party/android_deps/libs/org_apache_maven_maven_plugin_registry
* src/third_party/android_deps/libs/org_apache_maven_maven_ant_tasks
* src/third_party/android_deps/libs/org_apache_maven_maven_artifact_manager
* src/third_party/android_deps/libs/nekohtml_xercesMinimal
* src/third_party/android_deps/libs/org_robolectric_resources
* src/third_party/android_deps/libs/org_apache_maven_maven_artifact
* src/third_party/android_deps/libs/backport_util_concurrent_backport_util_concurrent
* src/third_party/android_deps/libs/org_robolectric_sandbox
* src/third_party/android_deps/libs/org_codehaus_plexus_plexus_utils
* src/third_party/android_deps/libs/org_apache_maven_wagon_wagon_file
* src/third_party/android_deps/libs/org_apache_maven_wagon_wagon_http_shared
* src/third_party/android_deps/libs/org_robolectric_pluginapi
* src/third_party/android_deps/libs/org_robolectric_utils_reflector
* src/third_party/android_deps/libs/nekohtml_nekohtml
* src/third_party/android_deps/libs/org_apache_ant_ant
* src/third_party/android_deps/libs/org_apache_ant_ant_launcher
* src/third_party/android_deps/libs/org_robolectric_shadowapi
* src/third_party/android_deps/libs/org_robolectric_junit
* src/third_party/android_deps/libs/com_android_tools_desugar_jdk_libs
* src/third_party/android_deps/libs/classworlds_classworlds
* src/third_party/android_deps/libs/org_apache_maven_maven_error_diagnostics
* src/third_party/android_deps/libs/org_robolectric_annotations
* src/third_party/android_deps/libs/org_apache_maven_maven_model
* src/third_party/android_deps/libs/org_codehaus_plexus_plexus_container_default
* src/third_party/android_deps/libs/org_apache_maven_maven_profile
* src/third_party/android_deps/libs/org_apache_maven_maven_settings
* src/third_party/android_deps/libs/org_apache_maven_wagon_wagon_provider_api
* src/third_party/android_deps/libs/org_apache_maven_maven_repository_metadata
* src/third_party/android_deps/libs/org_robolectric_robolectric
* src/third_party/android_deps/libs/org_robolectric_shadows_framework
* src/third_party/android_deps/libs/org_apache_maven_maven_project
* src/third_party/android_deps/libs/org_robolectric_plugins_maven_dependency_resolver
* src/third_party/android_deps/libs/org_codehaus_plexus_plexus_interpolation
* src/third_party/android_deps/libs/org_robolectric_utils
* src/third_party/android_deps/libs/org_apache_maven_wagon_wagon_http_lightweight
* src/third_party/android_deps/libs/androidx_tvprovider_tvprovider
DEPS diff: a775f4aeaa..ceb47b836c/DEPS

No update to Clang.

TBR=mbonadei@webrtc.org,marpan@webrtc.org, jianj@chromium.org,
BUG=None

Roll

Change-Id: Ic5663e5313eb2a2a37cd0e5cca2c896e22512740
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174829
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31223}
2020-05-12 11:30:51 +00:00
b0bd0708d6 Surface ResidualEchoDetector creation to API
This allows users to inject the residual echo detector, as a step toward making it an optional part of compilation.

Bug: webrtc:11292, webrtc:11539
Change-Id: I7fcc8dbaced67a82851cd6cdcbc115eb01c21fcf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174040
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31222}
2020-05-12 10:56:18 +00:00
5c1a56540b Revert "Disable PipeWire on Chromecast builds."
This reverts commit cc8c07895df8b34ad339b457f07a2e3724215d79.

Reason for revert: Breaks cast linux tests (https://ci.chromium.org/p/chromium/builders/ci/Cast%20Linux/93159)

Original change's description:
> Disable PipeWire on Chromecast builds.
> 
> For various reasons is_desktop_linux is true on Chromecast builds though
> arguably it should not be. This means that the detection logic previously
> used is incorrect for Chromecast builds. Since Chromecast needs to
> start enabling use_sysroot, this logic needs to explicitly exclude
> is_chromecast.
> 
> Bug: b/154635846
> Change-Id: I6ced6f7e4c78f9d8d7055018e68090883b9e21bd
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174620
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31205}

TBR=mbonadei@webrtc.org,kwiberg@webrtc.org,tommi@webrtc.org,stefan@webrtc.org,juberti@webrtc.org,mflodman@webrtc.org,eliribble@google.com

Change-Id: Ibe8837fa4b845fe56d4d4ff63ffb38addfb58905
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/154635846
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174827
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31221}
2020-05-12 06:14:48 +00:00
b28bc83d02 [Adaptation] Make Manager's Resources not depend on encoder queue.
This CL makes the VideoStreamEncoderResourceManager's inner Resources
(PreventAdaptUpDueToActiveCounts,
PreventIncreaseResolutionDueToBitrateResource and
PreventAdaptUpInBalancedResource) not directly depend on any of the
manager's states that will continue to live on the encoder task queue
when the adaptation task queue is introduced in the next CL.

PreventAdaptUpDueToActiveCounts depends on effective degradation
preference, which it can get from the Processor, and the active counts,
which will move to the adaptation queue and is safe to use.

PreventIncreaseResolutionDueToBitrateResource depends on encoder
settings and target bitrate. This Resource now listens to these states
being updated, which may be implemented with a PostTask when the
adaptation queue is added.

PreventAdaptUpInBalancedResource depends on the effective degradation
preference, which it can get from the Processor; balanced settings,
which is a const readonly struct (thread-safe); and encoder target
bitrate, which it listens for being updated (to be PostTask'ed).

All resources depends on GetReasonFromResource() which will be callable
from the adaptation queue.

Bug: webrtc:11542, webrtc:11520
Change-Id: Ifa7bd87d9d8729988073f78f6a37c6f3b8aa4db1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174807
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@{#31220}
2020-05-11 21:45:40 +00:00
9438ddc9fc [Adaptation] Give QualityScaler a pending callbacks queue and unittests
This CL adds a queue for pending QualityScalerQpUsageHandlerCallbacks
and private methods for "Queueing", "Handling" and "Aborting" them,
using a sequence number as an ID to ensure we don't accidentally invoke
the same callback twice.

Because we don't have the adaptation task queue yet, callbacks are still
synchronously handled, which means the "pending callbacks" queue would
never have more than 1 element. However, when the adaptation task queue
is added and this is made asynchronous, it will be possible for multiple
callbacks to be pending simultaneously. This design is future-proof.

This CL is split out to aid reviewability. The CL that adds the
adaptation task queue will affect a lot of code. By landing this
separately, the adaptation queue CL will be easier to review.

This CL adds quality_scaler_resource_unittest.cc.

Bug: webrtc:11542, webrtc:11520
Change-Id: I00e7f6bfda9f8e8e82ec25916aa48e9349c8d70c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174802
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31219}
2020-05-11 21:39:40 +00:00
f9ed56b656 Add ability to set custom RtpEncodingParameters for each simulcast stream in PC framework
Bug: webrtc:11557
Change-Id: I9f44728ff9178cd9c7dbe4cbcd639d610a981015
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174754
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31218}
2020-05-11 20:46:30 +00:00
c55516dd55 [Adaptation] Make Resources reference counted and add more DCHECKs.
In a future CL, adaptation processing and stream encoder resource
management will happen on different task queues. When this is the case,
asynchronous tasks will be posted in both directions and some resources
will have internal states used on multiple threads.

This CL makes the Resource class reference counted in order to support
posting tasks to a different threads without risk of use-after-free
when a posted task is executed with a delay. This is preferred over
WeakPtr strategies because WeakPtrs are single-threaded and preferred
over raw pointer usage because the reference counted approach enables
more compile-time and run-time assurance. This is also "future proof";
when resources can be injected through public APIs, ownership needs to
be shared between libwebrtc and the application (e.g. Chrome).

To reduce the risk of making mistakes in the future CL, sequence
checkers and task queue DCHECKs are added as well as other DCHECKs to
make sure things have been cleaned up before destruction, e.g:
- Processor gets a sequence checker. It is entirely single-threaded.
- Processor must not have any attached listeners or resources on
  destruction.
- Resources must not have any listeners on destruction.
- The Manager, EncodeUsageResource and QualityScalerResource DCHECKs
  they are running on the encoder queue.
- TODOs are added illustrating where we want to add PostTasks in the
  future CL.

Lastly, upon VideoStreamEncoder::Stop() we delete the
ResourceAdaptationProcessor. Because the Processor is already used in
posted tasks, some if statements are added to ensure the Processor is
not used after destruction.

Bug: webrtc:11542, webrtc:11520
Change-Id: Ibaa8a61d86d87a71f477d1075a117c28d9d2d285
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174760
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31217}
2020-05-11 20:35:30 +00:00
cc57b935cd Make video quality analyzer compatible with real SFU in the network
Bug: webrtc:11557
Change-Id: I8ab1fb0896e267f30856a45df6099bd9aae9bc03
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174801
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31216}
2020-05-11 18:54:33 +00:00
baa2c836ba Introduce ability to set peer name for PC level tests
Add peer's name to params and use it for logging and metrics naming
for whole peer related metrics.

Bug: webrtc:11479
Change-Id: Ia7e3fc4839c90a958d66910614515ac02a96e389
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174752
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31215}
2020-05-11 18:47:03 +00:00
bf46cfef22 Refactors send rate statistics in RtpSenderEgress
When FEC generation is moved to egress, we'll need to poll bitrates from
there instead of the RtpVideoSender. In preparation, refactoring some
getter methods.

For context, see https://webrtc-review.googlesource.com/c/src/+/173708

Bug: webrtc:11340
Change-Id: Ibc27362361ee9640d9fce676fc8e1093a579344f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174202
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31214}
2020-05-11 17:14:33 +00:00
8e321cd690 [Adaptation] Make QuailtyScalerResourse to report underuse if quality scaling is off
Bug: chromium:1080789
Change-Id: I3aefb746fd6f4adae4b32db322af6b787e8ede1d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174804
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#31213}
2020-05-11 14:10:08 +00:00
a270250426 [Adaptation] Disable inital frame drop for simuclast/svc
Bug: chromium:1080789
Change-Id: I72bbee4ac21302d15b6c54abea48d665e8ef6922
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174808
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31212}
2020-05-11 13:38:42 +00:00
6efc14b33d VideoTrackSourceInterface: make some newly introduced methods pure virtual.
Bug: webrtc:11114
Change-Id: Ic4d3835ae84b6a652c49f30a9c275870bbf3dacf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174440
Commit-Queue: Markus Handell <handellm@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31211}
2020-05-11 12:28:32 +00:00
a54ba4c02e Make video_loopback work with av1
Bug: webrtc:11404
Change-Id: Id4fb4ac7e545df2e4f0a0d91b3531074ff77c9f6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172340
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31210}
2020-05-11 12:20:09 +00:00
3a65dba926 Revert "Removes lock release in PacedSender callback."
This reverts commit 6b9c60b06d04bc519195fca1f621b10accfeb46b.

Reason for revert: Breaks downstream test

Original change's description:
> Removes lock release in PacedSender callback.
> 
> The PacedSender currently has logic to temporarily release its internal
> lock while sending or asking for padding.
> This creates some tricky situations in the pacing controller where we
> need to consider if some thread can enter while we the process thread is
> actually processing, just temporarily busy sending.
> 
> Since the pacing call stack is no longer cyclic, we can actually remove
> this lock-release now.
> 
> Bug: webrtc:10809
> Change-Id: Ic59c605252bed1f96a03406c908a30cd1012f995
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173592
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31206}

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

Change-Id: Ic84eee6097528d0792e3b1f90f36bc78447a0d81
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10809
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174820
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31209}
2020-05-11 11:37:57 +00:00
ffd0a844b2 Handle OnRttUpdate in ReceiveStatisticsProxy.
Bug: webrtc:11490
Change-Id: Iba76f77ac1d73350810508f52293e4848f2f6f46
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174300
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31208}
2020-05-11 10:55:52 +00:00
09e9a83d91 Change the way that AecDumps are created in APM
This CL changes the way that AecDumps are created in APM. Instead
of being injected, they are now created via the API.

This removes the AecDumpFactory from the API surface of APM and
makes the API more explicit.

The CL will be followed by one more CL that deprecates the usage
of the AttachAecDump API also within the audio_processing
and the fuzzer folders.

The CL also moves the aec_dump.* files from the include folder
to the aec_dump folder and changes the build files. The reasons
for this are that
1) The content of aec_dump.h is not really part of the API
   surface of APM.
2) Those files anyway needed to be moved to a separate build-
   target to avoid a circular build-file dependency caused by
   the other changes in this CL

Bug: webrtc:5298
Change-Id: I7dd6b49de76eb44158472874e1d4ae17dca9be54
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174750
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31207}
2020-05-11 10:33:00 +00:00
6b9c60b06d Removes lock release in PacedSender callback.
The PacedSender currently has logic to temporarily release its internal
lock while sending or asking for padding.
This creates some tricky situations in the pacing controller where we
need to consider if some thread can enter while we the process thread is
actually processing, just temporarily busy sending.

Since the pacing call stack is no longer cyclic, we can actually remove
this lock-release now.

Bug: webrtc:10809
Change-Id: Ic59c605252bed1f96a03406c908a30cd1012f995
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173592
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31206}
2020-05-11 09:14:37 +00:00
cc8c07895d Disable PipeWire on Chromecast builds.
For various reasons is_desktop_linux is true on Chromecast builds though
arguably it should not be. This means that the detection logic previously
used is incorrect for Chromecast builds. Since Chromecast needs to
start enabling use_sysroot, this logic needs to explicitly exclude
is_chromecast.

Bug: b/154635846
Change-Id: I6ced6f7e4c78f9d8d7055018e68090883b9e21bd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174620
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31205}
2020-05-11 08:44:47 +00:00
1c33075257 Trigger bots again.
TBR=mbonadei@webrtc.org,tommi@webrtc.org

Change-Id: Ia2bf9447c5352ef5999eeab973a23aed8c77d854
Bug: None
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174800
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31204}
2020-05-11 05:38:59 +00:00
822a874463 Switch CallStats to TQ interface + callbacks on the worker thread.
Bug: webrtc:11489
Change-Id: I08c4cd42dfa28d88ed9f0aa8c8b2cfb606bf00df
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174240
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31203}
2020-05-10 23:24:35 +00:00
674b0c8111 Move ReceiveStatisticsProxy stats variables to the worker thread.
This reduces locking on the decoder thread and moves all stats
management to the worker thread, which also avoids contention between
querying for these stats and the threads where the media processing happens..

Bug: webrtc:11489,webrtc:11490
Change-Id: I802577eab6b48edcbe124c02a1b793a640b74181
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174205
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31202}
2020-05-10 20:43:40 +00:00
d93bf127cd Call OnDecodedFrame asynchronously on the worker thread.
This offloads the decoder thread with managing histograms,
moves the management over to the thread on which they're queried.
This will allow us to remove more locking from the decoder threads
and avoid contention when querying for stats.

Bug: webrtc:11489
Change-Id: I563c90a0ed01e0b3598ee314d8118622216a2e0f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174201
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31201}
2020-05-10 19:35:40 +00:00
ad84d0254a Remove locking from RtpStreamsSynchronizer.
Remove dependency on ProcessThread.

Instead RtpStreamsSynchronizer uses the worker thread
and makes callbacks on the same thread. That in turn
simplifies locking for VideoReceiveStream2, which we'll
take advantage of later.

Bug: webrtc:11489
Change-Id: Id9a5a7977771b92e420a09cc472cfb43de5627cc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174221
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31200}
2020-05-10 18:11:44 +00:00
d7e08c8cf8 Move processing of frame meta data for OnFrame/OnRenderedFrame to the worker thread
Bug: webrtc:11489
Change-Id: I9f88fec0aef449fd8923c5eec81cddf9ee42316b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174220
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31199}
2020-05-10 11:47:52 +00:00
67ecb68fba Trigger bots
No-Try: True
Bug: None
Change-Id: Ic86f9063e7f82ab781e463face3647dbd3c2a9ce
Tbr: mbonadei@webrtc.org
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174761
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31198}
2020-05-10 09:34:42 +00:00
6a871d3487 Revert "Remove playout delay lock."
This reverts commit c623495fd1ff90aada0eb625af91ec17843fefd0.

Reason for revert: Need to look into failure in remoting_unittests in Chrome (Webrtc/ConnectionTest.SecondCaptureFailed/0). It looks like the order FrameBuffer2 calls into VCMTiming while receiving frames and updating playout delay values, needs to be synchronized better.

Original change's description:
> Remove playout delay lock.
> Now update the playout delay and related stats on the worker thread.
> 
> This was previously reviewed here:
> https://webrtc-review.googlesource.com/c/src/+/172929/
> 
> With the exception of reducing unnecessarily broad
> lock scope in one function in rtp_rtcp_impl.cc
> and added comments in rtp_streams_synchronizer.h
> 
> Bug: webrtc:11489
> Change-Id: I77807b5da2accfe774255d9409542d358f288993
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174200
> Commit-Queue: Tommi <tommi@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31193}

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

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

Bug: webrtc:11489
Change-Id: I9149025d2fc10686314e6d4e89d1b92125650c36
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174757
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31197}
2020-05-09 21:30:40 +00:00
3580706684 Add a RunLoop to RtpReplayer to fix fuzzers
Bug: chromium:1080852
Change-Id: Ia02511cde09994deee222e4f1267d5265d0364ca
Tbr: mbonadei@webrtc.org
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174756
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31196}
2020-05-09 06:45:14 +00:00
fc11519c92 Cleanup mocks in api/test
Modernise functions to unified MOCK_METHOD macro,
delete few deprecated functions on the way.
add one missing function (in MockEncodedImageCallback)
Remove proxy mock function (in MockVideoBitrateAllocatorFactory)

Remove default constructors and destructors

Bug: None
Change-Id: Ibebb0d9e3c9be5877649af7bde8b87222ddf04fb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174751
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31195}
2020-05-08 20:01:03 +00:00
74ef940d79 Stop pulling binutils from WebRTC DEPS.
TBR: titovartem@webrtc.org
Bug: None
Change-Id: If417a7c9dc952325076a5d75f38ac8e984285f9e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174755
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31194}
2020-05-08 19:06:36 +00:00
c623495fd1 Remove playout delay lock.
Now update the playout delay and related stats on the worker thread.

This was previously reviewed here:
https://webrtc-review.googlesource.com/c/src/+/172929/

With the exception of reducing unnecessarily broad
lock scope in one function in rtp_rtcp_impl.cc
and added comments in rtp_streams_synchronizer.h

Bug: webrtc:11489
Change-Id: I77807b5da2accfe774255d9409542d358f288993
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174200
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31193}
2020-05-08 19:02:36 +00:00
33d81a05eb Keep OpenH264 iMaxBitrate unspecified.
Max encoder bitrate in WebRTC and OpenH264 are different settings. In
WebRTC it is a cap for encoder target bitrate whilst in OpenH264 it is
a peak bitrate. I.e. OpenH264 is allowed to produce bitrate up to
iMaxBitrate for short time interval. That is not what WebRTC expects.

https://webrtc.googlesource.com/src/+/5ee6967c4edc667688d736c27db6f2e7be00dd0a
disabled encoders re-initialization on min/max bitrate change. Reinit of
some HW encoders takes hundreds of milliseconds and causes video freeze.
I missed that max bitrate is used by OpenH264. This caused regression
described in webrtc:11543.

This change sets iMaxBitrate=UNSPECIFIED_BIT_RATE (which is the default
value). Settings iMaxBitrate=UNSPECIFIED_BIT_RATE disables the frame
dropping logic based on that parameter. But the encoder still will drop
frames based on buffer fullness, https://source.chromium.org/chromium/chromium/src/+/master:third_party/openh264/src/codec/encoder/core/src/ratectl.cpp;l=806-807

Bug: webrtc:10773, webrtc:11543
Change-Id: I728be49e0df8a0d9a8f4438299e4c7b4c1497a78
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174745
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31192}
2020-05-08 15:10:26 +00:00
2454d85bb6 Cleanup rtp_rtcp mocks
Modernise function to unified MOCK_METHOD macro, delete few deprecated functions on the way.
Remove default constructors to stress they do nothing special

Bug: None
Change-Id: Ie126f38f0589acb65886f25f754ca575c17af29b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174583
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31191}
2020-05-08 13:43:15 +00:00
804393b369 Removing incorrect DCHECK - breaks android
Bug: webrtc:11489
Change-Id: Ied9ea3095ebe6e42b2be05902b23be306037abbb
NoTry: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174749
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31190}
2020-05-08 12:29:03 +00:00
28da36a6ea Add unittest for av1 wrappers to test Encode and Decode functions
while helpful by itself, it is also a preparation
for adding unittests for (to be added) svc features of the encoder.

Bug: webrtc:11404
Change-Id: I62b0645f44579f21f228d406a206b4c01d80dd02
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174580
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31189}
2020-05-08 11:57:27 +00:00