]> git.tdb.fi Git - ext/openal.git/blob - alc/backends/loopback.cpp
Import OpenAL Soft 1.23.1 sources
[ext/openal.git] / alc / backends / loopback.cpp
1 /**
2  * OpenAL cross platform audio library
3  * Copyright (C) 2011 by Chris Robinson
4  * This library is free software; you can redistribute it and/or
5  *  modify it under the terms of the GNU Library General Public
6  *  License as published by the Free Software Foundation; either
7  *  version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *  Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  *  License along with this library; if not, write to the
16  *  Free Software Foundation, Inc.,
17  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  * Or go to http://www.gnu.org/copyleft/lgpl.html
19  */
20
21 #include "config.h"
22
23 #include "loopback.h"
24
25 #include "core/device.h"
26
27
28 namespace {
29
30 struct LoopbackBackend final : public BackendBase {
31     LoopbackBackend(DeviceBase *device) noexcept : BackendBase{device} { }
32
33     void open(const char *name) override;
34     bool reset() override;
35     void start() override;
36     void stop() override;
37
38     DEF_NEWDEL(LoopbackBackend)
39 };
40
41
42 void LoopbackBackend::open(const char *name)
43 {
44     mDevice->DeviceName = name;
45 }
46
47 bool LoopbackBackend::reset()
48 {
49     setDefaultWFXChannelOrder();
50     return true;
51 }
52
53 void LoopbackBackend::start()
54 { }
55
56 void LoopbackBackend::stop()
57 { }
58
59 } // namespace
60
61
62 bool LoopbackBackendFactory::init()
63 { return true; }
64
65 bool LoopbackBackendFactory::querySupport(BackendType)
66 { return true; }
67
68 std::string LoopbackBackendFactory::probe(BackendType)
69 { return std::string{}; }
70
71 BackendPtr LoopbackBackendFactory::createBackend(DeviceBase *device, BackendType)
72 { return BackendPtr{new LoopbackBackend{device}}; }
73
74 BackendFactory &LoopbackBackendFactory::getFactory()
75 {
76     static LoopbackBackendFactory factory{};
77     return factory;
78 }