summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2018-09-11 01:00:21 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2018-09-11 01:00:21 +0530
commitf62b7fd71234ab712c67fe8c4deb5e2fac4e9982 (patch)
tree78809c544785a4b057f4dabb82e6b49b7b3fea92
parent8875fe49ecc49e8728fefbf7b90afcc91bd69f47 (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.c16
-rw-r--r--sys/wasapi/gstwasapisink.h1
-rw-r--r--sys/wasapi/gstwasapisrc.c9
-rw-r--r--sys/wasapi/gstwasapisrc.h1
-rw-r--r--sys/wasapi/gstwasapiutil.c57
-rw-r--r--sys/wasapi/gstwasapiutil.h4
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__ */