From: Raymond <rayau@netvigator.com>
To: alsa-devel@lists.sourceforge.net
Subject: Re: au88x0_synth
Date: Wed, 20 Apr 2005 17:33:49 +0800 [thread overview]
Message-ID: <426621FD.2060209@netvigator.com> (raw)
In-Reply-To: <s5h64yjcdg7.wl@alsa2.suse.de>
If I am using 16 SRC (hw:0,0) to play 16 voices instead of 64 voices WT
engine, Is it possible to create a snd_pcm_substream_t for each voice in
snd-au8830-synth and calling snd_vortex_pcm_open(),
snd_vortex_pcm_hw_params(), snd_vortex_pcm_prepare(),
snd_vortex_pcm_hw_free(), snd_vortex_pcm_close() in snd-au8830 ?
Takashi Iwai wrote:
> Raymond wrote:
>
>>4) Can those snd_vortex_synth_alloc(), snd_vortex_synth_free(),
>>snd_vortex_synth_bzero() replaced by kmalloc(), kfree(), ... instead of
>>implementing a Memory blocks Management system with those fuctions in
>>util_mem.c ?
>
>
> The functions in util_mem.c are used to allocate/free blocks in a
> (virtually) linear address space dynamically. These functions
> themselves are no replacement for kmalloc/kfree at all.
>
http://www.mail-archive.com/alsa-devel@lists.sourceforge.net/msg06924.html
http://www.mail-archive.com/alsa-devel@lists.sourceforge.net/msg11687.html
Do we need to align the samples at 4K boundary ?
If yes, how do we implement offset_ptr(,,) and vortex_memblk_t ?
#define PAGE SIZE 4096
#define get_aligned_page(offset) ((offset) >> 12)
#define aligned_page_offset(page) ((page) << 12)
#define snd_vortex_synth_alloc(vortex,size)
snd_util_mem_alloc(vortex->memhdr, size)
#define snd_vortex_synth_free(vortex,blk)
snd_util_mem_free(vortex->memhdr,blk)
int snd_vortex_synth_bzero(vortex_t *vortex, snd_util_memblk_t *blk, int
offset, int size)
{
int page, nextofs, end_offset, temp, temp1;
void *ptr;
vortex_memblk_t *p = (vortex_memblk_t *)blk;
offset += blk->offset & (PAGE_SIZE - 1);
end_offset = offset + size;
page = get_aligned_page(offset);
do {
nextofs = aligned_page_offset(page + 1);
temp = nextofs - offset;
temp1 = end_offset - offset;
if (temp1 < temp)
temp = temp1;
ptr = offset_ptr(vortex, page + p->first_page, offset);
if (ptr)
memset(ptr, 0, temp);
offset = nextofs;
page++;
} while (offset < end_offset);
return 0;
}
/*
* copy_from_user(blk + offset, data, size)
*/
int snd_vortex_synth_copy_from_user(vortex_t *vortex, snd_util_memblk_t
*blk, int offset, const char __user *data, int size)
{
int page, nextofs, end_offset, temp, temp1;
offset += blk->offset;
end_offset = offset + size;
page = get_aligned_page(offset) + 1;
do {
nextofs = aligned_page_offset(page);
temp = nextofs - offset;
temp1 = end_offset - offset;
if (temp1 < temp)
temp = temp1;
if (copy_from_user(offset_ptr(vortex, offset), data, temp))
return -EFAULT;
offset = nextofs;
data += temp;
page++;
} while (offset < end_offset);
return 0;
}
-------------------------------------------------------
This SF.Net email is sponsored by: New Crystal Reports XI.
Version 11 adds new functionality designed to reduce time involved in
creating, integrating, and deploying reporting solutions. Free runtime info,
new features, or free trial, at: http://www.businessobjects.com/devxi/728
next prev parent reply other threads:[~2005-04-20 9:33 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-20 1:11 au88x0_synth Raymond
2005-03-21 20:00 ` au88x0_synth Takashi Iwai
2005-03-30 8:04 ` au88x0_synth Raymond
2005-03-30 8:09 ` au88x0_synth Clemens Ladisch
2005-04-12 14:14 ` au88x0_synth Raymond
2005-04-14 15:31 ` au88x0_synth Raymond
2005-04-15 13:07 ` au88x0_synth Takashi Iwai
2005-04-19 8:39 ` au88x0_synth Raymond
2005-04-19 9:39 ` au88x0_synth Takashi Iwai
2005-04-20 9:33 ` Raymond [this message]
2005-05-07 12:27 ` au88x0_synth Raymond
2005-03-30 8:13 ` au88x0_synth Alien
2005-03-30 10:08 ` Takashi Iwai
2005-03-30 10:21 ` Alien
2005-03-30 10:27 ` Takashi Iwai
2005-04-23 4:04 ` au88x0_synth Raymond
2005-04-23 7:28 ` au88x0_synth Alien
2005-04-28 10:21 ` au88x0_synth Raymond
2005-05-13 14:05 ` au88x0_synth Raymond
2005-05-13 14:27 ` au88x0_synth Alien
2005-05-14 8:12 ` au88x0_synth Raymond
2005-05-15 12:41 ` au88x0_synth Alien
2005-06-06 2:56 ` au88x0_synth Raymond
2005-06-06 8:49 ` au88x0_synth Alien
2005-06-06 8:56 ` Suspicious Attachment phiber
2005-06-06 11:03 ` au88x0_synth Raymond
2005-06-06 14:35 ` au88x0_synth Alien
2005-06-07 13:44 ` au88x0_synth Raymond
2005-06-07 15:03 ` au88x0_synth Alien
2005-03-31 22:52 ` au88x0_synth Manuel Jander
2005-07-01 13:42 ` au88x0_synth Raymond
2005-03-24 14:34 ` au88x0_synth Manuel Jander
2005-03-31 9:23 ` au88x0_synth Raymond
2005-03-31 10:40 ` au88x0_synth Clemens Ladisch
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=426621FD.2060209@netvigator.com \
--to=rayau@netvigator.com \
--cc=alsa-devel@lists.sourceforge.net \
/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 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.