diff --git a/src/libs/audio/impl/taglib/AudioFileInfo.cpp b/src/libs/audio/impl/taglib/AudioFileInfo.cpp index f42ff842..17d43a3e 100644 --- a/src/libs/audio/impl/taglib/AudioFileInfo.cpp +++ b/src/libs/audio/impl/taglib/AudioFileInfo.cpp @@ -43,8 +43,11 @@ #include #endif +#include "audio/AudioTypes.hpp" #include "audio/IAudioFileInfo.hpp" +#include "ImageReader.hpp" +#include "TagReader.hpp" #include "Utils.hpp" namespace lms::audio::taglib @@ -219,25 +222,27 @@ namespace lms::audio::taglib AudioFileInfo::AudioFileInfo(const std::filesystem::path& filePath, ParserOptions::AudioPropertiesReadStyle readStyle, bool enableExtraDebugLogs) : _filePath{ filePath } , _file{ utils::parseFile(filePath, readStyle) } - , _audioProperties{ computeAudioProperties(*_file) } - , _tagReader{ *_file, enableExtraDebugLogs } - , _imageReader{ *_file } + , _audioProperties{ std::make_unique(computeAudioProperties(*_file)) } + , _tagReader{ std::make_unique(*_file, enableExtraDebugLogs) } + , _imageReader{ std::make_unique(*_file) } { } + AudioFileInfo::~AudioFileInfo() = default; + const AudioProperties& AudioFileInfo::getAudioProperties() const { - return _audioProperties; + return *_audioProperties; } const IImageReader& AudioFileInfo::getImageReader() const { - return _imageReader; + return *_imageReader; } const ITagReader& AudioFileInfo::getTagReader() const { - return _tagReader; + return *_tagReader; } } // namespace lms::audio::taglib diff --git a/src/libs/audio/impl/taglib/AudioFileInfo.hpp b/src/libs/audio/impl/taglib/AudioFileInfo.hpp index bd0eaae2..4cd85452 100644 --- a/src/libs/audio/impl/taglib/AudioFileInfo.hpp +++ b/src/libs/audio/impl/taglib/AudioFileInfo.hpp @@ -19,22 +19,29 @@ #pragma once -#include - #include "audio/AudioTypes.hpp" #include "audio/IAudioFileInfo.hpp" #include "audio/IImageReader.hpp" #include "audio/ITagReader.hpp" -#include "ImageReader.hpp" -#include "TagReader.hpp" +namespace TagLib +{ + class File; +} namespace lms::audio::taglib { + class ImageReader; + class TagReader; + class AudioFileInfo final : public IAudioFileInfo { public: AudioFileInfo(const std::filesystem::path& filePath, ParserOptions::AudioPropertiesReadStyle readStyle, bool enableExtraDebugLogs); + ~AudioFileInfo() override; + + AudioFileInfo(const AudioFileInfo&) = delete; + AudioFileInfo& operator=(const AudioFileInfo&) = delete; private: const AudioProperties& getAudioProperties() const override; @@ -43,8 +50,8 @@ namespace lms::audio::taglib const std::filesystem::path _filePath; std::unique_ptr<::TagLib::File> _file; - const AudioProperties _audioProperties; - const TagReader _tagReader; - const ImageReader _imageReader; + std::unique_ptr _audioProperties; + std::unique_ptr _tagReader; + std::unique_ptr _imageReader; }; } // namespace lms::audio::taglib