Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Carlos Munoz <carlos@kenati.com>
To: Jaroslav Kysela <perex@suse.cz>
Cc: Takashi Iwai <tiwai@suse.de>, Lee Revell <rlrevell@joe-job.com>,
	alsa-devel <alsa-devel@lists.sourceforge.net>
Subject: Re: snd_pcm_hw_params_get_period_size() returning 0
Date: Wed, 05 Apr 2006 10:53:25 -0700	[thread overview]
Message-ID: <44340415.2010800@kenati.com> (raw)
In-Reply-To: <44317977.2060007@kenati.com>

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

      reply	other threads:[~2006-04-05 17:53 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44340415.2010800@kenati.com \
    --to=carlos@kenati.com \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=perex@suse.cz \
    --cc=rlrevell@joe-job.com \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox