summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2020-04-23gst: use the pw_stream queueWim Taymans2-43/+12
There is no need to keep a separate queue in the source, simply use the one from pw_stream.
2020-04-23gst: always use the clock timeWim Taymans1-3/+3
Also use the clock time when the stream is not yet started.
2020-04-22factory: do more version checksWim Taymans1-0/+5
So that we don't accidentally load an old plugin.
2020-04-22context: simplify state changesWim Taymans5-139/+53
Keep track of when a link is prepared, this is when the link has successfully negotiated a format and buffers. Only follow prepared links when collecting nodes in the graph. Set the state of the driver and its nodes based on how many active nodes the driver has. We don't have to do state changes on the nodes from the link anymore then and we can get rid of the counters. Only set the io on the mixer ports when prepared because we might need a special mixer element based on the format. Remove passive links for now. This fixes many cases where the graph would stall when linking/unlinking ports in various combinations. Fixes #221
2020-04-22improve debugWim Taymans11-47/+73
Improve log so that debug level 3 gives a reasonably readable overview of what is going on.
2020-04-22mem: implement remove_idWim Taymans3-6/+9
Rename (the non-exported symbol) _unref_id -> _remove_id and make it remove the id from the map of known ids. This way, the server can send the remove_mem and reuse the id for new memory before all references are gone. Fixes "invalid mem id X, expected Y" errors.
2020-04-22tools: handle connection errorWim Taymans1-1/+5
2020-04-21core: send an error when receiving invalid memWim Taymans2-1/+2
And also print the client error when we get it.
2020-04-21client-node: don't try to clear port when destroyedWim Taymans1-1/+7
When the client destroyed a port, don't try to clear the buffers because the client should have done that already.
2020-04-21improve debugWim Taymans3-19/+31
2020-04-20jack: implement more metadata APIWim Taymans1-3/+34
Rework the metadata implementation without pw_properties to make it easier to delete all subjects and implement the metadata API. Remove metadata from all objects when they are destroyed.
2020-04-20metadata: trigger emission of propertiesWim Taymans2-34/+83
When the resource does add_listener, send a message to the proxy to trigger an emission of properties. Block the client until all properties have been notified, track this with a ping event to the implementation.
2020-04-14midifile: make it possible to specify output fileWim Taymans3-29/+29
2020-04-14midifile: remove impossible case.Wim Taymans1-2/+1
2020-04-14stream: remove useless size on input streamsWim Taymans2-13/+5
Setting the size on input stream buffers based on the elapsed ticks does not give a meaningfull value for the queue size so just leave it to the user to set the size field.
2020-04-13gst: add properties for limits of negotiated buffersMichael Tretter2-1/+46
By default, the pipewiresrc tries to negotiate 16 buffers. This value is hard coded in the pipewiresrc. If the buffers are large, this could lead to an undesirably high memory usage. Applications that know about the buffer size and that fewer buffers are sufficient should be able to configure the limits for the number of buffers that are negotiated. Therefore, add the min-buffers and max-buffers properties to the pipewiresrc to enable applications to configure limits for the number of negotiated buffers.
2020-04-12stream: only call process when we have a dequeued bufferWim Taymans2-7/+4
2020-04-07spa: improve drainingWim Taymans3-16/+16
Make a new DRAINED status. Place the DRAINED status on an input IO when a stream is out of buffers and draining. All nodes that don't have HAVE_DATA on the input io need to copy it to the output io and return the status. This makes sure the DRAINED is forwarded and nodes return DRAINED from _process() DRAINED on the resampler flushes out the last queued samples and then forwards the DRAINED in the next iteration. Emit a new drained signal from the context when a node returns DRAINED. Use this to trigger the drained signal in the stream.
2020-04-06resample: use a 0 sized buffer to drainWim Taymans1-1/+12
2020-04-04tools: improve error reportingWim Taymans4-10/+26
2020-04-04Fix some -Wenum-conversion errorsWim Taymans3-6/+5
Make pw_direction and spa_direction the same Explicitly cast some enums or use the right enums
2020-04-03Fix some compiler warnings on armWim Taymans2-5/+5
2020-04-02stream: somewhat implement drain betterWim Taymans2-6/+22
Abuse the xrun callback in the adapter to emit the drained signal until almost all data left the resampler. This needs more work with a proper signal and a buffer flag to signal the drain.
2020-04-02node: improve debug of activation areaWim Taymans3-44/+76
2020-04-02context: don't recalculate graph for exported nodesWim Taymans1-1/+7
Exported nodes are managed by the remote end so we don't have to.
2020-04-02transport: init io_buffers with SPA_IO_BUFFERS_INITWim Taymans1-4/+2
2020-04-02client-node: use BUFFER_INIT to reset io_buffersWim Taymans1-2/+1
2020-04-02media-session: Add method to destroy a globalWim Taymans3-1/+9
Destroy the stream when it is disconnected and it was marked as DONT_RECONNECT.
2020-04-02protocol-native: avoid destroying NULL sourceWim Taymans1-2/+4
The source might have been destroyed before.
2020-04-02clean up optionsWim Taymans7-98/+96
make sure we can use -v for verbose mode
2020-04-01enable more warningsWim Taymans1-1/+6
Fix some warnings
2020-03-31context: improve debug of quantumWim Taymans2-10/+11
2020-03-31Don't include alloca.h on FreeBSD.Gleb Popov1-0/+2
2020-03-30conf: add commentWim Taymans1-2/+2
2020-03-30media-session: add getopt supportWim Taymans2-9/+108
Add options to media-session Add an option to enable or disable modules Add an option to set properties for later use
2020-03-27tests: add endpoint unit testGeorge Kiagiadakis2-0/+459
This tests exporting a PW_TYPE_INTERFACE_Endpoint and binding a proxy for it through the registry, verifying that info and params are propagated properly from one to the other
2020-03-27session-manager: implement factories for session, endpoint-stream & ↵George Kiagiadakis5-0/+1638
endpoint-link Heavily based on the endpoint factory
2020-03-27session-manager: endpoint: implement caching info & paramsGeorge Kiagiadakis1-65/+240
The info structure needs to be cached because there is no way to request it from the implementation, unless we hack the add_listener API to be used for making info requests or add a new method that will be used just in the implementation (both are bad ideas). The params are cached because 1) a client doing enum_params + sync will not work correctly, since the sync call syncs with the server and not the implementation... we could block the client to solve that, but then there is also #2 2) the implementation is not aware of the clients and therefore it cannot keep track of who is subscribed and who is not, this needs to happen in the server. Then if we only keep track of the subscriptions in the server and keep requesting params from the impl, there is no way to know if a param event coming from the impl matches a call to enum_params or to subscribe or if it's just an update that needs to be forwarded to subscribers.
2020-03-27session-manager: add update/free functions for the info structuresGeorge Kiagiadakis2-0/+318
2020-03-27session-manager: implement 'endpoint' factoryGeorge Kiagiadakis3-0/+379
This is modeled after the 'metadata' factory and provides a way to use the pw_endpoint interface directly to implement an endpoint object in a client.
2020-03-27session-manager: check error code when registering the marshallersGeorge Kiagiadakis2-7/+8
2020-03-27session-manager: implement export functions for session-manager objectsGeorge Kiagiadakis2-0/+189
2020-03-27session-manager: move files into client-endpoint / client-session subdirsGeorge Kiagiadakis13-6/+6
To clean up space for the new implementation. The existing code is exclusively for use with the client-endpoint and client-session factories.
2020-03-27session-manager: add impl marshallers for endpoint, -stream, -link and sessionGeorge Kiagiadakis1-132/+1179
2020-03-26pw-cat: allow latency=noneWim Taymans1-1/+1
2020-03-26context: allow quantum up to configured maxWim Taymans2-4/+12
Clip the quantum values between absolute min and max. If a client selected a quantum, allow this to exceed the default quantum up to the max-quantum. If a client doesn't select a quantum, use the default.
2020-03-26pw-profiler: report error when we can't bindWim Taymans1-3/+3
2020-03-25pw-cli: continue after parsed optionsWim Taymans1-2/+2
2020-03-25pw-cli: add non-interactive modeWim Taymans1-21/+66
You can now pass a command to pw-cli and it will execute immediately and exit. Fixes #195
2020-03-24tools: add getopt argument parsingWim Taymans4-25/+158
Add some help, version, remote options for tools Add option for output filename in pw-profiler Add option to start pw-cli as daemon or not, make it connect to the default PipeWire instance by default (instead of local instance)