tor-browser

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

MediaEngineWebRTC.h (1938B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
      4 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 #ifndef MEDIAENGINEWEBRTC_H_
      7 #define MEDIAENGINEWEBRTC_H_
      8 
      9 #include "CubebDeviceEnumerator.h"
     10 #include "MediaEngine.h"
     11 #include "MediaEngineSource.h"
     12 #include "MediaEventSource.h"
     13 #include "mozilla/RefPtr.h"
     14 #include "mozilla/dom/MediaStreamTrackBinding.h"
     15 #include "nsTArray.h"
     16 
     17 namespace mozilla {
     18 
     19 class MediaEngineWebRTC : public MediaEngine {
     20 public:
     21  MediaEngineWebRTC();
     22 
     23  // Clients should ensure to clean-up sources video/audio sources
     24  // before invoking Shutdown on this class.
     25  void Shutdown() override;
     26 
     27  void EnumerateDevices(dom::MediaSourceEnum, MediaSinkEnum,
     28                        nsTArray<RefPtr<MediaDevice>>*) override;
     29  RefPtr<MediaEngineSource> CreateSource(const MediaDevice* aDevice) override;
     30  RefPtr<MediaEngineSource> CreateSourceFrom(const MediaEngineSource* aSource,
     31                                             const MediaDevice*) override;
     32 
     33  MediaEventSource<void>& DeviceListChangeEvent() override {
     34    return mDeviceListChangeEvent;
     35  }
     36  bool IsFake() const override { return false; }
     37 
     38 private:
     39  ~MediaEngineWebRTC() = default;
     40  void EnumerateVideoDevices(dom::MediaSourceEnum,
     41                             nsTArray<RefPtr<MediaDevice>>*);
     42  void EnumerateMicrophoneDevices(nsTArray<RefPtr<MediaDevice>>*);
     43  void EnumerateSpeakerDevices(nsTArray<RefPtr<MediaDevice>>*);
     44 
     45  void DeviceListChanged() { mDeviceListChangeEvent.Notify(); }
     46 
     47  MediaEventListener mCameraListChangeListener;
     48  MediaEventListener mMicrophoneListChangeListener;
     49  MediaEventListener mSpeakerListChangeListener;
     50  MediaEventProducer<void> mDeviceListChangeEvent;
     51 };
     52 
     53 }  // namespace mozilla
     54 
     55 #endif /* NSMEDIAENGINEWEBRTC_H_ */