Ladspa controls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I was thinking how ladspa controls could be implemented and exposed in 
the client API with the upcoming control framework. Not that I have 
plans to implement a client API for ladspa controls any time soon, but I 
want to have this some day, and the current control API doesn't seem 
optimal for supporting this functionality.

The current plan for the definition of pa_control_info is the following:

typedef struct pa_control_info {
     uint32_t index;          /**< Index of this control. */
     const char *name;        /**< Name of this control. */
     const char *description; /**< Description of this control. */
     pa_proplist *proplist;   /**< Property list for this control. */

     pa_control_type_t type;  /**< Type of this control. */
     void *data;
     /**< Type-dependent data. See pa_control_type_t for information
      * about what data each type has. */
} pa_control_info;

It seems to me that the type field should be changed from an enumeration 
to a string, so that modules would be free to introduce new control 
types without modifications to the core.

It would also be nice to be able to associate arbitrary controls 
directly with e.g. a sink. For that I propose to add an array of 
controls to pa_sink_info and friends:

struct pa_sink_info {
     ...
     struct {
         const char *key;  /* e.g. "volume" or "ladspa" */
         uint32_t control; /* index of the control */
     } *controls;
     unsigned n_controls;
};

This would make the planned volume_control field redundant. However, 
this would also make accessing the volume control more complicated, 
because applications would have to search the array. If we drop the 
volume_control field, we could add a convenience function for doing the 
search:

uint32_t pa_sink_info_get_control(const pa_sink_info *info,
                                   const char *key);

Any opinions? If nobody will complain, I will implement these proposals.

-- 
Tanu


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux