summaryrefslogtreecommitdiff
path: root/spa/include
AgeCommit message (Collapse)AuthorFilesLines
2019-07-12node: return ENOTSUP for unimplemented callbacksWim Taymans1-1/+1
2019-07-10adapter: move to SPA pluginWim Taymans1-0/+3
Move the adapter code to a SPA plugin and make the adapter module use the plugin instead.
2019-07-09add SPA_SENTINELWim Taymans1-1/+3
2019-07-09Improve rate matching and clock slavingWim Taymans2-0/+9
Use a new rate_match io area to exhange rate matching info between sink/source and resampler. Compensate for the rate match delay when scheduling timeouts. Let the resampler notify the source of how many samples it needs to produce the desired quantum. Make sure we keep an extra buffer in the device to be able to make this possible. Let the adapter directly call the slave node process function.
2019-06-26builder: make _rewind part of _reset()Wim Taymans1-9/+4
_reset() should also rewind the work that has been done. We don't need _rewind() anymore then.
2019-06-26builder: add _rewind methodWim Taymans1-0/+9
Add a rewind method to undoes the data of a frame. Add unit test for overflow and rewind
2019-06-26builder: take size of the frameWim Taymans1-2/+4
spa_pod_builder_frame() should return the position in the builder memory or NULL when the frame doesn't fit. Check the size of the frame instead of assuming the frame is already written to the buffer.
2019-06-26pod: _builder_deref() always works with builder sizeWim Taymans2-3/+4
2019-06-21names: add standard factory name definitionsWim Taymans4-2/+92
Define a set of standard factory names and document what they contain. This makes it possible to change the implementation by mapping the factory-name to a different shared library.
2019-06-19improve error handlingWim Taymans1-4/+4
Make sure we free properties we take ownership of. Add some more return values to functions that can fail.
2019-06-07some printf fixesWim Taymans1-1/+1
2019-06-06System: More work on making system functions pluggableWim Taymans2-13/+34
Move the epoll functions to the system functions and make the loop use those. Use simple mask for events instead of enum. Add the used system api in pw_loop. Add System API to spa_support and use it where possible. Pass the system API used in the realtime loops in spa_support as well and use this in the realtime paths. Improve bootstrapping, load only the log and cpu interfaces because those can/need to be shared between instances. Let the core load the other interfaces. Add keys to configure the System and Loop implementations used in pw_loop.
2019-06-06simply use INTERFACE_Loop for the main-loopWim Taymans2-3/+3
2019-06-06log: add log level optionWim Taymans1-0/+1
2019-06-06cpu: add CPU_FORCE option to cpu interfaceWim Taymans1-0/+3
2019-06-04support: abstract some system functionsWim Taymans5-1/+123
Make a new API to hide some the implementation of eventfd, timerfd and signalfd along with clock and read/write/ioctl/close functions. We would like to have plugins use the abstractions so that we can switch them to something else when needed.
2019-06-03spa: add keys for propertiesWim Taymans8-1/+167
Define and document property keys
2019-05-31monitor: return factory_name in the object_infoWim Taymans2-2/+2
Pass a factory_name in the object_info of monitor and device. Restructure the factory name to mean something functionaly. With the factory to library mapping this then means that the implementation of certain factories can be configured in the config file.
2019-05-30monitor: Remove monitor eventWim Taymans5-70/+28
Remove the monitor event and emit events with structures like we do for the devices.
2019-05-29spa/include: install missing headersGeorge Kiagiadakis1-0/+3
2019-05-28spa: add result typeWim Taymans4-8/+13
We need this to know the type of result, especially when serializing.
2019-05-28device: add sync operationWim Taymans1-3/+22
2019-05-28add index of method, event and callback definesWim Taymans2-0/+39
2019-05-28add const to spa_event and spa_commandWim Taymans3-3/+3
2019-05-27device: fix event signalWim Taymans1-1/+1
2019-05-23interface: add an interface structiface2Wim Taymans11-163/+320
The interface struct has the type,version and methods of the interface. Make spa interfaces extend from spa_interface and make a separate structure for the methods. Pass a generic void* as the first argument of methods, like we don in PipeWire. Bundle the methods + implementation in a versioned inteface and use that to invoke methods. This way we can do version checks on the methods. Make resource and proxy interfaces that we can can call. We can then make the core interfaces independent on proxy/resource and hide them in the lower layers. Add add_listener method to methods of core interfaces, just like SPA.
2019-05-20Move implementation helpers to utilsWim Taymans5-40/+41
2019-05-15hook: separate spa_callbacks from the hookWim Taymans5-34/+39
Make a spa_callbacks with just the functions and data and use this in the hook and objects.
2019-05-15hooks: use hook to implement the callbacksWim Taymans5-17/+56
This way we get the version check implemented and save some code.
2019-05-14hook: add option to call hook with return valueWim Taymans1-4/+13
2019-05-09pod: remove type check, it causes errorsWim Taymans1-2/+2
2019-04-23ringbuffer: use spa_memcpy so we can debug it betterWim Taymans1-4/+4
2019-04-10v4l2: map all jpeg formats to video/mjpegWim Taymans2-3/+4
2019-04-02spa: install pod/vararg.hGeorge Kiagiadakis1-0/+1
2019-03-28audioconvert: improve benchmarkWim Taymans2-30/+35
Also include the simd versions in the benchmark Fix some issues found by new test
2019-03-26audioconvert: add simple and faster resamplerWim Taymans1-1/+2
Add a sinc based resampler that, unlike speex, avoids memcpy and works directly on the source data. It also allows for ssse3 optimizations and aligned loads. It will later switch to table interpolation when doing variable rate.
2019-03-21Add FASTPATH trace logWim Taymans1-0/+12
Add a trace_fp that can be optimized away when FASTPATH is defined.
2019-03-21buffer: add DYNAMIC data flagWim Taymans2-3/+9
Add a flag to mark when a buffer data pointer can change. Improve docs for port flags
2019-03-20utils: add debugable spa_memcpyWim Taymans1-0/+11
2019-03-20audioconvert: some more optimizationsWim Taymans1-0/+8
2019-03-14control: make control links many to manyWim Taymans1-0/+6
Output controls can be linked to many input controls and many input controls can receive input from many output controls. Keep the control link information inside the link.
2019-03-08list: check for empty list before insertWim Taymans2-6/+6
We can't insert an empty list.
2019-03-01interfaces: make events return voidWim Taymans4-12/+10
Events are dispatched with hooks and have no return value. Make it possible to get the last resource and proxy sender value for where we need it.
2019-03-01node: make add_listener methodWim Taymans7-156/+222
Make struct spa_node_events for events emited from the main thread and keep the spa_node_callbacks for the data thread callbacks. The add_listener method installs the events and it's possible to install multiple handles. Adding a listener first emits the info and port_info events when installed, similar to how the PipeWire proxy bind works. This removes the need for the spa_pending_queue and makes it easier to implement the _sync versions. Add some helpers to make it easier for plugins to emit all the info to new listeners. Use the listeners for devices as well.
2019-03-01type-info: add missing type for EnumProfileWim Taymans1-0/+1
2019-02-27node: add port and node paramsWim Taymans8-23/+27
Add a new struct spa_param_info that lists the available params on a node/port and if they are readable/writable/updated. We can use this to replace and improve the PARAM_List and also to notify property change and updates. Update elements and code to deal with this new param stuff. Add port and node info to most elements and signal changes. Use async enum_params in -inspect and use the param info to know which ones to enumerate. Use the port info to know what parameters to update in the remote-node.
2019-02-25monitor: add missing fileWim Taymans1-0/+84
2019-02-25utils: don't remove pending after first callbackWim Taymans2-3/+4
Let the caller remove the pending result when finished. Use non _sync verions to enum_params in node/port/device. Set result.id in alsa and v4l2 correctly.
2019-02-25Improve async handlingWim Taymans4-90/+150
Don't use special callback in node to receive the results. Instead, use a generic result callback to receive the result. This makes things a bit more symetric and generic again because then you can choose how to match the result to the request and you have a generic way to handle both the sync and async case. We can then also remove the wait method. This also makes the remote interface and spa interface to objects very similar. Make a helper object to receive and dispatch results. Use this in the helper for enum_params. Make device use the same result callbacks.
2019-02-21node: improve pending resultsWim Taymans3-19/+19
Make a special function for pending results to make it clear that it is different from normal results. Don't pass result code to result function, it is not useful because since the callback is called, all must be fine. The spa_pending is removed from the list right before the callback and can thus be freed in the callback. Pass the spa_pending in the pending callback so that extra data can be added that way. Reuse spa_pending objects in link and nodes instead of allocating. We always only have one pending operation and we can cancel any pending previous operation by removing the pending.