Browse Source

coreaudio: adapt delay before reporting latency

Some glitches are happening when starting the playback if delay is not
enough.
Alexandre Janniaux 3 years ago
parent
commit
3c58e2ae87
  1. 7
      modules/audio_output/coreaudio_common.c

7
modules/audio_output/coreaudio_common.c

@ -26,6 +26,7 @@
#include <CoreAudio/CoreAudioTypes.h> #include <CoreAudio/CoreAudioTypes.h>
#define TIMING_REPORT_DELAY_TICKS VLC_TICK_FROM_MS(1000) #define TIMING_REPORT_DELAY_TICKS VLC_TICK_FROM_MS(1000)
#define COREAUDIO_DELAY_LATENCY VLC_TICK_FROM_MS(100)
static inline uint64_t static inline uint64_t
BytesToFrames(struct aout_sys_common *p_sys, size_t i_bytes) BytesToFrames(struct aout_sys_common *p_sys, size_t i_bytes)
@ -281,7 +282,7 @@ ca_Flush(audio_output_t *p_aout)
p_sys->i_out_size = 0; p_sys->i_out_size = 0;
p_sys->i_total_bytes = 0; p_sys->i_total_bytes = 0;
p_sys->first_play_date = VLC_TICK_INVALID; p_sys->first_play_date = VLC_TICK_INVALID;
p_sys->timing_report_delay_bytes = p_sys->timing_report_delay_bytes = TicksToBytes(p_sys, COREAUDIO_DELAY_LATENCY);
p_sys->timing_report_last_written_bytes = 0; p_sys->timing_report_last_written_bytes = 0;
ca_ClearOutBuffers(p_aout); ca_ClearOutBuffers(p_aout);
@ -377,7 +378,7 @@ ca_Initialize(audio_output_t *p_aout, const audio_sample_format_t *fmt,
p_sys->get_latency = get_latency; p_sys->get_latency = get_latency;
else else
p_sys->i_dev_latency_ticks = i_dev_latency_ticks; p_sys->i_dev_latency_ticks = i_dev_latency_ticks;
p_sys->timing_report_delay_bytes = p_sys->timing_report_delay_bytes = TicksToBytes(p_sys, COREAUDIO_DELAY_LATENCY);
p_sys->timing_report_last_written_bytes = 0; p_sys->timing_report_last_written_bytes = 0;
ca_ClearOutBuffers(p_aout); ca_ClearOutBuffers(p_aout);
@ -410,7 +411,7 @@ void ca_ResetDeviceLatency(audio_output_t *p_aout)
lock_lock(p_sys); lock_lock(p_sys);
/* Trigger aout_TimingReport() to be called from the next render callback */ /* Trigger aout_TimingReport() to be called from the next render callback */
p_sys->timing_report_delay_bytes = 0; p_sys->timing_report_delay_bytes = TicksToBytes(p_sys, COREAUDIO_DELAY_LATENCY);
lock_unlock(p_sys); lock_unlock(p_sys);
} }

Loading…
Cancel
Save