glupload: Responds to caps queries incorrectly
When glupload responds to caps queries, it calls gst_gl_upload_transform_caps().
Before it starts, gst_gl_upload_transform_caps() will return the set of all possible caps from all possible upload methods, but if there is already a current upload method then only the transform_caps() result from that upload method is checked first. Since the raw memory uploader is the only one that adds plain video/x-raw
to the transform_caps result, this can mean that upstream will query glupload, and be told that it accepts video/x-raw...,video/x-raw(memory:GLMemory)...
and then later after choosing video/x-raw
and things are running, querying glupload
's sink pad will claim it now only supports video/x-raw(memory:GLMemory)
as input.
I attempted a fix in !2687 (merged), but it caused a regression and was partially reverted.
I think a correct fix would be to ensure the gst_gl_upload_transform_caps()
function always appends the results of calling the raw memory upload transform_caps implementation.