1. 稍微重构了一下项目代码结构,使其更加合理

2. 重构了音频播放类,简化其接口,并支持流式wav音频播放
3. 增加了对流式音频数据的处理类
4. 增加了对GUI自动化操作的处理类
This commit is contained in:
Misaki
2026-01-31 23:03:22 +08:00
parent 96b5ed59b7
commit c32f085732
51 changed files with 729 additions and 487 deletions
+11 -8
View File
@@ -3,29 +3,30 @@
//
#include "AudioDataTransferObject.h"
#include <QJsonValue>
#include <utility>
// 构造函数实现(初始化列表)
AudioDataTransferObject::AudioDataTransferObject(const QString& owner,
AudioDataTransferObject::AudioDataTransferObject(QString owner,
bool isStream,
bool isStart,
bool isEnd,
int sequence,
const QByteArray& data,
QByteArray data,
int sampleRate,
int channelCount,
int bitDepth,
double duration,
const QString& text)
: m_owner(owner)
QString text)
: m_owner(std::move(owner))
, m_isStream(isStream)
, m_isStart(isStart)
, m_isEnd(isEnd)
, m_sequence(sequence)
, m_data(data)
, m_data(std::move(data))
, m_sampleRate(sampleRate)
, m_channelCount(channelCount)
, m_bitDepth(bitDepth)
, m_duration(duration)
, m_text(text) {
, m_text(std::move(text)) {
}
// 静态工厂方法:从 JSON 反序列化
@@ -86,7 +87,7 @@ AudioDataTransferObject& AudioDataTransferObject::setData(const QString& key,
} else if (key == "sequence") {
m_sequence = value.toInt();
} else if (key == "data") {
// 这里要求是 base64 字符串
// 这里要求传入的是 base64 字符串
m_data = QByteArray::fromBase64(value.toString().toUtf8());
} else if (key == "sampleRate") {
m_sampleRate = value.toInt();
@@ -98,7 +99,9 @@ AudioDataTransferObject& AudioDataTransferObject::setData(const QString& key,
m_duration = value.toDouble();
} else if (key == "text") {
m_text = value.toString();
} else {
qWarning() << "Unknown key or invalid value type:" << key << value;
}
// 如果 key 不存在,默认忽略
return *this; // 返回自身引用,支持链式调用
}