// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_AUDIO_AUDIO_THREAD_H_ #define MEDIA_AUDIO_AUDIO_THREAD_H_ #include "media/base/media_export.h" namespace base { class SingleThreadTaskRunner; } // namespace base namespace media { // This class encapulates the logic for the thread and task runners that the // AudioManager and related classes run on. class MEDIA_EXPORT AudioThread { public: virtual ~AudioThread() {} // Synchronously stops all underlying threads. virtual void Stop() = 0; // Returns the task runner used for audio IO. // It always returns a non-null task runner (even after Stop has been called). virtual base::SingleThreadTaskRunner* GetTaskRunner() = 0; // Heavyweight tasks should use GetWorkerTaskRunner() instead of // GetTaskRunner(). On most platforms they are the same, but some share the // UI loop with the audio IO loop. // It always returns a non-null task runner (even after Stop has been called). virtual base::SingleThreadTaskRunner* GetWorkerTaskRunner() = 0; }; } // namespace media #endif // MEDIA_AUDIO_AUDIO_THREAD_H_