Commit 051c4850 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

aout: report volume from aout plugin to core

parent 6699fb71
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
# include "config.h" # include "config.h"
#endif #endif
#include <math.h>
#include <assert.h> #include <assert.h>
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_aout.h> #include <vlc_aout.h>
...@@ -289,6 +291,8 @@ void aout_VolumeNoneInit (audio_output_t *aout) ...@@ -289,6 +291,8 @@ void aout_VolumeNoneInit (audio_output_t *aout)
* other thread knows of this audio output instance. * other thread knows of this audio output instance.
aout_assert_locked (aout); */ aout_assert_locked (aout); */
aout->pf_volume_set = aout_VolumeNoneSet; aout->pf_volume_set = aout_VolumeNoneSet;
var_Destroy (aout, "volume");
var_Destroy (aout, "mute");
} }
/** /**
...@@ -340,6 +344,8 @@ void aout_VolumeHardInit (audio_output_t *aout, aout_volume_cb setter) ...@@ -340,6 +344,8 @@ void aout_VolumeHardInit (audio_output_t *aout, aout_volume_cb setter)
{ {
aout_assert_locked (aout); aout_assert_locked (aout);
aout->pf_volume_set = setter; aout->pf_volume_set = setter;
var_Create (aout, "volume", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT);
var_Create (aout, "mute", VLC_VAR_BOOL|VLC_VAR_DOINHERIT);
} }
/** /**
...@@ -348,17 +354,21 @@ void aout_VolumeHardInit (audio_output_t *aout, aout_volume_cb setter) ...@@ -348,17 +354,21 @@ void aout_VolumeHardInit (audio_output_t *aout, aout_volume_cb setter)
* @param setter volume setter callback * @param setter volume setter callback
* @param volume current custom volume * @param volume current custom volume
* @param mute current mute flag * @param mute current mute flag
* @note Audio output plugins that cannot apply the volume *
* should call this function during activation. * @warning The caller (i.e. the audio output plug-in) is responsible for
* interlocking and synchronizing call to this function and to the
* audio_output_t.pf_volume_set callback. This ensures that VLC gets correct
* volume information (possibly with a latency).
*/ */
void aout_VolumeHardSet (audio_output_t *aout, float volume, bool mute) void aout_VolumeHardSet (audio_output_t *aout, float volume, bool mute)
{ {
#warning FIXME audio_volume_t vol = lroundf (volume * (float)AOUT_VOLUME_DEFAULT);
/* REVISIT: This is tricky. We cannot acquire the volume lock as this gets
* called from the audio output (it would cause a lock inversion). /* We cannot acquire the volume lock as this gets called from the audio
* We also should not override the input manager volume, but only the * output plug-in (it would cause a lock inversion). */
* volume of the current audio output... FIXME */ var_SetInteger (aout, "volume", vol);
msg_Err (aout, "%s(%f, %u)", __func__, volume, (unsigned)mute); var_SetBool (aout, "mute", mute);
var_TriggerCallback (aout, "intf-change");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment