moq-wg / moq-transport

draft-ietf-moq-transport
Other
70 stars 16 forks source link

Ability to filter which Objects are sent in a Subscription #441

Open wilaw opened 2 months ago

wilaw commented 2 months ago

Imagine a track, sent as frame-per stream, with an I-frame every 2s and each GOP in a Group. In order to create a trick-play preview of this track, it would be convenient to just receive the I-frames, i.e object 0 from each group.

To do this , we should create the ability in specify an OBJECT-FILTER in our SUBSCRIBE. The object filter can have a simply syntax to specify a range of object numbers that should be delivered. For example:

[0] - only send objects with an ID of 0
[0,5] - only send objects with an ID of 0 or 5.
[0..5] - only send objects in the range 0 to 5 inclusive.
[0..2, 16..20] - only send objects in the range 0 to 5 inclusive, or 16..20 inclusive.

We could optionally extend this concept to group numbers too. I don't have an immediate use case for that, but I could imagine one involving future layered encodings in the same track, where I wanted to pull multiplexed ranges of groups.

VMatrix1900 commented 2 months ago

The concept of filter is useful. By putting it in the subscribe message, each individual client is able to create a shadow sub-track which is tailored to its own needs. I wonder if the similar result can be accomplished by server creating multiple tracks for all clients to subscribe.