filesink/basesink: gst_element_query() for QUERY_URI on a filesink fails
@bshankstd
Submitted by Brendan Shanks Link to original bug (#782135)
Description
I'm trying to do a GST_QUERY_URI on a filesink using gst_element_query(), but the query is never handled and fails. (It's actually on a bin containing a filesink, but I don't think that matters).
GstBaseSink's default_element_query() handles the query, and defaults to doing gst_pad_peer_query(). This sends the query upstream through the muxer, parser, etc., but the filesink itself never gets to answer.
filesink implements GstBaseSink::query() and handles GST_QUERY_URI there, but it looks like basesink only calls that for a pad query, not element query.
I can query the bin's sink pad instead, but gst_element_query(filesink, GST_QUERY_URI) seems like something that should work. Is this the case?
Relevant debug lines:
GST_ELEMENT_PADS gstelement.c:1707:gst_element_query: send query on element tdstream0
bin gstbin.c:4376:gst_bin_query:<tdstream0>
Sending query 0x29c6c0 (type uri) to sink children
GST_ELEMENT_PADS gstelement.c:1707:gst_element_query: send query on element filesink
GST_PADS gstpad.c:4059:gst_pad_peer_query:filesink:sink peer query 0x29c6c0 (uri)
GST_PADS gstpad.c:3932:gst_pad_query:muxer:src doing query 0x29c6c0 (uri)
GST_PADS gstpad.c:3376:gst_pad_query_default:muxer:src forwarding 0x29c6c0 (uri) query
GST_PADS gstpad.c:2836:gst_pad_iterate_internal_links_default:muxer:src Making iterator
GST_PADS gstpad.c:4059:gst_pad_peer_query:muxer:video_0 peer query 0x29c6c0 (uri)
GST_PADS gstpad.c:3932:gst_pad_query:parser:src doing query 0x29c6c0 (uri)
GST_PADS gstpad.c:3376:gst_pad_query_default:parser:src forwarding 0x29c6c0 (uri) query
GST_PADS gstpad.c:2836:gst_pad_iterate_internal_links_default:parser:src Making iterator
GST_PADS gstpad.c:4059:gst_pad_peer_query:parser:sink peer query 0x29c6c0 (uri)
... queries all the way to the src
Version: 1.10.0