The i810_audio driver supports really weird sample rates. Eg: 44100 -> 43512 48000 -> 47360
In addition, some i810's only support 48000 as a sample rate -- I added this rate to the list.
The i810 driver bases its rates off rates like 48000 and factors in an offset based on DMA transfer rate (see i810_configure_clocking() in i810_audio.c) which accounts for the discrepancy.
As the OSS driver already has a 1% fudge factor in it for the requested vs supplied sample rate, the quick & dirty fix is to bump that factor up to 2%, which gets it working on my machine at home :)
Index: client/audiosvc/hxaudses.cpp
===================================================================
RCS file: /cvsroot/client/audiosvc/hxaudses.cpp,v
retrieving revision 1.39.2.3.2.1
diff -u -r1.39.2.3.2.1 hxaudses.cpp
--- client/audiosvc/hxaudses.cpp 13 Dec 2004 23:12:44 -0000
1.39.2.3.2.1
+++ client/audiosvc/hxaudses.cpp 16 Jan 2005 05:56:46 -0000
@@ -162,7 +162,8 @@
16000,
22050,
32000,
- 44100
+ 44100,
+ 48000
};
#else
const unsigned short z_anValidSampleRates[] = { 11025,
Index: audio/device/platform/unix/audlinux_oss.cpp
===================================================================
RCS file: /cvsroot/audio/device/platform/unix/audlinux_oss.cpp,v
retrieving revision 1.6.18.1
diff -u -r1.6.18.1 audlinux_oss.cpp
--- audio/device/platform/unix/audlinux_oss.cpp 9 Jul 2004 02:01:42 -0000
1.6.18.1
+++ audio/device/platform/unix/audlinux_oss.cpp 16 Jan 2005 05:56:58 -0000
@@ -677,8 +677,11 @@
//instead of 44100 (.2%) and 7984 instead of 8000 (.6%).
//So, if we are close enough just say it is OK.
//How about 1%?
+
+ //XXXRGG: i810 gives sample rates like 43512 for 44100 (1.3%), how
+ //about 2%?
fTmp = (float)ulTmp/(float)pFormat->ulSamplesPerSec;
- if( fabs(1.0-fTmp) > .01 )
+ if( fabs(1.0-fTmp) > .02 )
{
//It is NOT supported
retCode = RA_AOE_BADFORMAT;
_______________________________________________ Audio-dev mailing list [email protected] http://lists.helixcommunity.org/mailman/listinfo/audio-dev
