Make an object for a processing node.
Implement a sink node. Make it possible to implement Sink and Source
interfaces to provide input/output from the node.
Improve pinosdepay to track fds and handle format changes.
Rename the source-output object to channel because it is used for both
input and output.
Start the beginnings of sink support. This will make it possible to make
pinos consume data as well as provide data.
Only go to READY in setup_pipeline, this is enough to get the caps. We
don't want to go to PAUSED yet because we don't want to negotiate a
format.
Mark the source busy after we configured the capsfilter so that we can
let the source negotiate correctly.
Send the base-time to the client so that it can calibrarte the clock.
Wait until we are completely negotiated before completing the state
change to paused. This makes it possible to provide a clock and decide
if we are live or not.
Add a new refresh message to request a keyframe from the pinos server.
pinospay: pass the refresh-request message upstream
pinossink: turn refresh-request messages into events
pinossrc: turn a keyframe event into a refresh-request message
Detect a format change in the payloader and post an element message.
Catch the format change element message in the client-source and use it
to update the format and possible formats in the source and source-outputs.
Add a global object that can be used to track outstanding fds for a
client. This can later also be used to limit the number of fds per
client.
Use this in the payloader to track fds. This makes it possible to track
the fds even when the client reconnects.
Set the client patch on the socket so that we can use it to track the
fds we sent to this client.
When the client disappears, release all outstanding fds.
Rework stream connect/disconnect from start/stop
Start the stream in setcaps when the format is known.
When the stream is already started in setcaps, send a format_change
message instead.
Make sure we unref the source-input when it is removed.
When the source-input is removed, we should also unref the source. Do
this by adding the source as data for the source-input and unreffing it
when the source-input is freed.
Add GAsyncReadyCallback to the introspection API. This makes it possible
to report errors in the future. Don't pass NULL in the callback anymore
now that we have the Ready callback. We also don't need to have a return
value from the callback because now we can cancel any iteration by using
the GCancelable.
Make pinos_context_info_finish() to get the final result/error of
introspection.
Update tools for new API
Check if we got tmpfile memory and if we do, don't bother waiting for
the release-fd message but unref the memory directly. We know the memory
is allocated from our allocator and that we won't reuse it.