52class BWFFile :
public QIODevice {
55 using FileHandleFlags = QFile::FileHandleFlags;
56 using Permissions = QFile::Permissions;
57 using FileError = QFile::FileError;
58 using MemoryMapFlags = QFile::MemoryMapFlags;
59 using InfoDictionary = QMap<std::array<char, 4>, QByteArray>;
60 using UMID = std::array<quint8, 64>;
62 explicit BWFFile(QAudioFormat
const &, QObject *parent =
nullptr);
63 explicit BWFFile(QAudioFormat
const &, QString
const &name,
64 QObject *parent =
nullptr);
67 explicit BWFFile(QAudioFormat
const &, QString
const &name,
68 InfoDictionary
const &, QObject *parent =
nullptr);
71 QAudioFormat
const &format()
const;
72 InfoDictionary &list_info();
81 enum class BextVersion : quint16 { v_0, v_1, v_2 };
82 BextVersion bext_version()
const;
83 void bext_version(BextVersion = BextVersion::v_2);
85 QByteArray bext_description()
const;
86 void bext_description(QByteArray
const &);
88 QByteArray bext_originator()
const;
89 void bext_originator(QByteArray
const &);
91 QByteArray bext_originator_reference()
const;
92 void bext_originator_reference(QByteArray
const &);
94 QDateTime bext_origination_date_time()
const;
95 void bext_origination_date_time(QDateTime
const &);
97 quint64 bext_time_reference()
const;
98 void bext_time_reference(quint64);
100 UMID bext_umid()
const;
101 void bext_umid(UMID
const &);
103 quint16 bext_loudness_value()
const;
104 void bext_loudness_value(quint16);
106 quint16 bext_loudness_range()
const;
107 void bext_loudness_range(quint16);
109 quint16 bext_max_true_peak_level()
const;
110 void bext_max_true_peak_level(quint16);
112 quint16 bext_max_momentary_loudness()
const;
113 void bext_max_momentary_loudness(quint16);
115 quint16 bext_max_short_term_loudness()
const;
116 void bext_max_short_term_loudness(quint16);
118 QByteArray bext_coding_history()
const;
119 void bext_coding_history(QByteArray
const &);
122 bool open(OpenMode)
override;
123 bool open(FILE *, OpenMode, FileHandleFlags = QFile::DontCloseHandle);
124 bool open(
int fd, OpenMode, FileHandleFlags = QFile::DontCloseHandle);
125 bool copy(QString
const &new_name);
127 bool link(QString
const &link_name);
129 bool rename(QString
const &new_name);
130 void setFileName(QString
const &name);
131 QString symLinkTarget()
const;
132 QString fileName()
const;
133 Permissions permissions()
const;
137 bool resize(qint64 new_size);
139 bool setPermissions(Permissions permissions);
140 FileError error()
const;
145 uchar *map(qint64 offset, qint64 size, MemoryMapFlags = QFile::NoOptions);
146 bool unmap(uchar *address);
156 qint64 size()
const override;
158 bool isSequential()
const override;
160 quint16 bitsPerSample()
const;
161 quint16 blockAlign()
const;
167 bool reset()
override;
170 bool seek(qint64)
override;
173 void close()
override;
176 qint64 readData(
char *data, qint64 max_size)
override;
177 qint64 writeData(
char const *data, qint64 max_size)
override;