On 11/15/2011 11:03 AM, Colin Guthrie wrote:
'Twas brillig, and David Henningsson at 15/11/11 06:03 did gyre and gimble:
On 11/14/2011 08:56 PM, Colin Guthrie wrote:
In line with the client API proposal, here's the matching protocol
proposal.

Any objections?


## v25, implemented by>= 2.0

When port availability changes, send a subscription event for the
owning card.

## v26, implemented by>= 2.0

In reply from PA_COMMAND_GET_CARD_INFO (and thus
PA_COMMAND_GET_CARD_INFO_LIST), the following is added:

      uint32_t n_ports

....followed by n_ports extended port entries, which look like this:

      string name
      string description
      uint32_t priority
      uint32_t available

Can we make this a uint8_t? I know the protocol might send a uint32_t
for availability elsewhere but there is no reason for this to be carried
through where it's not needed.

Sure. I'll value the consistency over the three bytes saved here, but
it's no big deal.

See if Arun or Tanu have an opinion on this one. My reasoning being that
it should be uint8_t and if you do end up doing another update for
Ubuntu's PA before we do a 2.0 release, you might consider tweaking the
existing value to uint8_t... as it would only really affect users
running UI tools with older lib vs. newer daemon, it's very unlikely to
be a practical problem if you were to push a "streamlined" fix. Just
gives us a little bit of room for improvement should the opportunity
crop up.

Well, updating a uint32_t -> uint8_t change in the protocol to a stable Ubuntu version; with potential of quite some breakage that will cause for users running a stable version of Ubuntu - it's just not justifiable. (And even if it was, it would give PulseAudio bad reputation. We don't need that as an upstream either.)

      uint8_t direction
      uint32_t n_profiles
      string profile_name_1
      ...
      string profile_name_n

Profile names must match earlier sent profile names for the same card.

Seems OK.



Can we get an icon in here somehow? IMO each port should have it's own
icon to allow for Speakers to be presented differently in UIs to
Headphones.

  From what I remember, this is done via a proplist for the other bits of
the system... as there was some talk of eventually adding a proplist to
ports, perhaps it's worth adding it in to the protocol and only
populating "device.icon_name" initially (or even leaving it totally
blank for now and doing the icon stuff later)?

Well, there's nothing keeping us from adding a v27 when we see the need
for an icon.

Yeah but if we can avoid unnecessary version bumps then mores the
better. The code is messy enough with all the version conditions, so if
we can get it right that's good.

Ok, so how about adding a proplist then? We can then fill that up with icon names and possibly other stuff as needed. It just feels like icon names belong to a proplist - because it's in a proplist for other objects.

However, you talked in Prague about having some kind of API where you
could get additional information about a port, e g "last seen". I
thought the icon name would be taken from there as well?

Yeah, although it would be more of a "history" API that would very much
be optional. It's really just gathers information about what has been
seen before. IMO the real info should still be available via official
introspection mechanism.

Thinking further ahead; you might want to be able to set/get per-port
cvolumes on an inactive port: Imagine our user first listens to death
metal at high volume through the speakers, then neighbour comes up and
complains and so the user immediately switches to headphones, but once
the neighbour has gone to sleep the user switches back to speakers -
this time at a lower volume, so that the neighbour does not wake up. The
user then wants to adjust the speaker volume even though headphones are
currently being used. We don't have to resolve all the details of that
now either, but it can be good to know where such functionality would
fit into the greater picture.

This is technically already possible. Just use the stream restore API.

I haven't looked into the stream (device?) restore API, but you say "technically" - is it also the method you officially recommend for volume control UIs?

--
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to