I have a PCI-e audio card that does not give very accurate sampling rate (about -0.2% error, i.e., if I set the sampling rate to 8K, I got only 7984 samples per second on average). It caused various synchronization problems in applications like gstreamer.
Can you be more specific on your sync issues? Generally the audio clock is used as reference, and video adjusts to it.
Since there will be some difference from one clock domain to another, I am wondering if there is any defined tolerance on the sampling rate, and where the right place is to correct this kind of error. I would really appreciate if someone can point me to the related documents/links.
It really depends on the standard, and if you are slave or master. Each standard has its own requirements. For example an AES-EBU interface will require 10ppm for professional uses as a source, and less as a sink. HDAudio requires the nominal BCLK 24MHz frequency to be between 23.9976 and 24.0024 MHz. I don't think on an I2S link there are such requirements, the frequency will depend on how accurate the audio PLL is. Note that the actual frequency is only one of the parameters influencing audio quality, jitter issues are much worse. If your clock is slightly off but remains stable, you are usually good. If it varies you'll have real audible quality issues. - Pierre