gstpipewiresrc: Negotiation error triggers timeout again
There seems to be a regression from the fixes for #2935 (closed): on negotiation errors we again wait for a timeout in https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/58d626fec8f6119bb12bfa2b7a901443a0aad829/src/gst/gstpipewiresrc.c#L806-811.
Reproducer and log:
GST_DEBUG=pipewiresrc:5 gst-launch-1.0 pipewiresrc ! "video/x-raw,format=NV21" ! fakesink 255
Setting pipeline to PAUSED ...
0:00:00.028840094 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:1400:gst_pipewire_src_open:<pipewiresrc0> open
0:00:00.031510085 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:793:wait_started:<pipewiresrc0> waiting for started signal, state now unconnected
0:00:00.031605707 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:839:gst_pipewire_src_negotiate:<pipewiresrc0> caps of src: ANY
0:00:00.031618822 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:849:gst_pipewire_src_negotiate:<pipewiresrc0> caps of peer: video/x-raw, format=(string)NV21
0:00:00.031624933 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:859:gst_pipewire_src_negotiate:<pipewiresrc0> have common caps: video/x-raw, format=(string)NV21
0:00:00.031632417 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:865:gst_pipewire_src_negotiate:<pipewiresrc0> have common caps (sanitized): video/x-raw, format=(string)NV21
0:00:00.031651143 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:915:gst_pipewire_src_negotiate:<pipewiresrc0> connect capture with path (null), target-object (null)
0:00:00.031659799 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:691:on_state_changed: got stream state connecting
0:00:00.031734301 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:937:gst_pipewire_src_negotiate:<pipewiresrc0> waiting for NEGOTIATED, now connecting
0:00:00.031744891 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:793:wait_started:<pipewiresrc0> waiting for started signal, state now connecting
0:00:00.031960341 292923 0x7f7f00001e90 DEBUG pipewiresrc gstpipewiresrc.c:691:on_state_changed: got stream state paused
0:00:00.032024884 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:937:gst_pipewire_src_negotiate:<pipewiresrc0> waiting for NEGOTIATED, now paused
0:00:00.032042949 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:793:wait_started:<pipewiresrc0> waiting for started signal, state now paused
<-- timeout here -->
0:00:30.031579803 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:817:wait_started:<pipewiresrc0> got started signal: error
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
0:00:30.031700272 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:1123:gst_pipewire_src_unlock:<pipewiresrc0> setting flushing
0:00:30.031721423 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:937:gst_pipewire_src_negotiate:<pipewiresrc0> waiting for NEGOTIATED, now paused
0:00:30.031733486 292923 0x7f7f08000b90 DEBUG pipewiresrc gstpipewiresrc.c:1005:gst_pipewire_src_negotiate:<pipewiresrc0> connect error
0:00:30.031753604 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:1137:gst_pipewire_src_unlock_stop:<pipewiresrc0> unsetting flushing
0:00:30.031764455 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:1458:gst_pipewire_src_close:<pipewiresrc0> close
0:00:30.031873332 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:1018:handle_format_change:<pipewiresrc0> clear format
0:00:30.031914710 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:1018:handle_format_change:<pipewiresrc0> clear format
0:00:30.031985335 292923 0x22fa510 DEBUG pipewiresrc gstpipewiresrc.c:691:on_state_changed: got stream state unconnected
Freeing pipeline ...
@gkiagia is this maybe a regression in Wireplumber 0.5? I suppose the stream state should not stay in paused
?