Hi all,
           The following is my understanding ....pls correct me if I am
wrong.

1.     Buffer_size is how much of memory has been allocated to buffer the
sound to be played out.

2.     Fragment size is the measure of amount of data played between two
consecutive interrupts raised by the card.

3.    frags is the count of fragments the buffer (of size buffer_size ) has
been divided into.  ( frags may be more than the number of bds available i.e
32 ) ..  Hence it follows that

4.     Both of the following two cases are possible, right?

                     i) the whole buffer (of size buffer_size ) can be
divided between 32 bds so that a given bd will always point to same address
during the ourse of emptying the buffer

                    ii) If I force the fragment size to be small, the big
buffer_size can be get divided into more than 32 frags.  So a given bd will
be pointing to different places in the buffer during              the course
of emptying the buffer.


Now I have a few questions pls.

1.    The number of fragments i.e frags won't increase beyond 1024.  is this
correct?  Because given a big buffer_size, I am unable to force the fragment
size to be smaller than a certain size .( the final size being such that
frags is 1024 )

2.    What is the relation between runtime->period_size, runtime->periods
and runtime->buffersize  ( in pcm_native.c ) and ichdev->size ,
ichdev->period_size, ichdev->frags ( in intel8x0.c)

3.    I have a situation where I do not want to use all of the 32 bds
available. I want to use say only 2 or 4 of the bds with each bd pointing to
only a small fragment of data.( This is basically to give rise to a
condition where the card will not be able to proceed if the interrupts
raised by the past bds have not been serviced. 32 is a big number. I want to
restrict it to 2 or 4 ) . So, ..

            i)  What is the significance of ICH_MAX_FRAGS?  It seems to be
used only for the allocation of pages for the buffer and for little else
during the actual functioning of the card.

            ii)    What is the significance of ICH_REG_LVI_MASK?  (This is
more used during the actual functioning of the card & is used in the
interrupt service sub-routine to update the lvi.)  It is by default 0x1f .
Is this 'cos it can be used to address the 32 bds available.  I changed this
to 3 and 7 . I observed that this makes the card to use only 4 or 8 of the
bds available. Am I correct in this conclusion?  If I do this, I get some
noise. Is this because of the interrupts raised by the unused bds?

            iii) If I am wrong abt all this, how should I go abt my idea of
using only 2 or 4 of the bds available?


Clarifications on any points in the mail are welcome.


Thanx in advance,
--Shaju



-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone?  Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to