summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/wavwrite.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util/wavwrite.h')
-rw-r--r--src/lib/util/wavwrite.h28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/lib/util/wavwrite.h b/src/lib/util/wavwrite.h
index cdf6f4d0d78..3f6ac6fd5c1 100644
--- a/src/lib/util/wavwrite.h
+++ b/src/lib/util/wavwrite.h
@@ -6,16 +6,34 @@
#pragma once
#include <cstdint>
+#include <memory>
+#include <string_view>
+namespace util {
+
struct wav_file;
-wav_file *wav_open(const char *filename, int sample_rate, int channels);
void wav_close(wav_file *wavptr);
-void wav_add_data_16(wav_file *wavptr, std::int16_t *data, int samples);
-void wav_add_data_32(wav_file *wavptr, std::int32_t *data, int samples, int shift);
-void wav_add_data_16lr(wav_file *wavptr, std::int16_t *left, std::int16_t *right, int samples);
-void wav_add_data_32lr(wav_file *wavptr, std::int32_t *left, std::int32_t *right, int samples, int shift);
+struct wav_deleter
+{
+ void operator()(wav_file *wavptr) const
+ {
+ if (wavptr)
+ wav_close(wavptr);
+ }
+};
+
+using wav_file_ptr = std::unique_ptr<wav_file, wav_deleter>;
+
+wav_file_ptr wav_open(std::string_view filename, int sample_rate, int channels);
+
+void wav_add_data_16(wav_file &wavptr, std::int16_t *data, int samples);
+void wav_add_data_32(wav_file &wavptr, std::int32_t *data, int samples, int shift);
+void wav_add_data_16lr(wav_file &wavptr, std::int16_t *left, std::int16_t *right, int samples);
+void wav_add_data_32lr(wav_file &wavptr, std::int32_t *left, std::int32_t *right, int samples, int shift);
+
+} // namespace util
#endif // MAME_UTIL_WAVWRITE_H