[alsa-devel] [PATCH] ALSA: hda - Add codec delay to the capture time stamp.

Takashi Iwai tiwai at suse.de
Tue Apr 16 07:18:52 CEST 2013


At Mon, 15 Apr 2013 11:57:05 -0700,
Dylan Reid wrote:
> 
> 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 at chromium.org>

Applied, thanks.


Takashi

> ---
>  sound/pci/hda/hda_intel.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index 63734b5..7b213d5 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -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);
>  
> -- 
> 1.8.1.3.605.g02339dd
> 


More information about the Alsa-devel mailing list