tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

MFMediaEngineNotify.h (1754B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #ifndef DOM_MEDIA_PLATFORM_WMF_MFMEDIAENGINENOTIFY_H
      6 #define DOM_MEDIA_PLATFORM_WMF_MFMEDIAENGINENOTIFY_H
      7 
      8 #include <wrl.h>
      9 
     10 #include "MFMediaEngineExtra.h"
     11 #include "MediaEventSource.h"
     12 #include "mozilla/Maybe.h"
     13 
     14 namespace mozilla {
     15 
     16 const char* MediaEngineEventToStr(MF_MEDIA_ENGINE_EVENT aEvent);
     17 
     18 // https://docs.microsoft.com/en-us/windows/win32/api/mfmediaengine/ne-mfmediaengine-mf_media_engine_event
     19 struct MFMediaEngineEventWrapper final {
     20  explicit MFMediaEngineEventWrapper(MF_MEDIA_ENGINE_EVENT aEvent)
     21      : mEvent(aEvent) {}
     22  MF_MEDIA_ENGINE_EVENT mEvent;
     23  Maybe<DWORD_PTR> mParam1;
     24  Maybe<DWORD> mParam2;
     25 };
     26 
     27 /**
     28 * MFMediaEngineNotify is used to handle the event sent from the media engine.
     29 * https://docs.microsoft.com/en-us/windows/win32/api/mfmediaengine/nn-mfmediaengine-imfmediaenginenotify
     30 */
     31 class MFMediaEngineNotify final
     32    : public Microsoft::WRL::RuntimeClass<
     33          Microsoft::WRL::RuntimeClassFlags<
     34              Microsoft::WRL::RuntimeClassType::ClassicCom>,
     35          IMFMediaEngineNotify> {
     36 public:
     37  MFMediaEngineNotify() = default;
     38 
     39  HRESULT RuntimeClassInitialize() { return S_OK; }
     40 
     41  // Method for IMFMediaEngineNotify
     42  IFACEMETHODIMP EventNotify(DWORD aEvent, DWORD_PTR aParam1,
     43                             DWORD aParam2) override;
     44 
     45  MediaEventSource<MFMediaEngineEventWrapper>& MediaEngineEvent() {
     46    return mEngineEvents;
     47  }
     48 
     49 private:
     50  MediaEventProducer<MFMediaEngineEventWrapper> mEngineEvents;
     51 };
     52 
     53 }  // namespace mozilla
     54 
     55 #endif  // DOM_MEDIA_PLATFORM_WMF_MFMEDIAENGINENOTIFY_H