On Sun, Jun 13, 2010 at 3:47 PM, Paul Dugas paul@dugasenterprises.com wrote:
On Sun, Jun 13, 2010 at 10:10 AM, Clemens Ladisch clemens@ladisch.de wrote:
Paul Dugas wrote:
What's the "timestamp mode". Does it generate a timestamp each period? How would I access that timestamp?
Set SND_PCM_TSTAMP_ENABLE to generate a timestamp whenever the hardware position is updated. Call snd_pcm_status to read the position and the corresponding timestamp.
So, does setting SND_PCM_TSTAMP_ENABLE change the meaning of the tstamp field in the status? I believe I read somewhere that with TSTAMP_NONE, tstamp was set to "now" when readi() was called. Does it change to meaning " the timestamp od the first frame returned"? If not, where do I look?
I spun up a test program but I'm not seeing what I expect. I'm still missing something.
I'm calling snd_pcm_status() and snd_pcm_status_dump() before each snd_pcm_readi() call. I see the "trigger_time" not changing (after the first readi call). The "tsamp" isn't increasing in consistent steps. I expect it to be consistently 10,666 usecs per the "period_time" value below.
The PCM device is configured like so:
Plug PCM: Linear Integer <-> Linear Float conversion PCM (S32_LE) Its setup is: stream : CAPTURE access : RW_INTERLEAVED format : FLOAT64_LE subformat : STD channels : 8 rate : 96000 exact rate : 96000 (96000/1) msbits : 64 buffer_size : 32768 period_size : 1024 period_time : 10666 tstamp_mode : ENABLE period_step : 1 avail_min : 1024 period_event : 0 start_threshold : 1 stop_threshold : 32768 silence_threshold: 0 silence_size : 0 boundary : 4611686018427387904 Slave: Route conversion PCM (sformat=S32_LE) Transformation table: 0 <- 0 1 <- 1 2 <- none 3 <- none 4 <- none 5 <- none 6 <- none 7 <- none Its setup is: stream : CAPTURE access : MMAP_INTERLEAVED format : S32_LE subformat : STD channels : 8 rate : 96000 exact rate : 96000 (96000/1) msbits : 32 buffer_size : 32768 period_size : 1024 period_time : 10666 tstamp_mode : ENABLE period_step : 1 avail_min : 1024 period_event : 0 start_threshold : 1 stop_threshold : 32768 silence_threshold: 0 silence_size : 0 boundary : 4611686018427387904 Slave: Hardware PCM card 0 'HDA Intel' device 0 subdevice 0 Its setup is: stream : CAPTURE access : MMAP_INTERLEAVED format : S32_LE subformat : STD channels : 2 rate : 96000 exact rate : 96000 (96000/1) msbits : 32 buffer_size : 32768 period_size : 1024 period_time : 10666 tstamp_mode : ENABLE period_step : 1 avail_min : 1024 period_event : 0 start_threshold : 1 stop_threshold : 32768 silence_threshold: 0 silence_size : 0 boundary : 4611686018427387904 appl_ptr : 0 hw_ptr : 0
Hmmm.... Not sure what to try next.
Paul