rtpvp8pay no longer parses vp8enc output when end-usage=cbr or error-resilient=default are set
Describe your issue
After !5810 (merged) , the webrtcsink from gst-plugins-rs can't send VP8 video anymore using the built-in encoder.
There is an error being reported from the payloader that it Failed to parse VP8 frame
.
I looked at https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/05884de50c80f24d05970042e817864d8d259434/net/webrtc/src/webrtcsink/imp.rs#L701 and tested selectively disabling a few options and found that if either end-usage=cbr
or error-resilient=default
options are set on the vp8 encoder then the rtpvp8pay will fail to parse the stream.
Expected Behavior
The previous behavior of the payloader is that it can parse a vp8 stream with these options set on the encoder.
Observed Behavior
The payloader rejects the input, saying: Failed to parse VP8 frame
Setup
- Operating System: Fedora Linux 39
- Device: Computer
- GStreamer Version: main (b2098849)
- Command line:
gst-launch-1.0 videotestsrc ! videoconvert ! vp8enc end-usage=cbr ! rtpvp8pay ! fakesink sync=1
gst-launch-1.0 videotestsrc ! videoconvert ! vp8enc error-resilient=default ! rtpvp8pay ! fakesink sync=1
Steps to reproduce the bug
- open terminal
- type either of the commands listed above
How reproducible is the bug?
Always
Screenshots if relevant
Solutions you have tried
Reverting !5810 (merged) will avoid the problem.
Related non-duplicate issues
Additional Information
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstRtpVP8Pay:rtpvp8pay0: Could not encode stream.
Additional debug info:
../subprojects/gst-plugins-good/gst/rtp/gstrtpvp8pay.c(704): gst_rtp_vp8_pay_handle_buffer (): /GstPipeline:pipeline0/GstRtpVP8Pay:rtpvp8pay0:
Failed to parse VP8 frame
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
Additional debug info:
../subprojects/gstreamer/libs/gst/base/gstbasesrc.c(3175): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming stopped, reason error (-5)
Setting pipeline to NULL ...
ERROR: pipeline doesn't want to preroll.
Freeing pipeline ...