xref: /MusicPlayer2/MusicPlayer2/MediaTransControls.h (revision 8e56057114bc0924285553f858039d5de888d7b7)
1 #pragma once
2 #include "SongInfo.h"
3 
4 enum class PlaybackStatus
5 {
6     Closed = 0,
7     Changing = 1,
8     Stopped = 2,
9     Playing = 3,
10     Paused = 4,
11 };
12 
13 class MediaTransControlsImpl;
14 
15 class MediaTransControls {
16 public:
17     MediaTransControls();
18     ~MediaTransControls();
19     bool InitSMTC(bool enable);
20     void loadThumbnail(const wstring& fn);
21     void loadThumbnail(const BYTE* content, size_t size);
22     bool IsActive();
23     void ClearAll();
24     void UpdateControls(PlaybackStatus status);
25     void UpdateControlsMetadata(const SongInfo& song);
26     /// Update current time, in milliseconds
27     void UpdatePosition(int64_t postion, bool force = false);
28     /// Update current speed
29     void UpdateSpeed(float speed);
30 
31 #ifndef DISABLE_MEDIA_TRANS_CONTROLS
32 private:
33     std::mutex m_mutex;     // 使用pImpl指针期间锁定此互斥量
34     std::unique_ptr<MediaTransControlsImpl> pImpl;
35 #endif
36 };
37