AV1 packets are incompatible with GStreamer and possibly Chromium-based browsers
Your environment.
- Version: v4.0.0-beta.7
- Browser: Chrome
- Other Information - related GStreamer issue
What did you do?
Server is based on play-from-disk-renegotiation example, client is either Chromium or based on gstreamer-receive
What did you expect?
Video should play in both Chromium and Gstreamer
What happened?
It doesn't. Refer to the gstreamer issue above. Chromium doesn't report any errors and just doesn't play the video.
The relevant part here is https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/560#note_2448414
In short, Pion currently includes the obu_has_size_field in the OBUs while the AV1 RTP spec recommends ("SHOULD") to not include them. GStreamer does not support that currently (but I'm changing that right now).
Similarly, temporal delimiter OBUs are still part of the packets but should be stripped according to the AV1 RTP spec.
Also the payload is generally invalid. The aggregation header claims that only a single OBU is contained in the packet, but the packets contain a temporal delimiter OBU followed by a sequence header OBU and others.
Additionally the N bit of the aggregation header is never set.
@Sean-Der any idea when it could be fixed? Also thanks for your great work in here
Resolved by https://github.com/pion/rtp/pull/295 and released in https://github.com/pion/webrtc/releases/tag/v4.0.11