<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    17.02.2014 16:36, Arun Raghavan wrote:<br>
    <blockquote
cite="mid:CACuU-+h7KxV0FMoqzKixkzUBxEVZCzCi8C1wKtzs4w1gW5qBcg@mail.gmail.com"
      type="cite">
      <p dir="ltr">(Resend including list as well)</p>
      <div class="gmail_quote">On 17 Feb 2014 09:30, "Arun Raghavan"
        <<a moz-do-not-send="true" href="mailto:arun@accosted.net">arun@accosted.net</a>>
        wrote:<br type="attribution">
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <br>
          We have 3 orthogonal issues here:<br>
          <br>
          1. Addition of volume control objects / information to allow
          balance<br>
          to be represented adequately<br>
        </blockquote>
      </div>
    </blockquote>
    <br>
    This is not limited to balance information. Please split this issue,
    see the other half below.<br>
    <br>
    <blockquote
cite="mid:CACuU-+h7KxV0FMoqzKixkzUBxEVZCzCi8C1wKtzs4w1gW5qBcg@mail.gmail.com"
      type="cite">
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <br>
          2. Creation and control of volume classes<br>
          <br>
          3. Adding a "main volume" concept<br>
          <br>
          I suggest we discuss each in a separate thread to keep the
          discussion<br>
          manageable. Right now, I'll address the first, viz. volume
          control<br>
          objects.<br>
        </blockquote>
      </div>
    </blockquote>
    <br>
    OK, ignoring (2) and (3) in this e-mail.<br>
    <br>
    <blockquote
cite="mid:CACuU-+h7KxV0FMoqzKixkzUBxEVZCzCi8C1wKtzs4w1gW5qBcg@mail.gmail.com"
      type="cite">
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <br>
          I'm not completely clear what you're trying to achieve with
          volume<br>
          control objects right now - are you just trying to fix the
          balance<br>
          problem, or ...? I see the point you're making about the
          potential<br>
          applicability of associating multiple volume controls with a
          single<br>
          device, but I'd like to understand what you'll be solving with
          the<br>
          patch set you'd be submitting with this infrastructure.<br>
        </blockquote>
      </div>
    </blockquote>
    <br>
    As far as I understood Tanu's explanations, the problem is that
    there are the following assumptions currently hard-coded into
    PulseAudio:<br>
    <br>
    1. every volume belongs to either a source, or a sink, or a sink
    input, or a source output;<br>
    2. it belongs to exactly one such object;<br>
    3. every such object has exactly one volume.<br>
    <br>
    A sensible model has been demonstrated (as a replacement of the
    current logic) that doesn't fit into those assumptions. E.g. (here I
    am deliberately trying to "misinterpret" and/or augment the earlier
    e-mails by Tanu, just to see if this modification breaks any of his
    own assumptions):<br>
    <br>
    A. For each sink, there are two volumes: "System" and
    "Entertainment". None of them can be said to be the system's main
    volume. An attempt to read or adjust the sink's volume via legacy
    tools follows the usual flat-volume logic and changes both.<br>
    B. These volumes exist and are adjustable via new tools even if
    nothing is playing through that sink.<br>
    C. Any stream playing through a sink does not have an
    independently-adjustable volume. It effectively assumes one of the
    "System" or "Entertainment" volumes belonging to the sink, depending
    on its media role. An attempt to read or change the stream volume
    via legacy interfaces reads or adjusts one of the "System" or
    "Entertainment" volumes belonging to the sink, as appropriate.<br>
    <br>
    Here, (A) breaks (3) for sinks and (2) for streams, (B) breaks
    nothing else (but, if these volumes were global instead of per-sink,
    it would break (1)), and (C) breaks (2) and (3) for streams.<br>
    <br>
    So, Tanu tries to introduce a volume object, as an entity to
    represent a volume that Just Exists (potentially, independently from
    streams, sinks and sources), has a human-readable label, and methods
    to enumerate all such volume objects.<br>
    <br>
    I hope this e-mail helps you better understand the "Addition of
    volume control objects" issue that you brought up. Sorry if this
    ends up misrepresenting the idea.<br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Alexander E. Patrakov</pre>
  </body>
</html>