提交 65b8fb2f 编写于 作者: F fryshorts

Remove pa timestamps option from pulseaudio plugin

Due to desync issues with the pa timestamps, os ones are
now the only option.
上级 e0536e70
......@@ -28,7 +28,6 @@ struct pulse_data {
pa_stream *stream;
/* user settings */
bool ostime;
char *device;
/* server info */
......@@ -94,8 +93,7 @@ static void pulse_stream_read(pa_stream *p, size_t nbytes, void *userdata)
const void *frames;
size_t bytes;
uint64_t pa_time;
int64_t pa_latency;
int64_t latency;
if (!data->stream)
goto exit;
......@@ -113,14 +111,11 @@ static void pulse_stream_read(pa_stream *p, size_t nbytes, void *userdata)
goto exit;
}
if (pa_stream_get_time(data->stream, &pa_time) < 0) {
if (pulse_get_stream_latency(data->stream, &latency) < 0) {
blog(LOG_ERROR, "pulse-input: Failed to get timing info !");
pa_stream_drop(data->stream);
goto exit;
}
pa_time = (!data->ostime) ? pa_time * 1000 : os_gettime_ns();
pulse_get_stream_latency(data->stream, &pa_latency);
struct source_audio out;
out.speakers = data->speakers;
......@@ -128,7 +123,7 @@ static void pulse_stream_read(pa_stream *p, size_t nbytes, void *userdata)
out.format = pulse_to_obs_audio_format(data->format);
out.data[0] = (uint8_t *) frames;
out.frames = bytes / data->bytes_per_frame;
out.timestamp = pa_time - (pa_latency * 1000);
out.timestamp = os_gettime_ns() - (latency * 1000ULL);
obs_source_output_audio(data->source, &out);
data->packets++;
......@@ -156,11 +151,10 @@ static void pulse_server_info(pa_context *c, const pa_server_info *i,
data->channels = i->sample_spec.channels;
blog(LOG_INFO, "pulse-input: "
"Audio format: %s, %u Hz, %u channels with %s timestamps",
"Audio format: %s, %u Hz, %u channels",
pa_sample_format_to_string(i->sample_spec.format),
i->sample_spec.rate,
i->sample_spec.channels,
(data->ostime) ? "OS" : "PA");
i->sample_spec.channels);
pulse_signal(0);
}
......@@ -298,8 +292,6 @@ static obs_properties_t pulse_properties(const char *locale, bool input)
pulse_get_source_info_list(cb, (void *) devices);
pulse_unref();
obs_properties_add_bool(props, "ostime", "Use OS timestamps");
return props;
}
......@@ -359,8 +351,6 @@ static void pulse_defaults(obs_data_t settings, bool input)
pulse_get_server_info(cb, (void *) settings);
pulse_unref();
obs_data_set_default_bool(settings, "ostime", false);
}
static void pulse_input_defaults(obs_data_t settings)
......@@ -424,11 +414,6 @@ static void pulse_update(void *vptr, obs_data_t settings)
restart = true;
}
if (data->ostime != obs_data_getbool(settings, "ostime")) {
data->ostime = obs_data_getbool(settings, "ostime");
restart = true;
}
if (!restart)
return;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册