mirror of
https://github.com/openharmony/third_party_tinyalsa.git
synced 2026-07-19 15:24:22 -04:00
Merge pull request #33 from gkasten/CL_avsync
pcm_get_htimestamp can now use CLOCK_MONOTONIC
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user