Ancillary classes

Exceptions

  • LibPulseError(Exception)

  • LibPulseClosedError(LibPulseError)

  • LibPulseStateError(LibPulseError)

  • LibPulseOperationError(LibPulseError)

  • LibPulseClosedIteratorError(LibPulseError)

  • LibPulseInstanceExistsError(LibPulseError)

  • LibPulseArgumentError(LibPulseError)

PulseEvent

An instance of PulseEvent is returned by the async iterator returned by the get_events_iterator() method of a LibPulse instance.

Its attributes are:

  • facility

    str - name of the facility, for example sink.

  • index

    int - index of the facility.

  • type

    str - type of the event, either new, change or remove.

PulseStructure

class PulseStructure(c_struct, c_structure_type)

  • c_struct

    ctypes structure such as a ctypes pointer dereferenced using its contents attribute.

  • c_structure_type

    subclass of ctypes Structure corresponding to the type of the c_struct structure. It is one of the values of the structures defined in the struct_ctypes dictionary, attribute of the libpulse module.

An instance of this class is the representation of a pulse ctypes structure.

Instantiating a PulseStructure class constructs a pure Python object as a deep copy of a ctypes structure using the _fields_ class attribute of the corresponding subclass of the ctypes Structure class (one of the values of the struct_ctypes dictionary, see the pulse_structs module and the ctypes pulse structures section).

A deep copy of the pulse structure pointed to by one of the parameters of a callback (one of the results of the corresponding LibPulse method) is needed because the memory pointed to by the pointer is short-lived, only valid during the execution of the callback.

The PulseStructure instance embeds PulseStructure instances for those of its members that are nested pulse structures or pointers to other pulse structures (recursively). The attributes names of the PulseStructure instance are the names of the members of the pulse structure as listed in the pulse_structs module. Their values are of type int, float, bytes, PropList or PulseStructure.

This class is used internally by callbacks of the LibPulse class and by the to_pulse_structure() method of the CtypesPulseStructure class.

PropList

When the type of the member of a pulse structure is proplist *, the corresponding PulseStructure attribute is set to an instance of the PropList class.

The PropList class is a subclass of dict and the elements of an instance can be accessed as the elements of a dictionary. Instantiation of this class skips all the elements of the proplist that are not of the bytes type. The keys and values of the dictionary are strings (bytes are decoded to str).

AsyncioTasks

An instance of AsyncioTasks keeps track of the active asyncio tasks that have been created using its create_task() method. It is also an iterator that can iterate over these tasks. See the Session management section for how to use it.

CtypesPulseStructure

An abstract class whose subclasses provide the reverse of what does the PulseStructure class by building a ctypes structure whose pointer can be used as the parameter of one of the pulse functions. Those subclasses are:

  • Pa_buffer_attr

  • Pa_cvolume

  • Pa_channel_map

  • Pa_format_info

  • Pa_sample_spec

Instantiate one of these subclasses with a list of the pulse structure values and use byref() to get the pointer. For example:

values = [3, 44100, 2]
ptr = libpulse.Pa_sample_spec(*values).byref()

See also ctypes pulse structures.