mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
89 lines
2.5 KiB
C
89 lines
2.5 KiB
C
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||
|
/* 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 GMPParent_h_
|
||
|
#define GMPParent_h_
|
||
|
|
||
|
#include "GMPProcessParent.h"
|
||
|
#include "GMPVideoDecoderParent.h"
|
||
|
#include "GMPVideoEncoderParent.h"
|
||
|
#include "mozilla/gmp/PGMPParent.h"
|
||
|
#include "nsCOMPtr.h"
|
||
|
#include "nscore.h"
|
||
|
#include "nsISupports.h"
|
||
|
#include "nsString.h"
|
||
|
#include "nsTArray.h"
|
||
|
|
||
|
class nsILineInputStream;
|
||
|
class nsIThread;
|
||
|
class nsIFile;
|
||
|
|
||
|
namespace mozilla {
|
||
|
namespace gmp {
|
||
|
|
||
|
class GMPCapability
|
||
|
{
|
||
|
public:
|
||
|
nsCString mAPIName;
|
||
|
nsTArray<nsCString> mAPITags;
|
||
|
};
|
||
|
|
||
|
enum GMPState {
|
||
|
GMPStateNotLoaded,
|
||
|
GMPStateLoaded
|
||
|
};
|
||
|
|
||
|
class GMPParent MOZ_FINAL : public PGMPParent
|
||
|
{
|
||
|
public:
|
||
|
NS_INLINE_DECL_REFCOUNTING(GMPParent)
|
||
|
|
||
|
GMPParent();
|
||
|
|
||
|
nsresult Init(nsIFile* aPluginDir);
|
||
|
nsresult LoadProcess();
|
||
|
void MaybeUnloadProcess();
|
||
|
void UnloadProcess();
|
||
|
bool SupportsAPI(const nsCString& aAPI, const nsCString& aTag);
|
||
|
nsresult GetGMPVideoDecoder(GMPVideoDecoderParent** aGMPVD);
|
||
|
void VideoDecoderDestroyed(GMPVideoDecoderParent* aDecoder);
|
||
|
nsresult GetGMPVideoEncoder(GMPVideoEncoderParent** aGMPVE);
|
||
|
void VideoEncoderDestroyed(GMPVideoEncoderParent* aEncoder);
|
||
|
GMPState State() const;
|
||
|
#ifdef DEBUG
|
||
|
nsIThread* GMPThread();
|
||
|
#endif
|
||
|
|
||
|
private:
|
||
|
~GMPParent();
|
||
|
bool EnsureProcessLoaded();
|
||
|
nsresult ReadGMPMetaData();
|
||
|
virtual void ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
|
||
|
virtual PGMPVideoDecoderParent* AllocPGMPVideoDecoderParent() MOZ_OVERRIDE;
|
||
|
virtual bool DeallocPGMPVideoDecoderParent(PGMPVideoDecoderParent* aActor) MOZ_OVERRIDE;
|
||
|
virtual PGMPVideoEncoderParent* AllocPGMPVideoEncoderParent() MOZ_OVERRIDE;
|
||
|
virtual bool DeallocPGMPVideoEncoderParent(PGMPVideoEncoderParent* aActor) MOZ_OVERRIDE;
|
||
|
|
||
|
GMPState mState;
|
||
|
nsCOMPtr<nsIFile> mDirectory; // plugin directory on disk
|
||
|
nsString mName; // base name of plugin on disk, UTF-16 because used for paths
|
||
|
nsCString mDisplayName; // name of plugin displayed to users
|
||
|
nsCString mDescription; // description of plugin for display to users
|
||
|
nsCString mVersion;
|
||
|
nsTArray<nsAutoPtr<GMPCapability>> mCapabilities;
|
||
|
GMPProcessParent* mProcess;
|
||
|
|
||
|
nsTArray<nsRefPtr<GMPVideoDecoderParent>> mVideoDecoders;
|
||
|
nsTArray<nsRefPtr<GMPVideoEncoderParent>> mVideoEncoders;
|
||
|
#ifdef DEBUG
|
||
|
nsCOMPtr<nsIThread> mGMPThread;
|
||
|
#endif
|
||
|
};
|
||
|
|
||
|
} // namespace gmp
|
||
|
} // namespace mozilla
|
||
|
|
||
|
#endif // GMPParent_h_
|