This was wrongly calling the base class method, which unnecessairly took the stream lock, already taken by handle_frame(). The drain() call in negotiate() would then wait for the output loop to pause, while that loop is stuck waiting to take the stream lock, thus causing a deadlock. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5521>