* snd_pcm_hw_params_get_period_size() returning 0 @ 2006-04-01 1:00 Carlos Munoz 2006-04-01 1:57 ` Lee Revell 2006-04-01 1:59 ` Lee Revell 0 siblings, 2 replies; 10+ messages in thread From: Carlos Munoz @ 2006-04-01 1:00 UTC (permalink / raw) To: alsa-devel Hi all, I tested my new driver with a simple application I wrote. I can play and record pcm files with no problem. However, I'm unable to get aplay to work. aplay just hangs. I was able to trace it to aplay.c:playback_go(). aplay is stuck in the while loop. After closer examination it turns out that the reason is because previously snd_pcm_hw_params_get_period_size() had set the period size to 0. Does any one know why snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it something the driver did/didn't do ? Thanks, Carlos ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-01 1:00 snd_pcm_hw_params_get_period_size() returning 0 Carlos Munoz @ 2006-04-01 1:57 ` Lee Revell 2006-04-01 1:59 ` Lee Revell 1 sibling, 0 replies; 10+ messages in thread From: Lee Revell @ 2006-04-01 1:57 UTC (permalink / raw) To: Carlos Munoz; +Cc: alsa-devel On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: > Does > any one know why > snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it > something the driver did/didn't do ? > Your hw_params callback should have set this to a correct value, try adding printks. Lee ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-01 1:00 snd_pcm_hw_params_get_period_size() returning 0 Carlos Munoz 2006-04-01 1:57 ` Lee Revell @ 2006-04-01 1:59 ` Lee Revell 2006-04-01 2:20 ` Carlos Munoz 1 sibling, 1 reply; 10+ messages in thread From: Lee Revell @ 2006-04-01 1:59 UTC (permalink / raw) To: Carlos Munoz; +Cc: alsa-devel On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: > Does > any one know why > snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it > something the driver did/didn't do ? > Argh, please disregard last message, that's not how the hw_params callback works :-( Lee ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-01 1:59 ` Lee Revell @ 2006-04-01 2:20 ` Carlos Munoz 2006-04-03 10:22 ` Takashi Iwai 0 siblings, 1 reply; 10+ messages in thread From: Carlos Munoz @ 2006-04-01 2:20 UTC (permalink / raw) To: Lee Revell; +Cc: alsa-devel Lee Revell wrote: >On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: > > >>Does >>any one know why >>snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it >>something the driver did/didn't do ? >> >> >> > >Argh, please disregard last message, that's not how the hw_params >callback works :-( > >Lee > > > Hi Lee, I digged further and this is what I found. snd_pcm_hw_params_get_period_size(...., int *val) does retrieve the correct period size and updates val with it. However, val does not match the address passed to it. I mean the caller of snd_pcm_hw_params_get_period_size(.... 0x41becc) passes the address of where the period size is to be stored as 0x41becc but snd_pcm_hw_params_get_period_size() gets 0x7b83c0d8 and that's where it puts the period size. This is on the Renesas SH7343 processor. alsa-lib is a dynamic library. Should I expect the variable address be the same ? Thanks, Carlos ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-01 2:20 ` Carlos Munoz @ 2006-04-03 10:22 ` Takashi Iwai 2006-04-03 17:46 ` Carlos Munoz 0 siblings, 1 reply; 10+ messages in thread From: Takashi Iwai @ 2006-04-03 10:22 UTC (permalink / raw) To: Carlos Munoz; +Cc: Lee Revell, alsa-devel At Fri, 31 Mar 2006 18:20:42 -0800, Carlos Munoz wrote: > > Lee Revell wrote: > > >On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: > > > > > >>Does > >>any one know why > >>snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it > >>something the driver did/didn't do ? > >> > >> > >> > > > >Argh, please disregard last message, that's not how the hw_params > >callback works :-( > > > >Lee > > > > > > > Hi Lee, > > I digged further and this is what I found. > > snd_pcm_hw_params_get_period_size(...., int *val) does retrieve the > correct period size and updates val with it. However, val does not match > the address passed to it. I mean the caller of > snd_pcm_hw_params_get_period_size(.... 0x41becc) passes the address of > where the period size is to be stored as 0x41becc but > snd_pcm_hw_params_get_period_size() gets 0x7b83c0d8 and that's where it > puts the period size. > > This is on the Renesas SH7343 processor. alsa-lib is a dynamic library. > Should I expect the variable address be the same ? No. They must be different. The value is stored to the original address only when no error returns. Unless that, a temporary variable is used. That's why you see two distinct addresses. Takashi ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-03 10:22 ` Takashi Iwai @ 2006-04-03 17:46 ` Carlos Munoz 2006-04-03 18:33 ` Takashi Iwai 0 siblings, 1 reply; 10+ messages in thread From: Carlos Munoz @ 2006-04-03 17:46 UTC (permalink / raw) To: Takashi Iwai; +Cc: Lee Revell, alsa-devel Takashi Iwai wrote: >At Fri, 31 Mar 2006 18:20:42 -0800, >Carlos Munoz wrote: > > >>Lee Revell wrote: >> >> >> >>>On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: >>> >>> >>> >>> >>>>Does >>>>any one know why >>>>snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it >>>>something the driver did/didn't do ? >>>> >>>> >>>> >>>> >>>> >>>Argh, please disregard last message, that's not how the hw_params >>>callback works :-( >>> >>>Lee >>> >>> >>> >>> >>> >>Hi Lee, >> >>I digged further and this is what I found. >> >>snd_pcm_hw_params_get_period_size(...., int *val) does retrieve the >>correct period size and updates val with it. However, val does not match >>the address passed to it. I mean the caller of >>snd_pcm_hw_params_get_period_size(.... 0x41becc) passes the address of >>where the period size is to be stored as 0x41becc but >>snd_pcm_hw_params_get_period_size() gets 0x7b83c0d8 and that's where it >>puts the period size. >> >>This is on the Renesas SH7343 processor. alsa-lib is a dynamic library. >>Should I expect the variable address be the same ? >> >> > >No. They must be different. The value is stored to the original >address only when no error returns. Unless that, a temporary variable >is used. That's why you see two distinct addresses. > > >Takashi > > > > Hi Takashi, I understand what you are saying. However, this is not the case here. The original address is wrong. I print the value of val (not _val) passed to snd_pcm_hw_params_get_period_size() and it is wrong. See the code: #ifndef DOXYGEN int INTERNAL(snd_pcm_hw_params_get_period_size)(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir) #else int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir) #endif { unsigned int _val; printf("alsa-lib:snd_pcm_hw_params_get_period_size() - params=%p val=%p dir=%p\n", params, val, dir); int err = snd_pcm_hw_param_get(params, SND_PCM_HW_PARAM_PERIOD_SIZE, &_val, dir); if (err >= 0) *val = _val; return err; } This printf shows val has an incorrect value (dir is also incorrect). I don't think it's related to the alsa-lib but maybe a problem with our build tool chain. Thanks, Carlos Munoz ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-03 17:46 ` Carlos Munoz @ 2006-04-03 18:33 ` Takashi Iwai 2006-04-03 18:38 ` Jaroslav Kysela 0 siblings, 1 reply; 10+ messages in thread From: Takashi Iwai @ 2006-04-03 18:33 UTC (permalink / raw) To: Carlos Munoz; +Cc: Lee Revell, alsa-devel At Mon, 03 Apr 2006 10:46:34 -0700, Carlos Munoz wrote: > > Takashi Iwai wrote: > > >At Fri, 31 Mar 2006 18:20:42 -0800, > >Carlos Munoz wrote: > > > > > >>Lee Revell wrote: > >> > >> > >> > >>>On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: > >>> > >>> > >>> > >>> > >>>>Does > >>>>any one know why > >>>>snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it > >>>>something the driver did/didn't do ? > >>>> > >>>> > >>>> > >>>> > >>>> > >>>Argh, please disregard last message, that's not how the hw_params > >>>callback works :-( > >>> > >>>Lee > >>> > >>> > >>> > >>> > >>> > >>Hi Lee, > >> > >>I digged further and this is what I found. > >> > >>snd_pcm_hw_params_get_period_size(...., int *val) does retrieve the > >>correct period size and updates val with it. However, val does not match > >>the address passed to it. I mean the caller of > >>snd_pcm_hw_params_get_period_size(.... 0x41becc) passes the address of > >>where the period size is to be stored as 0x41becc but > >>snd_pcm_hw_params_get_period_size() gets 0x7b83c0d8 and that's where it > >>puts the period size. > >> > >>This is on the Renesas SH7343 processor. alsa-lib is a dynamic library. > >>Should I expect the variable address be the same ? > >> > >> > > > >No. They must be different. The value is stored to the original > >address only when no error returns. Unless that, a temporary variable > >is used. That's why you see two distinct addresses. > > > > > >Takashi > > > > > > > > > Hi Takashi, > > I understand what you are saying. However, this is not the case here. > The original address is wrong. I print the value of val (not _val) > passed to snd_pcm_hw_params_get_period_size() and it is wrong. See the code: > > #ifndef DOXYGEN > int INTERNAL(snd_pcm_hw_params_get_period_size)(const > snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir) > #else > int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *params, > snd_pcm_uframes_t *val, int *dir) > #endif > { > unsigned int _val; > printf("alsa-lib:snd_pcm_hw_params_get_period_size() - params=%p > val=%p dir=%p\n", > params, val, dir); > int err = snd_pcm_hw_param_get(params, SND_PCM_HW_PARAM_PERIOD_SIZE, > &_val, dir); > if (err >= 0) > *val = _val; > > return err; > } > > > This printf shows val has an incorrect value (dir is also incorrect). I > don't think it's related to the alsa-lib but maybe a problem with our > build tool chain. OK, let me know if it turnes out to be a bug in alsa-lib :) Takashi ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-03 18:33 ` Takashi Iwai @ 2006-04-03 18:38 ` Jaroslav Kysela 2006-04-03 19:37 ` Carlos Munoz 0 siblings, 1 reply; 10+ messages in thread From: Jaroslav Kysela @ 2006-04-03 18:38 UTC (permalink / raw) To: Takashi Iwai; +Cc: Carlos Munoz, Lee Revell, alsa-devel On Mon, 3 Apr 2006, Takashi Iwai wrote: > At Mon, 03 Apr 2006 10:46:34 -0700, > Carlos Munoz wrote: > > > > Takashi Iwai wrote: > > > > >At Fri, 31 Mar 2006 18:20:42 -0800, > > >Carlos Munoz wrote: > > > > > > > > >>Lee Revell wrote: > > >> > > >> > > >> > > >>>On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: > > >>> > > >>> > > >>> > > >>> > > >>>>Does > > >>>>any one know why > > >>>>snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it > > >>>>something the driver did/didn't do ? > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>Argh, please disregard last message, that's not how the hw_params > > >>>callback works :-( > > >>> > > >>>Lee > > >>> > > >>> > > >>> > > >>> > > >>> > > >>Hi Lee, > > >> > > >>I digged further and this is what I found. > > >> > > >>snd_pcm_hw_params_get_period_size(...., int *val) does retrieve the > > >>correct period size and updates val with it. However, val does not match > > >>the address passed to it. I mean the caller of > > >>snd_pcm_hw_params_get_period_size(.... 0x41becc) passes the address of > > >>where the period size is to be stored as 0x41becc but > > >>snd_pcm_hw_params_get_period_size() gets 0x7b83c0d8 and that's where it > > >>puts the period size. > > >> > > >>This is on the Renesas SH7343 processor. alsa-lib is a dynamic library. > > >>Should I expect the variable address be the same ? > > >> > > >> > > > > > >No. They must be different. The value is stored to the original > > >address only when no error returns. Unless that, a temporary variable > > >is used. That's why you see two distinct addresses. > > > > > > > > >Takashi > > > > > > > > > > > > > > Hi Takashi, > > > > I understand what you are saying. However, this is not the case here. > > The original address is wrong. I print the value of val (not _val) > > passed to snd_pcm_hw_params_get_period_size() and it is wrong. See the code: > > > > #ifndef DOXYGEN > > int INTERNAL(snd_pcm_hw_params_get_period_size)(const > > snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir) > > #else > > int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *params, > > snd_pcm_uframes_t *val, int *dir) > > #endif > > { > > unsigned int _val; > > printf("alsa-lib:snd_pcm_hw_params_get_period_size() - params=%p > > val=%p dir=%p\n", > > params, val, dir); > > int err = snd_pcm_hw_param_get(params, SND_PCM_HW_PARAM_PERIOD_SIZE, > > &_val, dir); > > if (err >= 0) > > *val = _val; > > > > return err; > > } > > > > > > This printf shows val has an incorrect value (dir is also incorrect). I > > don't think it's related to the alsa-lib but maybe a problem with our > > build tool chain. > > OK, let me know if it turnes out to be a bug in alsa-lib :) Or binutils. What does 'nm aplay | grep snd_pcm_hw_params_get_period_size' show? Also, you might try to configure alsa-lib with --with-versioned=no . Jaroslav ----- Jaroslav Kysela <perex@suse.cz> Linux Kernel Sound Maintainer ALSA Project, SUSE Labs ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-03 18:38 ` Jaroslav Kysela @ 2006-04-03 19:37 ` Carlos Munoz 2006-04-05 17:53 ` Carlos Munoz 0 siblings, 1 reply; 10+ messages in thread From: Carlos Munoz @ 2006-04-03 19:37 UTC (permalink / raw) To: Jaroslav Kysela; +Cc: Takashi Iwai, Lee Revell, alsa-devel Jaroslav Kysela wrote: >On Mon, 3 Apr 2006, Takashi Iwai wrote: > > > >>At Mon, 03 Apr 2006 10:46:34 -0700, >>Carlos Munoz wrote: >> >> >>>Takashi Iwai wrote: >>> >>> >>> >>>>At Fri, 31 Mar 2006 18:20:42 -0800, >>>>Carlos Munoz wrote: >>>> >>>> >>>> >>>> >>>>>Lee Revell wrote: >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>>On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>>Does >>>>>>>any one know why >>>>>>>snd_pcm_hw_params_get_period_size() would be returning 0 ? Is it >>>>>>>something the driver did/didn't do ? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>Argh, please disregard last message, that's not how the hw_params >>>>>>callback works :-( >>>>>> >>>>>>Lee >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>Hi Lee, >>>>> >>>>>I digged further and this is what I found. >>>>> >>>>>snd_pcm_hw_params_get_period_size(...., int *val) does retrieve the >>>>>correct period size and updates val with it. However, val does not match >>>>>the address passed to it. I mean the caller of >>>>>snd_pcm_hw_params_get_period_size(.... 0x41becc) passes the address of >>>>>where the period size is to be stored as 0x41becc but >>>>>snd_pcm_hw_params_get_period_size() gets 0x7b83c0d8 and that's where it >>>>>puts the period size. >>>>> >>>>>This is on the Renesas SH7343 processor. alsa-lib is a dynamic library. >>>>>Should I expect the variable address be the same ? >>>>> >>>>> >>>>> >>>>> >>>>No. They must be different. The value is stored to the original >>>>address only when no error returns. Unless that, a temporary variable >>>>is used. That's why you see two distinct addresses. >>>> >>>> >>>>Takashi >>>> >>>> >>>> >>>> >>>> >>>> >>>Hi Takashi, >>> >>>I understand what you are saying. However, this is not the case here. >>>The original address is wrong. I print the value of val (not _val) >>>passed to snd_pcm_hw_params_get_period_size() and it is wrong. See the code: >>> >>>#ifndef DOXYGEN >>>int INTERNAL(snd_pcm_hw_params_get_period_size)(const >>>snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir) >>>#else >>>int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *params, >>>snd_pcm_uframes_t *val, int *dir) >>>#endif >>>{ >>> unsigned int _val; >>> printf("alsa-lib:snd_pcm_hw_params_get_period_size() - params=%p >>>val=%p dir=%p\n", >>> params, val, dir); >>> int err = snd_pcm_hw_param_get(params, SND_PCM_HW_PARAM_PERIOD_SIZE, >>>&_val, dir); >>> if (err >= 0) >>> *val = _val; >>> >>> return err; >>>} >>> >>> >>>This printf shows val has an incorrect value (dir is also incorrect). I >>>don't think it's related to the alsa-lib but maybe a problem with our >>>build tool chain. >>> >>> >>OK, let me know if it turnes out to be a bug in alsa-lib :) >> >> > >Or binutils. What does 'nm aplay | grep snd_pcm_hw_params_get_period_size' >show? Also, you might try to configure alsa-lib with --with-versioned=no . > > > Hi Jaroslav, Yes, using --with-versioned=no solved the problem. Now everything works. What does --with-versioned=no do ? By the way the output of nm is the same for alsa-lib built with and without the --with-versioned=no switch. nm aplay | grep snd_pcm_hw_params_get_period_size U snd_pcm_hw_params_get_period_size@@ALSA_0.9.0rc4 Thanks, Carlos ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: snd_pcm_hw_params_get_period_size() returning 0 2006-04-03 19:37 ` Carlos Munoz @ 2006-04-05 17:53 ` Carlos Munoz 0 siblings, 0 replies; 10+ messages in thread From: Carlos Munoz @ 2006-04-05 17:53 UTC (permalink / raw) To: Jaroslav Kysela; +Cc: Takashi Iwai, Lee Revell, alsa-devel Carlos Munoz wrote: > Jaroslav Kysela wrote: > >> On Mon, 3 Apr 2006, Takashi Iwai wrote: >> >> >> >>> At Mon, 03 Apr 2006 10:46:34 -0700, >>> Carlos Munoz wrote: >>> >>> >>>> Takashi Iwai wrote: >>>> >>>> >>>> >>>>> At Fri, 31 Mar 2006 18:20:42 -0800, >>>>> Carlos Munoz wrote: >>>>> >>>>> >>>>> >>>>> >>>>>> Lee Revell wrote: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> On Fri, 2006-03-31 at 17:00 -0800, Carlos Munoz wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Does any one know why >>>>>>>> snd_pcm_hw_params_get_period_size() would be returning 0 ? Is >>>>>>>> it something the driver did/didn't do ? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> Argh, please disregard last message, that's not how the hw_params >>>>>>> callback works :-( >>>>>>> >>>>>>> Lee >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> Hi Lee, >>>>>> >>>>>> I digged further and this is what I found. >>>>>> >>>>>> snd_pcm_hw_params_get_period_size(...., int *val) does retrieve >>>>>> the correct period size and updates val with it. However, val >>>>>> does not match the address passed to it. I mean the caller of >>>>>> snd_pcm_hw_params_get_period_size(.... 0x41becc) passes the >>>>>> address of where the period size is to be stored as 0x41becc but >>>>>> snd_pcm_hw_params_get_period_size() gets 0x7b83c0d8 and that's >>>>>> where it puts the period size. >>>>>> >>>>>> This is on the Renesas SH7343 processor. alsa-lib is a dynamic >>>>>> library. Should I expect the variable address be the same ? >>>>>> >>>>>> >>>>> >>>>> No. They must be different. The value is stored to the original >>>>> address only when no error returns. Unless that, a temporary >>>>> variable >>>>> is used. That's why you see two distinct addresses. >>>>> >>>>> >>>>> Takashi >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> Hi Takashi, >>>> >>>> I understand what you are saying. However, this is not the case >>>> here. The original address is wrong. I print the value of val (not >>>> _val) passed to snd_pcm_hw_params_get_period_size() and it is >>>> wrong. See the code: >>>> >>>> #ifndef DOXYGEN >>>> int INTERNAL(snd_pcm_hw_params_get_period_size)(const >>>> snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir) >>>> #else >>>> int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t >>>> *params, snd_pcm_uframes_t *val, int *dir) >>>> #endif >>>> { >>>> unsigned int _val; >>>> printf("alsa-lib:snd_pcm_hw_params_get_period_size() - params=%p >>>> val=%p dir=%p\n", >>>> params, val, dir); >>>> int err = snd_pcm_hw_param_get(params, >>>> SND_PCM_HW_PARAM_PERIOD_SIZE, &_val, dir); >>>> if (err >= 0) >>>> *val = _val; >>>> >>>> return err; >>>> } >>>> >>>> >>>> This printf shows val has an incorrect value (dir is also >>>> incorrect). I don't think it's related to the alsa-lib but maybe a >>>> problem with our build tool chain. >>>> >>> >>> OK, let me know if it turnes out to be a bug in alsa-lib :) >>> >> >> >> Or binutils. What does 'nm aplay | grep >> snd_pcm_hw_params_get_period_size' show? Also, you might try to >> configure alsa-lib with --with-versioned=no . >> >> >> > Hi Jaroslav, > > Yes, using --with-versioned=no solved the problem. Now everything > works. What does --with-versioned=no do ? > > By the way the output of nm is the same for alsa-lib built with and > without the --with-versioned=no switch. > > nm aplay | grep snd_pcm_hw_params_get_period_size > U snd_pcm_hw_params_get_period_size@@ALSA_0.9.0rc4 > Well... it's not as perfect as I thought. To get it to work, I need to link the alsa-utils (aplay) with an alsa-lib that has versioned enabled (--with-versioned=no is not passed to configure). But then, the run time alsa-lib must be one compiled with '--with-versioned=no'. Does anyone know what's going on ? Thanks, Carlos ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2006-04-05 17:53 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-04-01 1:00 snd_pcm_hw_params_get_period_size() returning 0 Carlos Munoz 2006-04-01 1:57 ` Lee Revell 2006-04-01 1:59 ` Lee Revell 2006-04-01 2:20 ` Carlos Munoz 2006-04-03 10:22 ` Takashi Iwai 2006-04-03 17:46 ` Carlos Munoz 2006-04-03 18:33 ` Takashi Iwai 2006-04-03 18:38 ` Jaroslav Kysela 2006-04-03 19:37 ` Carlos Munoz 2006-04-05 17:53 ` Carlos Munoz
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.