diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-09-11 01:00:21 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-09-11 01:00:21 +0530 |
commit | f62b7fd71234ab712c67fe8c4deb5e2fac4e9982 (patch) | |
tree | 78809c544785a4b057f4dabb82e6b49b7b3fea92 | |
parent | 8875fe49ecc49e8728fefbf7b90afcc91bd69f47 (diff) |
wasapi: Remove code that sets thread priority
This is now handled directly in gstaudiosrc/sink, and we were setting
it in the wrong thread anyway. prepare() is not the same thread as
sink_write() or src_read().
-rw-r--r-- | sys/wasapi/gstwasapisink.c | 16 | ||||
-rw-r--r-- | sys/wasapi/gstwasapisink.h | 1 | ||||
-rw-r--r-- | sys/wasapi/gstwasapisrc.c | 9 | ||||
-rw-r--r-- | sys/wasapi/gstwasapisrc.h | 1 | ||||
-rw-r--r-- | sys/wasapi/gstwasapiutil.c | 57 | ||||
-rw-r--r-- | sys/wasapi/gstwasapiutil.h | 4 |
6 files changed, 4 insertions, 84 deletions
diff --git a/sys/wasapi/gstwasapisink.c b/sys/wasapi/gstwasapisink.c index 704bf2992..fd0acee81 100644 --- a/sys/wasapi/gstwasapisink.c +++ b/sys/wasapi/gstwasapisink.c @@ -561,9 +561,6 @@ gst_wasapi_sink_prepare (GstAudioSink * asink, GstAudioRingBufferSpec * spec) gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SINK (self)->ringbuffer, self->positions); - /* Increase the thread priority to reduce glitches */ - self->thread_priority_handle = gst_wasapi_util_set_thread_characteristics (); - res = TRUE; beach: @@ -582,12 +579,6 @@ gst_wasapi_sink_unprepare (GstAudioSink * asink) CoUninitialize (); - if (self->thread_priority_handle != NULL) { - gst_wasapi_util_revert_thread_characteristics - (self->thread_priority_handle); - self->thread_priority_handle = NULL; - } - if (self->client != NULL) { IAudioClient_Stop (self->client); } @@ -614,7 +605,8 @@ gst_wasapi_sink_write (GstAudioSink * asink, gpointer data, guint length) GST_OBJECT_LOCK (self); if (self->client_needs_restart) { hr = IAudioClient_Start (self->client); - HR_FAILED_AND (hr, IAudioClient::Start, GST_OBJECT_UNLOCK (self); goto beach); + HR_FAILED_AND (hr, IAudioClient::Start, GST_OBJECT_UNLOCK (self); + goto beach); self->client_needs_restart = FALSE; } GST_OBJECT_UNLOCK (self); @@ -636,8 +628,8 @@ gst_wasapi_sink_write (GstAudioSink * asink, gpointer data, guint length) * GetBuffer will error out */ if (can_frames != have_frames) { GST_ERROR_OBJECT (self, - "Need at %i frames to write for exclusive mode, but got %i", - can_frames, have_frames); + "Need at %i frames to write for exclusive mode, but got %i", + can_frames, have_frames); written_len = -1; goto beach; } diff --git a/sys/wasapi/gstwasapisink.h b/sys/wasapi/gstwasapisink.h index e3b2101e4..7806fc301 100644 --- a/sys/wasapi/gstwasapisink.h +++ b/sys/wasapi/gstwasapisink.h @@ -44,7 +44,6 @@ struct _GstWasapiSink IAudioClient *client; IAudioRenderClient *render_client; HANDLE event_handle; - HANDLE thread_priority_handle; /* Client was reset, so it needs to be started again */ gboolean client_needs_restart; diff --git a/sys/wasapi/gstwasapisrc.c b/sys/wasapi/gstwasapisrc.c index 5089f9add..aecf0bd87 100644 --- a/sys/wasapi/gstwasapisrc.c +++ b/sys/wasapi/gstwasapisrc.c @@ -512,9 +512,6 @@ gst_wasapi_src_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SRC (self)->ringbuffer, self->positions); - /* Increase the thread priority to reduce glitches */ - self->thread_priority_handle = gst_wasapi_util_set_thread_characteristics (); - res = TRUE; beach: /* unprepare() is not called if prepare() fails, but we want it to be, so call @@ -530,12 +527,6 @@ gst_wasapi_src_unprepare (GstAudioSrc * asrc) { GstWasapiSrc *self = GST_WASAPI_SRC (asrc); - if (self->thread_priority_handle != NULL) { - gst_wasapi_util_revert_thread_characteristics - (self->thread_priority_handle); - self->thread_priority_handle = NULL; - } - if (self->client != NULL) { IAudioClient_Stop (self->client); } diff --git a/sys/wasapi/gstwasapisrc.h b/sys/wasapi/gstwasapisrc.h index d6a2e20b8..60d7b4a2f 100644 --- a/sys/wasapi/gstwasapisrc.h +++ b/sys/wasapi/gstwasapisrc.h @@ -46,7 +46,6 @@ struct _GstWasapiSrc guint64 client_clock_freq; IAudioCaptureClient *capture_client; HANDLE event_handle; - HANDLE thread_priority_handle; /* Client was reset, so it needs to be started again */ gboolean client_needs_restart; diff --git a/sys/wasapi/gstwasapiutil.c b/sys/wasapi/gstwasapiutil.c index 1ca535722..f2f62aa06 100644 --- a/sys/wasapi/gstwasapiutil.c +++ b/sys/wasapi/gstwasapiutil.c @@ -106,16 +106,6 @@ static struct static int windows_major_version = 0; -static struct -{ - HMODULE dll; - gboolean tried_loading; - - HANDLE (WINAPI * AvSetMmThreadCharacteristics) (LPCSTR, LPDWORD); - BOOL (WINAPI * AvRevertMmThreadCharacteristics) (HANDLE); -} gst_wasapi_avrt_tbl = { -0}; - gboolean gst_wasapi_util_have_audioclient3 (void) { @@ -956,50 +946,3 @@ gst_wasapi_util_initialize_audioclient3 (GstElement * self, *ret_devicep_frames = devicep_frames; return TRUE; } - -static gboolean -gst_wasapi_util_init_thread_priority (void) -{ - if (gst_wasapi_avrt_tbl.tried_loading) - return gst_wasapi_avrt_tbl.dll != NULL; - - if (!gst_wasapi_avrt_tbl.dll) - gst_wasapi_avrt_tbl.dll = LoadLibrary (TEXT ("avrt.dll")); - - if (!gst_wasapi_avrt_tbl.dll) { - GST_WARNING ("Failed to set thread priority, can't find avrt.dll"); - gst_wasapi_avrt_tbl.tried_loading = TRUE; - return FALSE; - } - - gst_wasapi_avrt_tbl.AvSetMmThreadCharacteristics = - GetProcAddress (gst_wasapi_avrt_tbl.dll, "AvSetMmThreadCharacteristicsA"); - gst_wasapi_avrt_tbl.AvRevertMmThreadCharacteristics = - GetProcAddress (gst_wasapi_avrt_tbl.dll, - "AvRevertMmThreadCharacteristics"); - - gst_wasapi_avrt_tbl.tried_loading = TRUE; - - return TRUE; -} - -HANDLE -gst_wasapi_util_set_thread_characteristics (void) -{ - DWORD taskIndex = 0; - - if (!gst_wasapi_util_init_thread_priority ()) - return NULL; - - return gst_wasapi_avrt_tbl.AvSetMmThreadCharacteristics (TEXT ("Pro Audio"), - &taskIndex); -} - -void -gst_wasapi_util_revert_thread_characteristics (HANDLE handle) -{ - if (!gst_wasapi_util_init_thread_priority ()) - return; - - gst_wasapi_avrt_tbl.AvRevertMmThreadCharacteristics (handle); -} diff --git a/sys/wasapi/gstwasapiutil.h b/sys/wasapi/gstwasapiutil.h index ef7a802a8..502c76396 100644 --- a/sys/wasapi/gstwasapiutil.h +++ b/sys/wasapi/gstwasapiutil.h @@ -114,8 +114,4 @@ gboolean gst_wasapi_util_initialize_audioclient3 (GstElement * element, WAVEFORMATEX * format, gboolean low_latency, gboolean loopback, guint * ret_devicep_frames); -HANDLE gst_wasapi_util_set_thread_characteristics (void); - -void gst_wasapi_util_revert_thread_characteristics (HANDLE handle); - #endif /* __GST_WASAPI_UTIL_H__ */ |