/* Copyright (C) 2024 Vizrt NDI AB. All rights reserved. This file and its use within a Product is bound by the terms of NDI SDK license that was provided as part of the NDI SDK. For more information, please review the license and the NDI SDK documentation. */ #pragma once #include #include #include #include #include #include #include #include #include #include class NDIIO_API FNDIIOPluginModule : public IModuleInterface , public IMediaPlayerFactory { public: /** IModuleInterface implementation */ virtual void StartupModule() override; virtual void ShutdownModule() override; /** IMediaPlayerFactory implementation */ virtual bool CanPlayUrl(const FString& Url, const IMediaOptions* /*Options*/, TArray* /*OutWarnings*/, TArray* OutErrors) const override; virtual TSharedPtr CreatePlayer(IMediaEventSink& EventSink) override; virtual FText GetDisplayName() const override; virtual FName GetPlayerName() const override; virtual FGuid GetPlayerPluginGUID() const override; virtual const TArray& GetSupportedPlatforms() const override; virtual bool SupportsFeature(EMediaFeature Feature) const override; bool BeginBroadcastingActiveViewport(); void StopBroadcastingActiveViewport(); private: bool LoadModuleDependencies(); void ShutdownModuleDependencies(); private: TSharedPtr NDIFinderService = nullptr; TSharedPtr NDIConnectionService = nullptr; void* NDI_LIB_HANDLE = nullptr; /** List of platforms that the media player support. */ TArray SupportedPlatforms; /** List of supported URI schemes. */ TArray SupportedUriSchemes; };