pipewire/pinos/dbus/org.pinos.xml

223 lines
7.8 KiB
XML
Raw Normal View History

2015-04-21 16:02:40 +02:00
<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" >
<node xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
<!--
2015-06-30 18:06:36 +02:00
org.pinos.Daemon1:
@short_description: Main interface for the pinos daemon
2015-04-21 16:02:40 +02:00
2015-06-30 18:06:36 +02:00
Interface to get properties from the pinos daemon and to
2015-04-21 16:02:40 +02:00
establish a client connection.
-->
2015-06-30 18:06:36 +02:00
<interface name='org.pinos.Daemon1'>
2015-04-21 16:02:40 +02:00
<!-- UserName: Name of the user that started the daemon -->
2015-04-16 16:58:33 +02:00
<property name='UserName' type='s' access='read' />
2015-04-21 16:02:40 +02:00
<!-- HostName: Name of the machine the daemon is running on -->
2015-04-16 16:58:33 +02:00
<property name='HostName' type='s' access='read' />
2015-04-21 16:02:40 +02:00
<!-- Version: Version of the daemon -->
2015-04-16 16:58:33 +02:00
<property name='Version' type='s' access='read' />
2015-04-21 16:02:40 +02:00
<!-- Name: Name of the daemon -->
2015-04-16 16:58:33 +02:00
<property name='Name' type='s' access='read' />
<!-- Cookie: A random cookie for identifying this instance of Pinos -->
<property name='Cookie' type='u' access='read' />
2015-04-21 16:02:40 +02:00
<!-- Properties: Extra properties of the daemon -->
2015-04-16 16:58:33 +02:00
<property name='Properties' type='a{sv}' access='read' />
2015-04-21 16:02:40 +02:00
<!-- ConnectClient:
@properties: properties of the client
@client: a new client object
2015-06-30 18:06:36 +02:00
Register a client to the pinos daemon. A new client object
2015-04-21 16:02:40 +02:00
will be generated that should be used to perform any other
action on the server.
-->
2015-04-16 16:58:33 +02:00
<method name='ConnectClient'>
<arg type='a{sv}' name='properties' direction='in'/>
<arg type='o' name='client' direction='out'/>
</method>
</interface>
2015-04-21 16:02:40 +02:00
<!--
2015-06-30 18:06:36 +02:00
org.pinos.Client1:
2015-04-21 16:02:40 +02:00
@short_description: Main client interface
Interface obtained after connecting a client and allows for
obtaining an channel object from a source/sink.
2015-04-21 16:02:40 +02:00
-->
2015-06-30 18:06:36 +02:00
<interface name='org.pinos.Client1'>
<!-- Sender: Sender of the client -->
<property name='Sender' type='s' access='read' />
2015-04-21 16:02:40 +02:00
<!-- Name: Properties of the client -->
2015-04-16 16:58:33 +02:00
<property name='Properties' type='a{sv}' access='read' />
2015-04-21 16:02:40 +02:00
<!-- Disconnect:
Disconnect the client from the server.
-->
<method name='Disconnect'/>
<!-- CreateSourceChannel:
@direction: the channel direction, 0 = input, 1 = output
@port: the Port1 object path or / for default
@possible_formats: the possible formats that can be accepted
@properties: extra properties
@channel: the Channel object path
Create a new channel to stream to/from @port with given @possible_formats
-->
<method name='CreateChannel'>
<arg type='u' name='direction' direction='in'/>
<arg type='s' name='port' direction='in'/>
<arg type='s' name='possible_formats' direction='in'/>
<arg type='a{sv}' name='properties' direction='in'/>
<arg type='o' name='channel' direction='out'/>
</method>
<!-- CreateUploadChannel:
2015-05-15 16:41:53 +02:00
@possible_formats: the formats that can be provided
@properties: extra properties
@channel: the Channel object path
Create a new channel to upload a new stream
-->
<method name='CreateUploadChannel'>
<arg type='s' name='possible_formats' direction='in'/>
<arg type='a{sv}' name='properties' direction='in'/>
<arg type='o' name='channel' direction='out'/>
</method>
2015-04-16 16:58:33 +02:00
</interface>
2015-04-21 16:02:40 +02:00
<!--
org.pinos.Node1:
@short_description: A processing node
2015-04-21 16:02:40 +02:00
A node is an object that can consume and/or produce media.
2015-04-21 16:02:40 +02:00
-->
<interface name='org.pinos.Node1'>
<!-- Name: the name of the node -->
2015-04-16 16:58:33 +02:00
<property name='Name' type='s' access='read' />
<!-- Properties: extra node properties -->
2015-04-16 16:58:33 +02:00
<property name='Properties' type='a{sv}' access='read' />
<!-- state: state of the node
-1 = the node is in error
0 = the node is suspended, this means that the node is not
processing any data and has closed all devices if any
1 = the node is initializing
2 = the node is idle, this means no channel is consuming
the data. An idle node can become suspended.
3 = the node is running
-->
<property name='State' type='u' access='read' />
2015-04-16 16:58:33 +02:00
</interface>
2015-04-21 16:02:40 +02:00
<!--
org.pinos.Port1:
@short_description: a Node1 input/output port
2015-04-21 16:02:40 +02:00
A port on a Node1 can provide or consume data.
2015-04-21 16:02:40 +02:00
-->
<interface name='org.pinos.Port1'>
<!-- Name: the name of the port -->
<property name='Name' type='s' access='read' />
<!-- Node: the owner node of this port -->
<property name='Node' type='o' access='read' />
<!-- Direction: the direction of the port
0 = an input port
1 = an output port
-->
<property name='Direction' type='u' access='read' />
<!-- Properties: extra port properties -->
<property name='Properties' type='a{sv}' access='read' />
<!-- PossibleFormats:
The all possible formats of this port.
-->
<property name='PossibleFormats' type='s' access='read' />
</interface>
<!--
org.pinos.Channel1:
@short_description: Interface for input/output channel
This interface is used to control the input/output of a
Port1 and start/stop the media transport.
-->
<interface name='org.pinos.Channel1'>
<!-- Client: the owner client of this channel -->
<property name='Client' type='o' access='read' />
<!-- Owner: the owner port of this channel -->
<property name='Port' type='o' access='read' />
<!-- Direction: the direction of the port
0 = an input port
1 = an output port
-->
<property name='Direction' type='u' access='read' />
<!-- Properties: extra channel properties -->
<property name='Properties' type='a{sv}' access='read' />
<!-- state: state of the channel
-1 = the channel is in error
0 = the channel is stopped
1 = the channel is starting
2 = the channel is streaming
-->
<property name='State' type='u' access='read' />
<!-- PossibleFormats:
all possible formats of the channel. This is filtered
against the accepted_formats when creating the channel.
-->
<property name='PossibleFormats' type='s' access='read' />
<!-- Format: the current streaming format -->
<property name='Format' type='s' access='read' />
2015-04-21 16:02:40 +02:00
<!-- Start:
2015-05-15 16:41:53 +02:00
@requested_format: requested formats
2015-04-21 16:02:40 +02:00
@fd: output file descriptor
@format: channel format
@properties: channel properties
2015-04-21 16:02:40 +02:00
Start the datatransfer on the channel with @requested_format.
2015-06-30 18:06:36 +02:00
The result is a file descriptor that can be used to send/receive
metadata and media. @format contains the final media format and
@properties the extra properties that describe the media format.
2015-04-21 16:02:40 +02:00
-->
<method name='Start'>
<arg type='s' name='requested_format' direction='in'/>
2015-04-16 16:58:33 +02:00
<arg type='h' name='fd' direction='out'/>
<arg type='s' name='format' direction='out'/>
<arg type='a{sv}' name='properties' direction='out'/>
2015-04-16 16:58:33 +02:00
</method>
2015-04-21 16:02:40 +02:00
<!-- Stop:
Stop data transport on the channel
2015-04-21 16:02:40 +02:00
-->
<method name='Stop'/>
2015-04-21 16:02:40 +02:00
<!-- Remove:
Remove the channel
2015-04-21 16:02:40 +02:00
-->
<method name='Remove'/>
2015-04-16 16:58:33 +02:00
2015-04-21 16:02:40 +02:00
<!-- This is a possible push based API. It would require a dbus call
for each media packet, which is probably not a good idea right now.
We would probably also want something more lightweight for sending
the properties with each fd.
2015-04-16 16:58:33 +02:00
<method name='Start'>
<arg type='a{sv}' name='props' direction='in'/>
<arg type='a{sv}' name='props' direction='out'/>
</method>
<method name='Stop'>
</method>
<signal name='NewData'>
<arg type='h' name='data' direction='out'/>
<arg type='a{sv}' name='props' direction='out'/>
</signal>
<method name='FreeData'>
<arg type='h' name='data' direction='in'/>
</method>
-->
</interface>
</node>