[Bug 778934] [vp8enc] Using Threads property causes major artifcats

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Feb 21 12:11:32 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=778934

Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO
                 CC|                            |nicolas at ndufresne.ca

--- Comment #1 from Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> ---
(In reply to purebordem from comment #0)
> 1.10.3 Mac OS - Installed via Brew
> 
> Using the "threads" property causes the encoded video to refuse to play.
> Changing "error-resilient" to 1-3 with threads causes the video to play but
> incurs intense rainbow artifacting. Tested with various pipelines with
> varying degrees of success.
> 
> gst-launch-1.0 videotestsrc ! vp8enc ! decodebin ! autovideosink
> 
> will play
> 
> gst-launch-1.0 videotestsrc ! vp8enc threads=4 ! decodebin ! autovideosink
> 
> will not play
> 
> gst-launch-1.0 videotestsrc ! vp8enc threads=4 error-resilient=3 ! decodebin
> ! autovideosink

Works on Linux, better if you set a deadline though (e.g. deadline=1). vp8enc
without a deadline is not designed to be real-time. Can you attach a trace,
maybe GST_DEBUG=2 and/or GST_DEBUG="vp*:7" ? Does using deadline=1 make it
works ?

> 
> will play with heavy artifacts
> 
> gst-launch-1.0 filesrc location=file.mp4 ! decodebin ! videoconvert ! vp8enc
> ! decodebin ! autovideosink

I don't see visual artifacts. Note that by definition this would mean a
corrupted image. Though, without deadline=1 my computer is too slow.

> 
> will play
> 
> gst-launch-1.0 filesrc location=file.mp4 ! decodebin ! videoconvert ! vp8enc
> threads=4 ! decodebin ! autovideosink

Works for me, lot of framedrop and deadline=1 helps.

> 
> will not play
> 
> gst-launch-1.0 filesrc location=file.mp4 ! decodebin ! videoconvert ! vp8enc
> ! rtpvp8pay ! udpsink host=127.0.0.1 port=5004
> 
> will stream
> 
> gst-launch-1.0 filesrc location=file.mp4 ! decodebin ! videoconvert ! vp8enc
> threads=4 ! rtpvp8pay ! udpsink host=127.0.0.1 port=5004
> 
> will stream
> 
> gst-launch-1.0 filesrc location=file.mp4 ! decodebin name=decode !
> videoconvert ! vp8enc end-usage=vbr min-quantizer=5 max-quantizer=50
> undershoot=95 cpu-used=5 deadline=1 static-threshold=50 error-resilient=1 !
> rtpvp8pay ! udpsink host=127.0.0.1 port=5004
> 
> will stream without artifacts

If the encoder is not real-time, getting visual artifacts makes a lot of sense
due to packet lost. Again, using vpxenc without deadline make not sense for
streaming. Same goes to VBR, it's not the best setting for streaming.

> 
> gst-launch-1.0 filesrc location=file.mp4 ! decodebin name=decode !
> videoconvert ! vp8enc end-usage=vbr min-quantizer=5 max-quantizer=50
> undershoot=95 cpu-used=5 threads=4 deadline=1 static-threshold=500
> error-resilient=1 ! rtpvp8pay ! udpsink host=127.0.0.1 port=5004
> 
> will stream with heavy artifacts
> 
> 
> Bottom two streaming examples were viewed in WebRTC compatible browser.

The is strange, since WebRTC compatible browser requires SRTP and an RTP
sessions. Can you share your receiver pipeline ?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list