Re: [alsa-devel] ASoC: mmap or read/write?
Clemens ------------------------------ Message: 6 Date: Thu, 18 Oct 2012 15:07:45 +0530 From: Prasant J pj0585@gmail.com To: Clemens Ladisch clemens@ladisch.de Cc: alsa-devel@alsa-project.org Subject: Re: [alsa-devel] ASoC: mmap or read/write? Message-ID: CAA2DH4v4DUxf5Qh79nehTPD+22v6XddzDrEMmnBu2eM8m4JXzg@mail.gmail.com Content-Type: text/plain; charset=ISO-8859-1 On Thu, Oct 18, 2012 at 2:39 PM, Clemens Ladisch clemens@ladisch.de wrote:
Prasant J wrote:
I'm writing an alsa application for recording & playing 16 channel audio.
The application is intended to run on an embedded platform & the resources are highly constrained.
Then I wonder how you manage to handle 16 channels. What hardware is this?
I'm working with Beaglebone (ARM Cortex-A8 720 MHz). (Currently failures are for 8 channels 32 bit / 16 bit, but our final target is 16 channels)
My application is not performing well with read/write methods.
How much CPU usage?
The CPU usage is around 35% (as seen in top)
I have managed to get Audio capture working fine (after certain linux optimizations) but playback is giving under-runs (only when PLAYBACK & CAPTURE run together) I was wondering that changing access method to mmap (currently I'm using read/write) may give me some more CPU time.
You must be doing something wrong. I'm doing 32-bit, 16-channel input at 51.2kHz on a OMAP-L138 (an ARM9 CPU at 450 MHz) under Linux and it's using no more than 25% CPU for that. Just using"arecord" for that.
Mike. (sorry for the company sig)
Met vriendelijke groet / kind regards,
Mike Looijmans
TOPIC Embedded Systems Eindhovenseweg 32-C, NL-5683 KH Best Postbus 440, NL-5680 AK Best Telefoon: (+31) – (0)499 - 33.69.79 Telefax: (+31) - (0)499 - 33.69.70 E-mail: mike.looijmans@topic.nl Website: www.topic.nl
Dit e-mail bericht en de eventueel daarbij behorende bijlagen zijn uitsluitend bestemd voor de geadresseerde, zoals die blijkt uit het e-mail bericht en/of de bijlagen. Er kunnen gegevens met betrekking tot een derde instaan. Indien u als niet-geadresseerde dit bericht en de bijlagen ontvangt, terwijl u niet bevoegd of gemachtigd bent om dit bericht namens de geadresseerde te ontvangen, wordt u verzocht de afzender hierover direct te informeren en het e-mail bericht met de bijlagen te vernietigen. Ieder gebruik van de inhoud van het e-mail bericht, waaronder de daarbij behorende bijlagen, door een ander dan de geadresseerde is onrechtmatig jegens ons dan wel de eventueel in het e-mail bericht of de bijlagen voorkomende andere personen. TOPIC Embedded Systems is niet aansprakelijk voor enigerlei schade voortvloeiend uit het gebruik en/of acceptatie van dit e-mail bericht of de daarbij behorende bijlagen.
The contents of this message, as well as any enclosures, are addressed personally to, and thus solely intended for the addressee. They may contain information regarding a third party. A recipient who is neither the addressee, nor empowered to receive this message on behalf of the addressee, is kindly requested to immediately inform the sender of receipt, and to destroy the message and the enclosures. Any use of the contents of this message and/or the enclosures by any other person than the addressee or person who is empowered to receive this message, is illegal towards the sender and/or the aforementioned third party. TOPIC Embedded Systems is not liable for any damage as a result of the use and/or acceptance of this message and as well as any enclosures.
Mike Looijmans wrote:
From: Prasant J pj0585@gmail.com
Prasant J wrote:
I'm writing an alsa application for recording & playing 16 channel audio.
I'm working with Beaglebone (ARM Cortex-A8 720 MHz). (Currently failures are for 8 channels 32 bit / 16 bit, but our final target is 16 channels)
I have managed to get Audio capture working fine (after certain linux optimizations) but playback is giving under-runs (only when PLAYBACK & CAPTURE run together)
You must be doing something wrong. I'm doing 32-bit, 16-channel input at 51.2kHz on a OMAP-L138 (an ARM9 CPU at 450 MHz)
Playback and capture at the same time seems to be harder for certain embedded devices. I don't know if this is a driver bug or a hardware limitation.
Regards, Clemens
On Fri, Oct 19, 2012 at 2:28 PM, Clemens Ladisch clemens@ladisch.de wrote:
Mike Looijmans wrote:
From: Prasant J pj0585@gmail.com
Prasant J wrote:
I'm writing an alsa application for recording & playing 16 channel audio.
I'm working with Beaglebone (ARM Cortex-A8 720 MHz). (Currently failures are for 8 channels 32 bit / 16 bit, but our final target is 16 channels)
I have managed to get Audio capture working fine (after certain linux optimizations) but playback is giving under-runs (only when PLAYBACK & CAPTURE run together)
You must be doing something wrong. I'm doing 32-bit, 16-channel input at 51.2kHz on a OMAP-L138 (an ARM9 CPU at 450 MHz)
@Mike: I'm playing & recording at the same time, that should be the reason.
When I was using arecord (only capture) I was getting overruns and only after making some linux optimizations, I was able to record properly. Are you 100% sure you do not observe any errors? Did you do tests for longer durations?
Playback and capture at the same time seems to be harder for certain embedded devices. I don't know if this is a driver bug or a hardware limitation.
@Clemens: The bottle-neck is SD card access. Driver bug cannot be ruled out, but it is difficult to evaluate.
Regards, Praant
P.S.: How do I reply to a post whose mail I did not receive. (I have enabled alsa-devel mails only now, but if someone does not include me in cc, I do not receive the posts started by me)
On 10/19/2012 11:36 AM, Prasant J wrote:
On Fri, Oct 19, 2012 at 2:28 PM, Clemens Ladisch clemens@ladisch.de wrote:
Mike Looijmans wrote:
From: Prasant J pj0585@gmail.com
Prasant J wrote:
I'm writing an alsa application for recording & playing 16 channel audio.
I'm working with Beaglebone (ARM Cortex-A8 720 MHz). (Currently failures are for 8 channels 32 bit / 16 bit, but our final target is 16 channels)
I have managed to get Audio capture working fine (after certain linux optimizations) but playback is giving under-runs (only when PLAYBACK & CAPTURE run together)
You must be doing something wrong. I'm doing 32-bit, 16-channel input at 51.2kHz on a OMAP-L138 (an ARM9 CPU at 450 MHz)
@Mike: I'm playing & recording at the same time, that should be the reason.
Good point, my board only a has a single playback channel.
When I was using arecord (only capture) I was getting overruns and only after making some linux optimizations, I was able to record properly. Are you 100% sure you do not observe any errors? Did you do tests for longer durations?
I've had it running for about an hour, using /dev/null as a target because I don't have enough memory to store that much data.
I did get lots of underruns/overruns while getting started, but they turned out te be related to clock configurations. So take a really good look at those, the way the registers are being set are often very obscure and register defines often don't match the datasheet.
Playback and capture at the same time seems to be harder for certain embedded devices. I don't know if this is a driver bug or a hardware limitation.
@Clemens: The bottle-neck is SD card access. Driver bug cannot be ruled out, but it is difficult to evaluate.
Sound familiar, on my board a USB SD cardreader connected to the USB port was actually faster than the built-in 4-wire SD.
Mike.
Met vriendelijke groet / kind regards,
Mike Looijmans
TOPIC Embedded Systems Eindhovenseweg 32-C, NL-5683 KH Best Postbus 440, NL-5680 AK Best Telefoon: (+31) – (0)499 - 33.69.79 Telefax: (+31) - (0)499 - 33.69.70 E-mail: mike.looijmans@topic.nl Website: www.topic.nl
Dit e-mail bericht en de eventueel daarbij behorende bijlagen zijn uitsluitend bestemd voor de geadresseerde, zoals die blijkt uit het e-mail bericht en/of de bijlagen. Er kunnen gegevens met betrekking tot een derde instaan. Indien u als niet-geadresseerde dit bericht en de bijlagen ontvangt, terwijl u niet bevoegd of gemachtigd bent om dit bericht namens de geadresseerde te ontvangen, wordt u verzocht de afzender hierover direct te informeren en het e-mail bericht met de bijlagen te vernietigen. Ieder gebruik van de inhoud van het e-mail bericht, waaronder de daarbij behorende bijlagen, door een ander dan de geadresseerde is onrechtmatig jegens ons dan wel de eventueel in het e-mail bericht of de bijlagen voorkomende andere personen. TOPIC Embedded Systems is niet aansprakelijk voor enigerlei schade voortvloeiend uit het gebruik en/of acceptatie van dit e-mail bericht of de daarbij behorende bijlagen.
The contents of this message, as well as any enclosures, are addressed personally to, and thus solely intended for the addressee. They may contain information regarding a third party. A recipient who is neither the addressee, nor empowered to receive this message on behalf of the addressee, is kindly requested to immediately inform the sender of receipt, and to destroy the message and the enclosures. Any use of the contents of this message and/or the enclosures by any other person than the addressee or person who is empowered to receive this message, is illegal towards the sender and/or the aforementioned third party. TOPIC Embedded Systems is not liable for any damage as a result of the use and/or acceptance of this message and as well as any enclosures.
participants (3)
-
Clemens Ladisch
-
Mike Looijmans
-
Prasant J