Merge pull request #33 from gkasten/CL_avsync

pcm_get_htimestamp can now use CLOCK_MONOTONIC
This commit is contained in:
Simon Wilson
2014-05-08 07:51:30 -07:00
2 changed files with 14 additions and 0 deletions
+3
View File
@@ -55,6 +55,7 @@ struct pcm;
* second call to pcm_write will attempt to
* restart the stream.
*/
#define PCM_MONOTONIC 0x00000008 /* see pcm_get_htimestamp */
/* PCM runtime states */
#define PCM_STATE_RUNNING 3
@@ -155,6 +156,8 @@ unsigned int pcm_frames_to_bytes(struct pcm *pcm, unsigned int frames);
unsigned int pcm_bytes_to_frames(struct pcm *pcm, unsigned int bytes);
/* Returns available frames in pcm buffer and corresponding time stamp.
* The clock is CLOCK_MONOTONIC if flag PCM_MONOTONIC was specified in pcm_open,
* otherwise the clock is CLOCK_REALTIME.
* For an input stream, frames available are frames ready for the
* application to read.
* For an output stream, frames available are the number of empty frames available
+11
View File
@@ -724,6 +724,17 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
goto fail;
}
#ifdef SNDRV_PCM_IOCTL_TTSTAMP
if (pcm->flags & PCM_MONOTONIC) {
int arg = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC;
rc = ioctl(pcm->fd, SNDRV_PCM_IOCTL_TTSTAMP, &arg);
if (rc < 0) {
oops(pcm, rc, "cannot set timestamp type");
goto fail;
}
}
#endif
pcm->underruns = 0;
return pcm;