> On 5 Dec 2014, at 12:29 am, Tristan Brindle <[email protected]> wrote:
>
> Alternatively, a few minutes of Googling has turned up that Mac OS has its
> own high level sound playing API, coincidentally called NSSound[0], which has
> a broadly similar focus. So it might be possible for GSound (or GTK) to use
> NSSound on the Mac. I don’t know whether Windows also has a similar
> high-level “just play this sound and I don’t care how” API, but I’ll do some
> research.
It looks like the Windows equivalent is the PlaySound() function[0].
So I guess there are a couple of possible approaches if we don’t want GSound to
stay as a separate library:
1) Make GTK/GDK or GIO depend on libcanberra, merge the GSound API there, and
hope that DirectSound/CoreAudio Canberra backends get contributed. This may be
tricky as libcanberra appears to be more-or-less dead upstream — there have
been no commits to Lennart’s repository[1] for two years now (another thing we
can blame on systemd ;-)).
2) Come up with an API that is the intersection of libcanberra, NSSound and
Windows' PlaySound(), and add that to GTK/GDK/GIO. Off the top of my head, this
might be something like:
gdk_play_sound_for_screen(const char *sound_id_or_filename, GdkScreen
*screen);
gtk_play_sound_for_widget(const char *sound_id_or_filename, GtkWidget
*widget);
where recognised sound id names would be the (very) short list of sounds that
are approximately common to all three platforms. Custom sound files (for
example sound effects for a game or whatever) would need to be WAVs, as this is
the only format that can be played out-of-the-box everywhere. I think we’d have
to lose the nice async functions that GSound has, because Windows and Mac don’t
seem to give you callbacks when the sound has finished.
Any thoughts as to which one might be preferable?
Tristan
[0] http://msdn.microsoft.com/en-us/library/dd743680(v=vs.85).aspx
[1] http://git.0pointer.net/libcanberra.git/log/
_______________________________________________
desktop-devel-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/desktop-devel-list