forked from Minki/linux
ALSA: hda - Add codec delay to the capture time stamp.
For capture, the delay through the codec contributes to the time stamp of the sample recorded at the A to D. Rename the codec time stamp function appropriately. Signed-off-by: Dylan Reid <dgreid@chromium.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
ad2109d7d2
commit
ae03bbb8f9
@ -1889,7 +1889,7 @@ static void azx_timecounter_init(struct snd_pcm_substream *substream,
|
||||
tc->cycle_last = last;
|
||||
}
|
||||
|
||||
static u64 azx_subtract_codec_delay(struct snd_pcm_substream *substream,
|
||||
static u64 azx_adjust_codec_delay(struct snd_pcm_substream *substream,
|
||||
u64 nsec)
|
||||
{
|
||||
struct azx_pcm *apcm = snd_pcm_substream_chip(substream);
|
||||
@ -1903,6 +1903,9 @@ static u64 azx_subtract_codec_delay(struct snd_pcm_substream *substream,
|
||||
codec_nsecs = div_u64(codec_frames * 1000000000LL,
|
||||
substream->runtime->rate);
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
|
||||
return nsec + codec_nsecs;
|
||||
|
||||
return (nsec > codec_nsecs) ? nsec - codec_nsecs : 0;
|
||||
}
|
||||
|
||||
@ -1914,7 +1917,7 @@ static int azx_get_wallclock_tstamp(struct snd_pcm_substream *substream,
|
||||
|
||||
nsec = timecounter_read(&azx_dev->azx_tc);
|
||||
nsec = div_u64(nsec, 3); /* can be optimized */
|
||||
nsec = azx_subtract_codec_delay(substream, nsec);
|
||||
nsec = azx_adjust_codec_delay(substream, nsec);
|
||||
|
||||
*ts = ns_to_timespec(nsec);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user