Page MenuHomePhabricator

Epulse
Updated 1,821 Days AgoPublic

Epulse

Software structure

What Epulse brings with:

  • pulseaudio integration in ecore
  • A gadget for enlightenment to control the volume of the desired backend
  • A backend to abstract the sound manipulating from the ui
  • Two backends, one for alsa, one for pulseaudio.

Feature Whishlist

To think about

  • ALSA does not support event subscribing, so there should be something like a "ping" to the backend that the backend can refresh things like the cards etc.

What needs the backend

Events callled by the backend:

  • sink_change
  • sink_add
  • sink_del
  • playback_add
  • playback_change
  • playback_del
  • source_change
  • source_add
  • source_del
  • source_input_change
  • source_input_add
  • source_input_de

API for:
+ init()
+ shutdown()

+ volume_get(Sink):int
+ volume_set(Sink, Volume v)

+ mute_get(Sink):Bool
+ mute_set(Sink, Bool)

+ sink_default_name_support():Bool
+ sink_default_name_get():Sink
+ sink_default_name_set(Sink)

+ source_default_name_support():Bool
+ source_default_name_get():Sink
+ source_default_name_set(Sink)

+ change_sink_supports():Bool
+ change_sink(Playback, Sink)

+ change_source_supports():Bool
+ change_source(Source_Input, Source)

+ supports_change_output_device():Bool
+ channel_default_name_get(Sink):Channel
+ channel_default_name_set(Sink, Channel)

+ channels_get(Sink):Channel[]

structs:

Volume:

int channel_count;
int[] volumes;       <= the id of the array is the id of the channel and the value the volume

Sink

const char  *name;
void *b_data;

Playback

const char *name;
void *b_data;

Source

const char *name;
void *b_data;

Source-Input

const char *name;
void *b_data;

Channel

const char *name;
int idx;
Last Author
bu5hm4n
Last Edited
Jul 20 2014, 5:00 AM
Projects
None
Subscribers
None