tor-browser

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

RemoteMediaDataEncoderParent.h (2276B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 #ifndef include_dom_media_ipc_RemoteMediaDataEncoderParent_h
      7 #define include_dom_media_ipc_RemoteMediaDataEncoderParent_h
      8 
      9 #include <map>
     10 
     11 #include "PlatformEncoderModule.h"
     12 #include "mozilla/PRemoteEncoderParent.h"
     13 #include "mozilla/ShmemRecycleAllocator.h"
     14 
     15 namespace mozilla {
     16 namespace layers {
     17 class BufferRecycleBin;
     18 }
     19 
     20 class RemoteMediaManagerParent;
     21 using mozilla::ipc::IPCResult;
     22 
     23 class RemoteMediaDataEncoderParent final
     24    : public ShmemRecycleAllocator<RemoteMediaDataEncoderParent>,
     25      public PRemoteEncoderParent {
     26  friend class PRemoteEncoderParent;
     27 
     28 public:
     29  // We refcount this class since the task queue can have runnables
     30  // that reference us.
     31  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(RemoteMediaDataEncoderParent, final)
     32 
     33  explicit RemoteMediaDataEncoderParent(const EncoderConfig& aConfig);
     34 
     35  // PRemoteEncoderParent
     36  IPCResult RecvConstruct(ConstructResolver&& aResolver);
     37  IPCResult RecvInit(InitResolver&& aResolver);
     38  IPCResult RecvEncode(const EncodedInputIPDL& aData,
     39                       EncodeResolver&& aResolver);
     40  IPCResult RecvReconfigure(
     41      EncoderConfigurationChangeList* aConfigurationChanges,
     42      ReconfigureResolver&& aResolver);
     43  IPCResult RecvDrain(DrainResolver&& aResolver);
     44  IPCResult RecvReleaseTicket(const uint32_t& aTicketId);
     45  IPCResult RecvShutdown(ShutdownResolver&& aResolver);
     46  IPCResult RecvSetBitrate(const uint32_t& aBitrate,
     47                           SetBitrateResolver&& aResolver);
     48 
     49  void ActorDestroy(ActorDestroyReason aWhy) override;
     50 
     51 protected:
     52  virtual ~RemoteMediaDataEncoderParent();
     53 
     54  RefPtr<MediaDataEncoder> mEncoder;
     55  RefPtr<layers::BufferRecycleBin> mBufferRecycleBin;
     56  const EncoderConfig mConfig;
     57 
     58  std::map<uint32_t, RefPtr<ShmemRecycleTicket>> mTickets;
     59  uint32_t mTicketCounter = 0;
     60 
     61 private:
     62  const RefPtr<nsISerialEventTarget> mManagerThread;
     63 };
     64 
     65 }  // namespace mozilla
     66 
     67 #endif  // include_dom_media_ipc_RemoteMediaDataEncoderParent_h