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