vaapi and x-forwarding
Marianna S. Buschle
msb at qtec.com
Tue Jun 15 11:44:33 UTC 2021
I have just tried the solution with having multiple pipelines and using the
HAVE / NEED_CONTEXT messages on the bus.
pipelines.append("videotestsrc num-buffers=1 ! vaapisink display=drm
name=vaapi_dummy")
pipelines.append("videotestsrc is-live=true pattern=ball !
video/x-raw,framerate=30/1,format=NV12 ! "
"tee name=t ! queue ! vaapih264enc rate-control=4
bitrate=15000 ! video/x-h264,profile=high ! h264parse ! "
"interpipesink name=vtest sync=false async=false "
"t. ! queue ! videoconvert ! timeoverlay ! textoverlay
text=src ! ximagesink sync=0 ")
pipelines.append("interpipesrc listen-to=vtest is-live=false
stream-sync=restart-ts ! "
"identity sync=true ! h264parse ! vaapih264dec
low-latency=true ! queue ! videoconvert ! timeoverlay ! textoverlay
name=text_out text=out ! ximagesink sync=0 ")
The first pipeline goes to playing from start, and then after I got the
context from it I start the other 2.
However it doesn't work, I end up getting the error as soon as the 2 other
pipelines go into playing/ready/paused, before I get the NEED_CONTEXT
message from them...
X Error of failed request: BadRequest (invalid request code or no such
operation)
Major opcode of failed request: 154 (DRI2)
Minor opcode of failed request: 1 (DRI2Connect)
Serial number of failed request: 12
Current serial number in output stream: 12
The only way I can avoid the error is by adding fx "videotestsrc
num-buffers=1 ! vaapisink display=drm" to each pipeline.
Then I can see the NEED/HAVE context messages from all the vaapisinks, but
not from encoder/decoder.
I guess their contexts are being set by upstream/downstream queries.
--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
More information about the gstreamer-devel
mailing list