All of lore.kernel.org
 help / color / mirror / Atom feed
* Suggestion for improving alsa-lib sample rate converters.
@ 2004-09-15 14:38 James Courtier-Dutton
  2004-09-15 16:00 ` Takashi Iwai
  2004-09-15 16:02 ` Clemens Ladisch
  0 siblings, 2 replies; 4+ messages in thread
From: James Courtier-Dutton @ 2004-09-15 14:38 UTC (permalink / raw)
  To: alsa-devel

The ideal sample rate converter would be a serial sample rate converter.
e.g. Each sample is fed into the converter, and the new samples exit the 
converter at the correct rate.
With alsa this would convert to user application calling snd_pcm_write() 
with X samples, and Y samples coming out of the rate converter.
But one cannot have half a sample, so some rounding has to happen, so 
for X input samples, the output will differ depending on what went 
before, so one might get Y samples coming out, or Y+1 samples coming out.

User applications require a number of things from the sound card.
1) How many samples will fill the next period.
2) When doing sample rate conversions, this period size that the app 
sees should really be allowed to be different for each period.

Currently, we are limited in that the user application's period size has 
to be the same size for all periods.

The hardware normally has all equal size periods per buffer.
Depending on the state of the sample rate converters, this "all periods 
the same size" at the hardware level will result in varying period sizes 
at the application level after the sample rate converters have acted.
E.g. Hardware running at 48000, with period size of 1024.
Application running at 44100, period sizes, in sequence might be 
941,941,941,941,940,941,941,941,941,940...
I.e. every 5th period having a different size.

If the application wishes to write whole periods at a time(e.g. Mem 
mapped, or callback based apps), there will have to be a way to tell the 
application about the size of the next period.

Conclusion:
So, the alsa application would now do:
x = snd_pcm_get_next_period_size();   /* This would be a new api call */
snd_pcm_write(x samples);

With this extra bit of information fed back to the application, we could 
implement proper polyphase interpolators in alsa-lib.

Any comments?

James


-------------------------------------------------------
This SF.Net email is sponsored by: thawte's Crypto Challenge Vl
Crack the code and win a Sony DCRHC40 MiniDV Digital Handycam
Camcorder. More prizes in the weekly Lunch Hour Challenge.
Sign up NOW http://ad.doubleclick.net/clk;10740251;10262165;m

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-09-15 16:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-15 14:38 Suggestion for improving alsa-lib sample rate converters James Courtier-Dutton
2004-09-15 16:00 ` Takashi Iwai
2004-09-15 16:02 ` Clemens Ladisch
2004-09-15 16:08   ` Takashi Iwai

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.