// Copyright 2016 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_IMPL_H_
#define MEDIA_AUDIO_AUDIO_THREAD_IMPL_H_

#include "base/sequenced_task_runner.h"
#include "base/threading/thread.h"
#include "base/threading/thread_checker.h"
#include "media/audio/audio_thread.h"
#include "media/audio/audio_thread_hang_monitor.h"

namespace media {

class MEDIA_EXPORT AudioThreadImpl final : public AudioThread {
 public:
  AudioThreadImpl();

  AudioThreadImpl(const AudioThreadImpl&) = delete;
  AudioThreadImpl& operator=(const AudioThreadImpl&) = delete;

  ~AudioThreadImpl() final;

  // AudioThread implementation.
  void Stop() final;
  bool IsHung() const final;
  base::SingleThreadTaskRunner* GetTaskRunner() final;
  base::SingleThreadTaskRunner* GetWorkerTaskRunner() final;

 private:
  base::Thread thread_;
  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
  scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner_;

  // Null on Mac OS, initialized in the constructor on other platforms.
  AudioThreadHangMonitor::Ptr hang_monitor_;

  THREAD_CHECKER(thread_checker_);
};

}  // namespace media

#endif  // MEDIA_AUDIO_AUDIO_THREAD_IMPL_H_
