Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/squashed e2ee #1

Open
wants to merge 85 commits into
base: feature/merged-e2ee
Choose a base branch
from

Conversation

tmoldovan8x8
Copy link
Owner

No description provided.

DanilChapovalov and others added 30 commits January 20, 2021 15:17
by updating flag that T1 frame can be referenced when it is encoded
rather than when it is sent for encoding.
Otherwise when encoder drops T1 frame, configuration for following T2 frame would
still try to reference that absent T1 frame leading to invalid references.

(cherry picked from commit ba91dbc)

Bug: chromium:1168068
Change-Id: I6398275971596b0618bcf9c926f0282f74120976
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202030
Reviewed-by: Philip Eliasson <[email protected]>
Commit-Queue: Danil Chapovalov <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#33002}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202763
Cr-Commit-Position: refs/branch-heads/4389@{#1}
Cr-Branched-From: 7acc2d9-refs/heads/master@{#32986}
DependencyDescriptor and vp9 wrapper understand key frame differently
when it comes to the first layer frame with spatial_id>0
This CL adds and use DD's interpretation of the key frame when deciding
if DD should be supported going forward.

(cherry picked from commit 0be1846)

Bug: webrtc:11999, chromium:1169060
Change-Id: I11a809a315e18bd856bb391576c6ea1f427e33be
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202760
Commit-Queue: Danil Chapovalov <[email protected]>
Reviewed-by: Erik Språng <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#33046}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203263
Cr-Commit-Position: refs/branch-heads/4389@{#2}
Cr-Branched-From: 7acc2d9-refs/heads/master@{#32986}
Using WebRTC-VP9-PerformanceFlags and settings a multi-layer config,
and then configuring the codec in non-svc mode would cause us to not
set the cpu speed in libvpx. For some reason, that could trigger a
crash in the encoder.

This CL fixes that, and adds new test coverage for the code affected
byt the trial.

(cherry picked from commit 03eed7c)

Bug: chromium:1167353, webrtc:11551
Change-Id: Iddb92fe03fc12bac37717908a8b5df4f3d411bf2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202761
Commit-Queue: Erik Språng <[email protected]>
Reviewed-by: Danil Chapovalov <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#33051}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203521
Cr-Commit-Position: refs/branch-heads/4389@{jitsi#3}
Cr-Branched-From: 7acc2d9-refs/heads/master@{#32986}
TEST: tested on chromium.

(cherry picked from commit 49dbad0)

No-Try: True
Bug: webrtc:12397, chromium:1171206
Change-Id: I1e15605f90e253a6ef61ab7ead8c576a80e8f01b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203886
Reviewed-by: Jakob Ivarsson <[email protected]>
Reviewed-by: Harald Alvestrand <[email protected]>
Reviewed-by: Sam Zackrisson <[email protected]>
Commit-Queue: Minyue Li <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#33080}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204302
Reviewed-by: Mirko Bonadei <[email protected]>
Reviewed-by: Minyue Li <[email protected]>
Cr-Commit-Position: refs/branch-heads/4389@{jitsi#4}
Cr-Branched-From: 7acc2d9-refs/heads/master@{#32986}
(cherry picked from commit 5c3ff6b)

Bug: chromium:1155071,webrtc:12265,chromium:1155477
Change-Id: I9d3119e9cbfdd5d7b41de2ed0f9dec92f7bf753d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202258
Reviewed-by: Per Åhgren <[email protected]>
Commit-Queue: Gustaf Ullberg <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#33037}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205280
Reviewed-by: Gustaf Ullberg <[email protected]>
Cr-Commit-Position: refs/branch-heads/4389@{jitsi#5}
Cr-Branched-From: 7acc2d9-refs/heads/master@{#32986}
The low-latency renderer is activated by the RTP header extension
playout-delay if the min value is set to 0 and the max value is
set to something greater than 0.

According to the specification of the playout-delay header
extension it doesn't have to be set for every frame but only if
it is changed. The bug that this CL fixes occured if a playout
delay had been set previously but some frames without any specified
playout-delay were received. In this case max composition delay
would not be set and the low-latency renderer algorithm would be
disabled for the rest of the session.

(cherry picked from commit 0093a38)

Bug: chromium:1138888
Change-Id: I12d10715fd5ec29f6ee78296ddfe975d7edab8a9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208581
Reviewed-by: Ilya Nikolaevskiy <[email protected]>
Commit-Queue: Johannes Kron <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#33330}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211000
Cr-Commit-Position: refs/branch-heads/4389@{jitsi#6}
Cr-Branched-From: 7acc2d9-refs/heads/master@{#32986}
Looks like getSupportedFocusModes() may return null, despite the documentation stating otherwise.
Avoids this exception:

Fatal Exception: java.lang.RuntimeException: Camera is being used after Camera.release() was called
       at android.hardware.Camera._enableShutterSound(Camera.java)
       at android.hardware.Camera.updateAppOpsPlayAudio + 1786(Camera.java:1786)
       at android.hardware.Camera.initAppOps + 598(Camera.java:598)
       at android.hardware.Camera.(Camera.java:591)
       at android.hardware.Camera.getEmptyParameters + 2146(Camera.java:2146)
       at android.hardware.camera2.legacy.LegacyMetadataMapper.createCharacteristics + 151(LegacyMetadataMapper.java:151)
       at android.hardware.camera2.CameraManager.getCameraCharacteristics + 347(CameraManager.java:347)
       at org.webrtc.Camera2Enumerator.isSupported + 116(Camera2Enumerator.java:116)
getCameraCharacteristics() may throw IllegalArgumentException:

Fatal Exception: java.lang.IllegalArgumentException: supportsCameraApi:2569: Unknown camera ID 1
       at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:1119)
       at android.hardware.camera2.CameraManager.getCameraCharacteristics(CameraManager.java:531)
       at org.webrtc.Camera2Session.start(Camera2Session.java:304)
       at org.webrtc.Camera2Session.<init>(Camera2Session.java:296)
       at org.webrtc.Camera2Session.create(Camera2Session.java:274)
       at org.webrtc.Camera2Capturer.createCameraSession(Camera2Capturer.java:35)
       at org.webrtc.CameraCapturer$5.run(CameraCapturer.java:272)
       at android.os.Handler.handleCallback(Handler.java:883)
       at android.os.Handler.dispatchMessage(Handler.java:100)
       at android.os.Looper.loop(Looper.java:237)
       at android.os.HandlerThread.run(HandlerThread.java:67)
Specifically, defer getting the camera index so the error can be
reported instead of crashing:

Fatal Exception: java.lang.IllegalArgumentException: No such camera: Camera 1, Facing front, Orientation 270
       at org.webrtc.Camera1Enumerator.getCameraIndex(Camera1Enumerator.java:170)
       at org.webrtc.Camera1Capturer.createCameraSession(Camera1Capturer.java:31)
       at org.webrtc.CameraCapturer$5.run(CameraCapturer.java:272)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:214)
       at android.os.HandlerThread.run(HandlerThread.java:65)
StreamConfigurationMap.getOutputSizes() may return null:
https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap#getOutputSizes(java.lang.Class%3CT%3E)

Fixes:

Fatal Exception: java.lang.NullPointerException: Attempt to get length of null array
       at org.webrtc.Camera2Enumerator.convertSizes(Camera2Enumerator.java:234)
       at org.webrtc.Camera2Enumerator.getSupportedSizes(Camera2Enumerator.java:147)
       at org.webrtc.Camera2Session.findCaptureFormat(Camera2Session.java:325)
       at org.webrtc.Camera2Session.start(Camera2Session.java:313)
       at org.webrtc.Camera2Session.<init>(Camera2Session.java:296)
       at org.webrtc.Camera2Session.create(Camera2Session.java:274)
       at org.webrtc.Camera2Capturer.createCameraSession(Camera2Capturer.java:35)
       at org.webrtc.CameraCapturer$5.run(CameraCapturer.java:272)
       at android.os.Handler.handleCallback(Handler.java:883)
       at android.os.Handler.dispatchMessage(Handler.java:100)
       at android.os.Looper.loop(Looper.java:237)
       at android.os.HandlerThread.run(HandlerThread.java:67)
Fatal Exception: java.lang.NullPointerException: Attempt to get length of null array
       at org.webrtc.Camera2Session$CaptureSessionCallback.chooseStabilizationMode(Camera2Session.java:234)
       at org.webrtc.Camera2Session$CaptureSessionCallback.onConfigured(Camera2Session.java:172)
       at android.hardware.camera2.impl.CallbackProxies$SessionStateCallbackProxy.lambda$onConfigured$0(CallbackProxies.java:53)
       at android.hardware.camera2.impl.-$$Lambda$CallbackProxies$SessionStateCallbackProxy$soW0qC12Osypoky6AfL3P2-TeDw.run(-.java:4)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:193)
       at android.os.HandlerThread.run(HandlerThread.java:65)
Fatal Exception: java.lang.IllegalArgumentException: connectHelper:1378: Illegal argument to HAL module for camera "0"
       at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:720)
       at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:380)
       at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:542)
       at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:470)
       at org.webrtc.Camera2Session.openCamera(Camera2Session.java:351)
       at org.webrtc.Camera2Session.start(Camera2Session.java:314)
       at org.webrtc.Camera2Session.<init>(Camera2Session.java:296)
       at org.webrtc.Camera2Session.create(Camera2Session.java:274)
       at org.webrtc.Camera2Capturer.createCameraSession(Camera2Capturer.java:35)
       at org.webrtc.CameraCapturer$5.run(CameraCapturer.java:272)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:193)
       at android.os.HandlerThread.run(HandlerThread.java:65)
tmoldovan8x8 pushed a commit that referenced this pull request Apr 19, 2022
To disable dcSCTP and fallback to usrsctp, you can use the field trial
WebRTC-DataChannel-Dcsctp/Disabled/

Also remove a hidden no-break space in dcSCTP logging causing issues in
some log parsing.

(cherry picked from commit 29ff3ef)

Bug: chromium:1243702
Change-Id: I46136a8913a6d803a3c63c710f3ed29523e4d773
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251867
Auto-Submit: Florent Castelli <[email protected]>
Reviewed-by: Victor Boivie <[email protected]>
Reviewed-by: Harald Alvestrand <[email protected]>
Commit-Queue: Harald Alvestrand <[email protected]>
Cr-Original-Commit-Position: refs/heads/main@{#36027}
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/252481
Reviewed-by: Victor Boivie <[email protected]>
Commit-Queue: Florent Castelli <[email protected]>
Cr-Commit-Position: refs/branch-heads/4896@{#1}
Cr-Branched-From: 962bf18-refs/heads/main@{#36026}
wudidada referenced this pull request in wudidada/webrtc Sep 23, 2022
This CL addresses an issue where the desktop appears to freeze after
resizing the desktop in a curtained CRD session when using the DXGI
capturer. This problem does not reproduce when using the GDI capturer
nor does it reproduce when the Windows session is attached to the local
console.

After digging in, it appears that the DXGI DuplicateOutput API stops
providing updated frame data. No errors are returned but yet no data is
produced. The problem is that when in this condition, there isn't a
good way to discern between this problem and a case where the desktop
is actually static.

The DxgiDuplicatorController already contains logic to attempt to
capture a frame prior to returning success after reinitialization.  This
logic works fine in the console case and occasionally works in the
detached session case. What I noticed in my reproductions was that DXGI
would produce a few frames before hanging (usually 1-2 but sometimes 3
or 4).  My solution is to check the session state and adjust the number
of frames we attempt to capture (I also simplified the wait logic as
there was a bug in the time calc and it seemed more complicated than it
needed to be).

One option considered would be to introduced a new differ class higher
up in the stack which would run the GDI and DXGI capturers in parallel
(instead of in the fallback configuration as they are today) however
that seemed like overkill for this specific issue.

(cherry picked from commit 44ff88d)

Bug: chromium:1307357
Change-Id: Idba4bb9b2aa7692040344d480be3f0d09b9ce9e9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256214
Reviewed-by: Alexander Cooper <[email protected]>
Reviewed-by: Jamie Walch <[email protected]>
Commit-Queue: Joe Downing <[email protected]>
Cr-Original-Commit-Position: refs/heads/main@{#36286}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256701
Reviewed-by: Joe Downing <[email protected]>
Commit-Queue: Joe Downing <[email protected]>
Cr-Commit-Position: refs/branch-heads/4951@{#1}
Cr-Branched-From: 026cfa3-refs/heads/main@{#36222}
tmoldovan8x8 pushed a commit that referenced this pull request Oct 20, 2022
This experiment will tell if we still see the performance gains that we
saw with the "bursty slacked pacer" even if we don't apply slack (since
the "slack without burst" showed little impact at Stable).

The hope is that without slack all quality regressions will go away but
that bursting will still provide the desired performance benefits.

(cherry picked from commit d34605b)

Bug: chromium:1354491
Change-Id: I95f05d040713addaaa1856c8e374a01c27311612
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/272366
Commit-Queue: Henrik Boström <[email protected]>
Reviewed-by: Erik Språng <[email protected]>
Cr-Original-Commit-Position: refs/heads/main@{#37845}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273460
Cr-Commit-Position: refs/branch-heads/5249@{#1}
Cr-Branched-From: 7aaeb5a-refs/heads/main@{#37825}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants