12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #ifndef AUDIOCHUNKMANAGER_H
- #define AUDIOCHUNKMANAGER_H
- #include <memory>
- #include <atomic>
- #include <algorithm>
- #include <mutex>
- #include "Utils.h"
- #include "AudioChunk.h"
- #include "Queue.h"
- #include "Task.h"
- #define DATA_SIZE_HEADER 24
- #define DATA_SIZE_FOOTER 2
- class AudioChunkManager : public bell::Task {
- std::vector<std::shared_ptr<AudioChunk>> chunks;
- bell::Queue<std::pair<std::vector<uint8_t>, bool>> audioChunkDataQueue;
- void runTask();
- public:
- AudioChunkManager();
- std::atomic<bool> isRunning = false;
- std::mutex runningMutex;
- std::mutex chunkMutex;
-
- std::shared_ptr<AudioChunk> registerNewChunk(uint16_t seqId, std::vector<uint8_t> &audioKey, uint32_t startPos, uint32_t endPos);
-
- void handleChunkData(std::vector<uint8_t>& data, bool failed = false);
-
- void failAllChunks();
- void close();
- };
- #endif
|