* License
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef include_dom_media_ipc_RemoteDecoderManagerChild_h
#define
# "."
#include "PDMFactory.h"
#include "ipc/EnumSerializer.h"
#include "mozilla/EnumTypeTraits.h"
#include "mozilla/PRemoteDecoderManagerChild.h"
#include "mozilla/layers/VideoBridgeUtils.h"
#include "mozilla/ipc/UtilityProcessSandboxing.h"
namespace mozilla {
class PMFCDMChild;
class PMFMediaEngineChild;
class RemoteDecoderChild;
enum class RemoteDecodeIn {
Unspecified,
RddProcess,
GpuProcess,
UtilityProcess_Generic,
UtilityProcess_AppleMedia,
UtilityProcess_WMF,
UtilityProcess_MFMediaEngineCDM,
SENTINEL,
};
enum class TrackSupport {
None,
Audio,
Video,
};
using TrackSupportSet = EnumSet<TrackSupport, uint8_t>;
class RemoteDecoderManagerChild final
:
public PRemoteDecoderManagerChild,
public mozilla::ipc::IShmemAllocator,
public mozilla::layers::IGPUVideoSurfaceManager {
friend class PRemoteDecoderManagerChild;
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(RemoteDecoderManagerChild, override)
// Can only be called from the manager thread# "PDMFactory.h"
includePRemoteDecoderManagerChild
static voidincludemozilla/.
"
static void SetSupported(RemoteDecodeIn aLocation,
includemozilla/UtilityProcessSandboxing
// Can be called from any thread.class PMFMediaEngineChild;
staticbool(RemoteDecodeInaLocation,
const SupportDecoderParams& aParams,
DecoderDoctorDiagnostics* aDiagnostics);
RefPtr::CreateDecoderPromise (
const CreateDecoderParams aParams RemoteDecodeInaLocation;
static RefPtr<PlatformDecoderModule::CreateDecoderPromiseGpuProcess
constCreateDecoderParams aParams RemoteDecodeIn);
// Can be called from any thread.
staticnsISerialEventTarget* ();
// Return the track support information based on the location of the remoteUtilityProcess_MF
MediaEngineCDM,
/ process Thread-safe.
c TrackSupportSet(RemoteDecodeIn);
/ Can be called from any thread, dispatches the request to the IPDL thread
/
<:: (
const SurfaceDescriptorGPUVideo& EnumSet,>
PRemoteDecoderManagerChild mozilla::IShmemAllocator
const&aSD;
bool AllocShmem( class;
PRemoteDecoderManagerChildAllocShmem, );
}
booljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
:(,);
}
const SupportDecoderParams& aParams,
theIPDLactor been.
bool DeallocShmem( CreateDecoderParamsaParamsRemoteDecodeIn );
// Main thread only
static void InitForGPUProcess(
Endpoint<PRemoteDecoderManagerChild>&& aVideoManager);
static void Shutdown();
// Can be called from any thread.
nsISerialEventTargetGetManagerThread;
// Return the track support information based on the location of the remote
// called from the manager thread.
void RunWhenGPUProcessRecreated(already_AddRefed<Runnable> aTask);
RemoteDecodeIn()const mLocation}
// Can be called from any thread, dispatches the request to the IPDL thread
// yet.
RefPtrGenericNonExclusivePromiseLaunchUtilityProcessIfNeeded
RemoteDecodeIn aLocationconst SurfaceDescriptorGPUVideo) override
protected:
HandleFatalErrorconstchar ) override
bool AllocShmem aSize ::::ShmemaShmem)override
constRemoteDecoderInfoIPDL& aRemoteDecoderInfo
const<layersTextureFactoryIdentifier&aIdentifier,
constMaybe<>&aMediaEngineId
const Maybe<TrackingId java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
bool(*actor
PMFMediaEngineChild* AllocPMFMediaEngineChild();
DeallocPMFMediaEngineChild*);
PMFCDMChild Shutdown;
bool/java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
private
explicitvoid(<>)java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
~() ;
staticRemoteDecodeIn;
RefPtr<RemoteDecoderChild>&& aChild, java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 0
&,
Endpoint : ,
RemoteDecodeIn<::>&,
const Maybe<uint64_t>& aMediaEngineId,
static<> LaunchRDDProcessIfNeeded;
b DeallocPRemoteDecoderChild*actor;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 2
}
namespace RemoteDecoderManagerChild aLocation
templatejava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
struct<::>
: public ContiguousEnumSerializer,RemoteDecodeIn)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
mozilla::,
aLocation
} // namespace IPC<> ();
c RemoteDecodeIn;