mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
alsasrc: handle the case where the drivers don't supply timestamps
If highres-timestamp is 0, try lowres and if that fails fallback to system clock timestamps.
This commit is contained in:
parent
c6b9145630
commit
8154b69112
1 changed files with 15 additions and 3 deletions
|
@ -251,7 +251,8 @@ static GstClockTime
|
|||
gst_alsasrc_get_timestamp (GstAlsaSrc * src)
|
||||
{
|
||||
snd_pcm_status_t *status;
|
||||
snd_htimestamp_t tstamp;
|
||||
snd_htimestamp_t htstamp;
|
||||
snd_timestamp_t tstamp;
|
||||
GstClockTime timestamp;
|
||||
snd_pcm_uframes_t availmax;
|
||||
gint64 offset;
|
||||
|
@ -275,8 +276,19 @@ gst_alsasrc_get_timestamp (GstAlsaSrc * src)
|
|||
}
|
||||
|
||||
/* get high resolution time stamp from driver */
|
||||
snd_pcm_status_get_htstamp (status, &tstamp);
|
||||
timestamp = GST_TIMESPEC_TO_TIME (tstamp);
|
||||
snd_pcm_status_get_htstamp (status, &htstamp);
|
||||
timestamp = GST_TIMESPEC_TO_TIME (htstamp);
|
||||
if (!timestamp) {
|
||||
GST_INFO_OBJECT (src,
|
||||
"This alsa source does support high resolution timestamps");
|
||||
snd_pcm_status_get_tstamp (status, &tstamp);
|
||||
timestamp = GST_TIMEVAL_TO_TIME (tstamp);
|
||||
if (!timestamp) {
|
||||
GST_INFO_OBJECT (src,
|
||||
"This alsa source does support low resolution timestamps");
|
||||
timestamp = gst_util_get_timestamp ();
|
||||
}
|
||||
}
|
||||
GST_DEBUG_OBJECT (src, "Base ts: %" GST_TIME_FORMAT,
|
||||
GST_TIME_ARGS (timestamp));
|
||||
if (timestamp == 0) {
|
||||
|
|
Loading…
Reference in a new issue