19.07.2011 22:06, Mauro Carvalho Chehab wrote:
Unless I am mistaken, this control is usually called a "Master Playback Switch" in the alsa world.
No, you're mistaken: on most boards, you have only one volume control/switch, for capture. So, it would be a "master capture switch",
Well, for such a cards we don't need to export the additional element, they are fine already. We can rename it to "Master Capture Switch", or may not.
but I don't think that there's such alsa "generic" volume control. Even in the case where you have a volume control for the LINE OUT pin[1], in general, you also need to unmute the capture, so, it would be a "master capture and LINE OUT switch", and, for sure alsa currently not provide anything like that.
I think you can still call it a "Master Capture Switch", if it enables everything.
So, am I right that the only problem is that it is not exported to the user by some drivers right now?
No, you're mistaken again. Such "master capture and LINE OUT switch" type of control _is_exported_ via the V4L2 API as V4L2_CID_AUDIO_MUTE.
Sorry, I meant the _alsa_ drivers here. So, to rephrase:
So, am I right that the only problem is that it is not exported to the user by some _alsa_ drivers right now?
Some applications like mplayer don't use V4L2_CID_AUDIO_MUTE to unmute a video device. They assume the current behavior that starting video also unmutes audio. (mplayer is not symmetric with regard to the usage of this control, as it uses V4L2_CID_AUDIO_MUTE to mute the device after the end of a capture).
So, changing the logic at the drivers will break existing applications.
I do not propose changing any V4L2 ioctls, my change concerns only the alsa driver.
It is probably doable to split the mute control for the LINE OUT pin from the mute control of the PCM capture. Such patch would make sense, as the alsa capture doesn't need to touch at the line out pin, but the patch should let V4L2_CID_AUDIO_MUTE control to affect both LINE OUT and PCM capture mutes, otherwise applications will break.
That's exactly what I was talking about from the very beginning, saying that the single control currently controls way too much, and providing an examples about 2 separate controls. But... I haven't found the way to implement that, not sure of this is possible at all. :(