58class BWFFile :
public QIODevice {
61 using FileHandleFlags = QFile::FileHandleFlags;
62 using Permissions = QFile::Permissions;
63 using FileError = QFile::FileError;
64 using MemoryMapFlags = QFile::MemoryMapFlags;
65 using InfoDictionary = QMap<std::array<char, 4>, QByteArray>;
66 using UMID = std::array<quint8, 64>;
68 explicit BWFFile(QAudioFormat
const &, QObject *parent =
nullptr);
69 explicit BWFFile(QAudioFormat
const &, QString
const &name,
70 QObject *parent =
nullptr);
91 explicit BWFFile(QAudioFormat
const &, QString
const &name,
92 InfoDictionary
const &, QObject *parent =
nullptr);
95 QAudioFormat
const &format()
const;
96 InfoDictionary &list_info();
105 enum class BextVersion : quint16 { v_0, v_1, v_2 };
106 BextVersion bext_version()
const;
107 void bext_version(BextVersion = BextVersion::v_2);
109 QByteArray bext_description()
const;
110 void bext_description(QByteArray
const &);
112 QByteArray bext_originator()
const;
113 void bext_originator(QByteArray
const &);
115 QByteArray bext_originator_reference()
const;
116 void bext_originator_reference(QByteArray
const &);
118 QDateTime bext_origination_date_time()
const;
119 void bext_origination_date_time(QDateTime
const &);
121 quint64 bext_time_reference()
const;
122 void bext_time_reference(quint64);
124 UMID bext_umid()
const;
125 void bext_umid(UMID
const &);
127 quint16 bext_loudness_value()
const;
128 void bext_loudness_value(quint16);
130 quint16 bext_loudness_range()
const;
131 void bext_loudness_range(quint16);
133 quint16 bext_max_true_peak_level()
const;
134 void bext_max_true_peak_level(quint16);
136 quint16 bext_max_momentary_loudness()
const;
137 void bext_max_momentary_loudness(quint16);
139 quint16 bext_max_short_term_loudness()
const;
140 void bext_max_short_term_loudness(quint16);
142 QByteArray bext_coding_history()
const;
143 void bext_coding_history(QByteArray
const &);
146 bool open(OpenMode)
override;
147 bool open(FILE *, OpenMode, FileHandleFlags = QFile::DontCloseHandle);
148 bool open(
int fd, OpenMode, FileHandleFlags = QFile::DontCloseHandle);
149 bool copy(QString
const &new_name);
151 bool link(QString
const &link_name);
153 bool rename(QString
const &new_name);
154 void setFileName(QString
const &name);
155 QString symLinkTarget()
const;
156 QString fileName()
const;
157 Permissions permissions()
const;
161 bool resize(qint64 new_size);
163 bool setPermissions(Permissions permissions);
164 FileError error()
const;
169 uchar *map(qint64 offset, qint64 size, MemoryMapFlags = QFile::NoOptions);
170 bool unmap(uchar *address);
180 qint64 size()
const override;
182 bool isSequential()
const override;
184 quint16 bitsPerSample()
const;
185 quint16 blockAlign()
const;
191 bool reset()
override;
194 bool seek(qint64)
override;
197 void close()
override;
200 qint64 readData(
char *data, qint64 max_size)
override;
201 qint64 writeData(
char const *data, qint64 max_size)
override;