// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include "Audio/StreamQueuedEventsListener.hpp" namespace audio { class Decoder; class DecoderWorker : public sys::Worker { public: using EndOfFileCallback = std::function; DecoderWorker(Stream &audioStreamOut, Decoder *decoder, EndOfFileCallback endOfFileCallback); ~DecoderWorker() override; virtual auto init(std::list queues = std::list()) -> bool override; virtual auto handleMessage(uint32_t queueID) -> bool override; private: using BufferInternalType = int16_t; static constexpr auto workerName = "DecoderWorker"; static constexpr auto workerPriority = static_cast(sys::ServicePriority::Idle); static constexpr auto listenerQueueName = "DecoderWorkerQueue"; static constexpr auto listenerQueueCapacity = 1024; Stream &audioStreamOut; Decoder *decoder = nullptr; EndOfFileCallback endOfFileCallback; std::unique_ptr queueListener; const int bufferSize; std::unique_ptr decoderBuffer; }; } // namespace audio