mediacapture-transform icon indicating copy to clipboard operation
mediacapture-transform copied to clipboard

Playback and synchronization of MediaStreamTracks created by VideoTrack Generator

Open aboba opened this issue 2 years ago • 3 comments

VideoTrackGenerator (the successor to MSTG) converts a stream of VideoFrames to a MediaStreamTrack.

VideoFrames may have been "transformed" by a process that generates jitter. For example, they may have been processed by a Machine Learning algorithm that takes a varying amount of time, or they may have been produced by a decoder that received encoded chunks over a network with varying delays.

Currently, the specification does not talk about what an application can expect of VideoTrackGenerator in terms of playout delay and rendering smoothness. Does VideoTrackGenerator assume that there is a jitter buffer upstream that generates VideoFrames with constant delays? Or does VideoTrackGenerator adjust the playout delay in response to the jitter it experiences in the VideoFrames it receives?

aboba avatar Oct 04 '22 01:10 aboba

Should the VideoFrame's timestamp relate to this as well? The webcodecs spec defines it as "The presentation timestamp", with a note about potentially using it to guide rate control in the encoder. It would be great if we could specify its behaviour in the context of mediacapture transforms.

tonyherre avatar Oct 04 '22 08:10 tonyherre

I think the timestamps in the stream coming from VTG are the timestamps coming into the VTG - dejittering should happen just before playback (or other process that needs a regular cadence).

Needs discussion.

alvestrand avatar Oct 20 '22 14:10 alvestrand