openvortex-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Openvortex-dev] Re: mixer control - Captuer Source - rename item name i


From: Raymond
Subject: [Openvortex-dev] Re: mixer control - Captuer Source - rename item name in enumerated control
Date: Wed, 14 Sep 2005 18:31:47 +0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.7.8) Gecko/20050603 Fedora/1.7.8-1.1.1.legacy


Is it possible to detect which daugther card is connected (e.g Yamaha
DB50XG, TurtleBeach Cancun FX, Roland SCD-15...) and replace "Video"
with the name of daugther card on the mixer control ?

The hardware driver know how the hardware are connected more than the
alsa-lib

Not only the capture source will need to be changed.

numid=33,iface=MIXER,name='Video Playback Switch'
  ; type=BOOLEAN,access=rw---,values=1
  : values=on
numid=34,iface=MIXER,name='Video Playback Volume'
  ; type=INTEGER,access=rw---,values=2,min=0,max=31,step=0
  : values=9,9

It seem that get_compare_weight() use pre-defined names to perform
matching


Takashi Iwai wrote:
At Tue, 13 Sep 2005 23:22:14 +0800,
Raymond wrote:

Is it possible to rename "Video" to "MPU401" in enumerated "Capture Source" mixer control by the au88x0 driver ?

numid=39,iface=MIXER,name='Capture Source'
  ; type=ENUMERATED,access=rw---,values=2,items=8
  ; Item #0 'Mic'
  ; Item #1 'CD'
  ; Item #2 'Video' <---------------MPU 401 / wavetable daugther card
  ; Item #3 'Aux'
  ; Item #4 'Line'
  ; Item #5 'Mix'
  ; Item #6 'Mix Mono'
  ; Item #7 'Phone'
  : values=0,0


Currently, you need an ugly hack.

Find "Capture Source" control and replace the private_value field with
the point to a new own struct ac97_enum.  For example,

/* taken from ac97/ac97_local.h */
#define AC97_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xtexts) \
{ .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
  .mask = xmask, .texts = xtexts }

static const char *my_own_sel[] = { "Mic", "CD", "WaveTable", "Aux",
"line", Mix", "Mix Mono", "Phone" };

static const struct ac97_enum my_own_enum =
AC97_ENUM_DOUBLE(AC97_REC_SEL, 8, 0, 8, my_own_sel);


Then use snd_ctl_find_id() to get a snd_kcontrol_t object, and
replace its private_value field with (unsigned long)&my_own_enum.


Takashi







reply via email to

[Prev in Thread] Current Thread [Next in Thread]