+
+static void Flush (audio_output_t *p_aout, bool wait)
+{
+ aout_sys_t *p_sys = p_aout->sys;
+ if (wait) {
+ mtime_t delay;
+ if (!TimeGet(p_aout, &delay))
+ msleep(delay);
+ } else {
+ p_sys->at_stop(p_sys->AudioTrack);
+ p_sys->at_flush(p_sys->AudioTrack);
+ p_sys->samples_written = 0;
+ p_sys->at_start(p_sys->AudioTrack);
+ }
+}
+
+static int Open(vlc_object_t *obj)
+{
+ audio_output_t *aout = (audio_output_t *)obj;
+ aout_sys_t *sys = malloc(sizeof (*sys));
+
+ if (unlikely(sys == NULL))
+ return VLC_ENOMEM;
+
+ sys->libmedia = InitLibrary(sys);
+ if (sys->libmedia == NULL) {
+ msg_Err(aout, "Could not initialize libmedia.so!");
+ free(sys);
+ return VLC_EGENERIC;
+ }
+
+ aout->sys = sys;
+ aout->start = Start;
+ aout->stop = Stop;
+ aout_SoftVolumeInit(aout);
+ return VLC_SUCCESS;
+}
+
+static void Close(vlc_object_t *obj)
+{
+ audio_output_t *aout = (audio_output_t *)obj;
+ aout_sys_t *sys = aout->sys;
+
+ dlclose(sys->libmedia);
+ free(sys);
+}