Closed Bug 1685671 Opened 2 years ago Closed 1 year ago

Use reconfigure() instead of start() and stop() where possible in the VideoConduit


(Core :: WebRTC, enhancement, P2)






(Reporter: ng, Unassigned)



"We are currently doing Stop(); Start(); whenever we update conduits, but the Streams in upstream support Reconfigure. It would make sense to switch us over to that to avoid resetting a bunch of internal state. Looks like this would need a bit of refactor in TransceiverImpl/RTCRtpReceiver so might be best suited in a followup - also to have some tracking on regressions."
-- Pehrsons

I noticed this while looking at AudioSendStream and AudioReceiveStream. The corresponding video streams appear to not have Reconfigure methods. There's a VideoSendStream::ReconfigureVideoEncoder that might be helpful in some cases.

Severity: S2 → S3

In upstream bug 9106 they removed FrameBuffer::Start, making VideoReceiveStream::Stop final. After such a Stop, VideoReceiveStream::Start would not again start the FrameBuffer, so once that happens the FrameBuffer ends up blocking any received frames from being decoded.

Best would be to rework the Transceiver so that we never have to restart the receive stream. Should we still need to restart it we'd have to recreate it. All the implications of that I'm not sure of, but for one we'd drop all the frames currently waiting in the jitter buffer (aka FrameBuffer).

Possibly we could undelete FrameBuffer::Start but one would assume it was removed for good reasons.

No longer blocks: 1704947
QA Whiteboard: qa-not-actionable

I have done what I can in bug 1654112 to address this: D123222

Future libwebrtc merges may allow us to improve further, as not all things that could be reconfigurable are so yet.

Bug 1654112 landed.

Closed: 1 year ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.