blob: d14107a6b5e5204c49a91215297be558a6862bfc [file] [log] [blame]
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +00001// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
dnicoara@chromium.org9f2a6f02014-01-03 21:25:00 +00005#ifndef MEDIA_MIDI_MIDI_MANAGER_ALSA_H_
6#define MEDIA_MIDI_MIDI_MANAGER_ALSA_H_
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +00007
8#include <vector>
9
10#include "base/basictypes.h"
11#include "base/memory/scoped_ptr.h"
12#include "base/threading/thread.h"
13#include "media/midi/midi_manager.h"
14
15namespace media {
16
toyoshim@chromium.orgc82e66e2014-02-04 07:05:47 +000017class MidiManagerAlsa : public MidiManager {
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +000018 public:
toyoshim@chromium.orgc82e66e2014-02-04 07:05:47 +000019 MidiManagerAlsa();
20 virtual ~MidiManagerAlsa();
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +000021
toyoshim@chromium.orgc82e66e2014-02-04 07:05:47 +000022 // MidiManager implementation.
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +000023 virtual bool Initialize() OVERRIDE;
toyoshim@chromium.orgc82e66e2014-02-04 07:05:47 +000024 virtual void DispatchSendMidiData(MidiManagerClient* client,
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +000025 uint32 port_index,
26 const std::vector<uint8>& data,
27 double timestamp) OVERRIDE;
28
29 private:
toyoshim@chromium.orgc82e66e2014-02-04 07:05:47 +000030 class MidiDeviceInfo;
31 std::vector<scoped_refptr<MidiDeviceInfo> > in_devices_;
32 std::vector<scoped_refptr<MidiDeviceInfo> > out_devices_;
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +000033 base::Thread send_thread_;
toyoshim@chromium.orgc82e66e2014-02-04 07:05:47 +000034 DISALLOW_COPY_AND_ASSIGN(MidiManagerAlsa);
toyoshim@chromium.orga97eebf2014-01-03 07:52:39 +000035};
36
37} // namespace media
38
dnicoara@chromium.org9f2a6f02014-01-03 21:25:00 +000039#endif // MEDIA_MIDI_MIDI_MANAGER_ALSA_H_