fune/ipc/glue/UtilityAudioDecoderParent.h
alwu 3d1bc29d56 Bug 1785738 - part4 : run media engine in the new utility process. r=gerard-majax,azebrowski
This patch moves the media engine from the RDD process to the new
utility process, and create video bridge between the new utility process
and the GPU process in order to share the texture.

Differential Revision: https://phabricator.services.mozilla.com/D155901
2022-09-03 00:53:59 +00:00

54 lines
1.7 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 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_ipc_glue_UtilityAudioDecoderParent_h_
#define _include_ipc_glue_UtilityAudioDecoderParent_h_
#include "mozilla/PRemoteDecoderManagerParent.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/PUtilityAudioDecoderParent.h"
#include "mozilla/ipc/UtilityProcessSandboxing.h"
#include "nsThreadManager.h"
namespace mozilla::ipc {
// This is in charge of handling the utility child process side to perform
// audio decoding
class UtilityAudioDecoderParent final : public PUtilityAudioDecoderParent {
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(UtilityAudioDecoderParent, override);
UtilityAudioDecoderParent();
static void GenericPreloadForSandbox();
static void WMFPreloadForSandbox();
void Start(Endpoint<PUtilityAudioDecoderParent>&& aEndpoint);
mozilla::ipc::IPCResult RecvNewContentRemoteDecoderManager(
Endpoint<PRemoteDecoderManagerParent>&& aEndpoint);
#ifdef MOZ_WMF_MEDIA_ENGINE
mozilla::ipc::IPCResult RecvInitVideoBridge(
Endpoint<PVideoBridgeChild>&& aEndpoint,
nsTArray<mozilla::gfx::GfxVarUpdate>&& aUpdates,
const ContentDeviceData& aContentDeviceData);
IPCResult RecvUpdateVar(const mozilla::gfx::GfxVarUpdate& aUpdate);
#endif
static SandboxingKind GetSandboxingKind();
private:
~UtilityAudioDecoderParent() = default;
};
} // namespace mozilla::ipc
#endif // _include_ipc_glue_UtilityAudioDecoderParent_h_