commit 93b6371f1423f3243fab18a6fffff93fb915b623
parent d38198176a3d7c53f1f9d9e5794e1e2732d09f4f
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Thu, 20 Dec 2018 17:51:20 +0000
univector support for read/write
Diffstat:
2 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/include/kfr/io/audiofile.hpp b/include/kfr/io/audiofile.hpp
@@ -72,6 +72,8 @@ struct audio_format_and_length : audio_format
template <typename T>
struct audio_reader : public abstract_reader<T>
{
+ /// @brief Reads interleaved audio
+ using abstract_reader<T>::read;
/// @brief Returns audio format description
virtual const audio_format_and_length& format() const = 0;
@@ -80,6 +82,8 @@ struct audio_reader : public abstract_reader<T>
template <typename T>
struct audio_writer : public abstract_writer<T>
{
+ /// @brief Writes interleaved audio
+ using abstract_writer<T>::writer;
/// @brief Returns audio format description
virtual const audio_format_and_length& format() const = 0;
diff --git a/include/kfr/io/file.hpp b/include/kfr/io/file.hpp
@@ -30,6 +30,7 @@
#include "../base/vec.hpp"
#include <cstdio>
#include <string>
+#include <vector>
namespace kfr
{
@@ -102,6 +103,20 @@ template <typename T = void>
struct abstract_reader : abstract_stream<T>
{
virtual size_t read(T* data, size_t size) = 0;
+
+ template <univector_tag Tag>
+ size_t read(univector<T, Tag>& data)
+ {
+ return read(data.data(), data.size());
+ }
+ size_t read(univector_ref<T>&& data) { return read(data.data(), data.size()); }
+
+ univector<T> read(size_t size)
+ {
+ univector<T> result(size);
+ this->read(result);
+ return result;
+ }
};
/// @brief Base class for all typed writers
@@ -109,6 +124,13 @@ template <typename T = void>
struct abstract_writer : abstract_stream<T>
{
virtual size_t write(const T* data, size_t size) = 0;
+
+ template <univector_tag Tag>
+ size_t write(const univector<T, Tag>& data)
+ {
+ return write(data.data(), data.size());
+ }
+ size_t write(univector_ref<const T>&& data) { return write(data.data(), data.size()); }
};
template <typename From, typename To = void>