66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
// Licensed under the MIT License.
|
||
|
|
||
|
#ifndef K4ASOUNDIO_UTIL_H
|
||
|
#define K4ASOUNDIO_UTIL_H
|
||
|
|
||
|
// System headers
|
||
|
//
|
||
|
#include <memory>
|
||
|
|
||
|
// Library headers
|
||
|
//
|
||
|
|
||
|
// On Windows, this ends up including Windows.h, which by default #defines
|
||
|
// min/max, which overrides std::min/std::max.
|
||
|
// This disables that behavior.
|
||
|
//
|
||
|
#define NOMINMAX
|
||
|
#include <soundio.h>
|
||
|
|
||
|
// Project headers
|
||
|
//
|
||
|
|
||
|
namespace k4aviewer
|
||
|
{
|
||
|
// Deleter functors for smart pointer types
|
||
|
//
|
||
|
struct SoundIoDeleter
|
||
|
{
|
||
|
void operator()(SoundIo *s) const
|
||
|
{
|
||
|
soundio_destroy(s);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
struct SoundIoDeviceDeleter
|
||
|
{
|
||
|
void operator()(SoundIoDevice *s) const
|
||
|
{
|
||
|
soundio_device_unref(s);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
struct SoundIoInStreamDeleter
|
||
|
{
|
||
|
void operator()(SoundIoInStream *s) const
|
||
|
{
|
||
|
soundio_instream_destroy(s);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
struct SoundIoRingBufferDeleter
|
||
|
{
|
||
|
void operator()(SoundIoRingBuffer *b) const
|
||
|
{
|
||
|
soundio_ring_buffer_destroy(b);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
using SoundIoUniquePtr = std::unique_ptr<SoundIo, SoundIoDeleter>;
|
||
|
using SoundIoInStreamUniquePtr = std::unique_ptr<SoundIoInStream, SoundIoInStreamDeleter>;
|
||
|
using SoundIoRingBufferUniquePtr = std::unique_ptr<SoundIoRingBuffer, SoundIoRingBufferDeleter>;
|
||
|
} // namespace k4aviewer
|
||
|
|
||
|
#endif
|