Commit Graph

6 Commits

Author SHA1 Message Date
be400e465b Metronome: disable & refactor for single-threaded operation.
The Chromium implementation unfortunately has a rare deadlock.
Rather than patching that up, we're changing the metronome
implementation to be able to use a single-threaded environment
instead.

The metronome functionality is disabled in VideoReceiveStream2
construction inside call.cc.

The new design does not have listener registration or
deresigstration and instead accepts and invokes callbacks, on
the same sequence that requested the callback. This allows
the clients to use features such as WeakPtrFactories or
ScopedThreadSafety for cancellation.

The CL will be followed up with cleanup CLs that removes
registration APIs once downstream consumers have adapted.

Bug: chromium:1381982
Change-Id: I43732d1971e2276c39b431a04365cd2fc3c55c25
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/282280
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38582}
2022-11-08 12:23:40 +00:00
8fe5579136 Ensure video frame buffer is still decodable before decoding
This ensures that if for some reason, the frame buffer becomes
undecodable while waiting to decode a frame, the decoding is halted.
This also guards against receiving an empty temporal unit from the frame
buffer, even though this should never happen when the frame buffer has a
decodable temporal unit.

Bug: chromium:1378253, chromium:1361623
Change-Id: I8c4c897bf474d5cbda5f0f357781bf1dc0701fe4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280701
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38494}
2022-10-28 13:07:40 +00:00
7446b60823 Only update TimestampExtrapolator on the last frame of the temporal unit.
Bug: webrtc:14526
Change-Id: I3fd7cb286050fc4cbe0008534f05141aa19b7606
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/278142
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38310}
2022-10-06 15:02:54 +00:00
a006ba152f Remove WebRTC-FrameBuffer3 field trial
The new frame buffer is already the default. Sync decoding can now be
inferred by the presence of a metronome rather than using the field
trial.

Tests have been updated to use the DecodeSynchronizer rather than the
field trial.

Bug: webrtc:14003
Change-Id: I33b457feaf4eac1500f3bf828680e445ae4d93cf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/274163
Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38011}
2022-09-05 11:52:20 +00:00
214cab5727 Move VideoStreamBufferController to packet sequence
It no longer has to interact with the decode queue, that will only
happen in VideoReceieveStream2. This moves some members in
VideoReceieveStream2 to the packet sequence which removes a few
post-tasks.

Bug: webrtc:14003, webrtc:11993
Change-Id: I4641b593b1a2f68e017c384b73ee4e75d06cf559
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/271700
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37802}
2022-08-16 14:57:24 +00:00
476f18d2a4 Rename FrameBufferProxy to VideoStreamBufferController
This makes the class concrete, and the former FrameBuffer3Proxy is the implementation.


Bug: webrtc:14003
Change-Id: Ife825b9f4efc7b79d9be8b4afb03904da819958a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265868
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37793}
2022-08-16 09:10:47 +00:00