← Back to team overview

desktop-packages team mailing list archive

[Bug 1485522] Re: Volume obtained is 100% in multimedia sink for sounds from app

 

Okay, some more research done today, and I also talked to Juho @
Jolla/Sailfish about it, because they would probably suffer from the
same problem.

It's somewhat of a misdesign or broken thinking, I believe. In short, Qt
allows the app to set the volume of its sounds. This is an important
feature; it allows e g, if you have two sound effects, for them to be at
different volumes. Then it opens two streams and set the stream volume
accordingly.

Ubuntu phone / PulseAudio however comes from the other direction and sets stream volume based on role. The problem comes when the app then overrides this volume. 
I believe we need to multiply both volumes somehow instead of just letting the app override it.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to pulseaudio in Ubuntu.
https://bugs.launchpad.net/bugs/1485522

Title:
  Volume obtained is 100% in multimedia sink for sounds from app

Status in Canonical System Image:
  New
Status in pulseaudio package in Ubuntu:
  Confirmed

Bug description:
  I'm not sure 100% this is a bug but it is related to
  https://bugs.launchpad.net/canonical-devices-system-image/+bug/1478506

  When the "Marron in trouble" games launches a sound the multimedia
  sink it's updated and when reading the volume it's always 100%.

  I'ts not 100% for other applications using the multimedia role, like
  the music app or other games/apps. The volume in that case is in sync
  with the volume that was previously set for it.

  This is the code from the indicator-sound where we get the 100%
  volume.

  var props_variant = yield _pconn.call ("org.PulseAudio.Ext.StreamRestore1.RestoreEntry",
  						sink_input_objp, "org.freedesktop.DBus.Properties", "Get",
  						new Variant ("(ss)", "org.PulseAudio.Ext.StreamRestore1.RestoreEntry", "Volume"),
  						null, DBusCallFlags.NONE, -1);
  				Variant tmp;
  				props_variant.get ("(v)", out tmp);
  				uint32 type = 0, volume = 0;
  				VariantIter iter = tmp.iterator ();
  				iter.next ("(uu)", &type, &volume);

  I did a workaround branch in the indicator-sound that reads the volume
  at initilaization for every role and stores any change When the sink
  is updated I read the volume in it that is already stored instead of
  reading the volume from pulse.

  I'm not convinced of that, and would like to know why I get 100%
  volume only for this particular game.

To manage notifications about this bug go to:
https://bugs.launchpad.net/canonical-devices-system-image/+bug/1485522/+subscriptions


References