<NME> VlcMediaFactoryModule.cpp
<BEF> // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.

#include "Containers/Array.h"
#include "Containers/UnrealString.h"
#include "IMediaPlayerFactory.h"
#include "IMediaModule.h"
#include "IMediaOptions.h"
#include "Internationalization/Internationalization.h"
#include "Misc/Paths.h"
#include "Modules/ModuleInterface.h"
#include "Modules/ModuleManager.h"
#include "UObject/Class.h"
#include "UObject/NameTypes.h"
#include "UObject/UObjectGlobals.h"
#include "UObject/WeakObjectPtr.h"

#if WITH_EDITOR
	#include "ISettingsModule.h"
	#include "ISettingsSection.h"
	#include "VlcMediaSettings.h"
#endif

#include "../../VlcMedia/Public/IVlcMediaModule.h"


#define LOCTEXT_NAMESPACE "FVlcMediaFactoryModule"


/**
 * Implements the VlcMediaFactory module.
 */
class FVlcMediaFactoryModule
	: public IMediaPlayerFactory
	, public IModuleInterface
{
public:

	//~ IMediaPlayerFactory interface

	virtual bool CanPlayUrl(const FString& Url, const IMediaOptions* Options, TArray<FText>* OutWarnings, TArray<FText>* OutErrors) const override
	{
		FString Scheme;
		FString Location;

		// check scheme
		if (!Url.Split(TEXT("://"), &Scheme, &Location, ESearchCase::CaseSensitive))
		{
			if (OutErrors != nullptr)
			{
				OutErrors->Add(LOCTEXT("NoSchemeFound", "No URI scheme found"));
			}

			return false;
		}

		if (!SupportedUriSchemes.Contains(Scheme))
		{
			if (OutErrors != nullptr)
			{
				OutErrors->Add(FText::Format(LOCTEXT("SchemeNotSupported", "The URI scheme '{0}' is not supported"), FText::FromString(Scheme)));
			}

			return false;
		}

		// check file extension
		if (Scheme == TEXT("file"))
		{
			const FString Extension = FPaths::GetExtension(Location, false);

			if (!SupportedFileExtensions.Contains(Extension))
			{
				if (OutErrors != nullptr)
				{
					OutErrors->Add(FText::Format(LOCTEXT("ExtensionNotSupported", "The file extension '{0}' is not supported"), FText::FromString(Extension)));
				}

				return false;
			}
		}

		// check options
		if ((OutWarnings != nullptr) && (Options != nullptr))
		{
			if (Options->GetMediaOption("PrecacheFile", false) && (Scheme != TEXT("file")))
			{
				OutWarnings->Add(LOCTEXT("PrecacheFileWarning", "Precaching is supported for local files only"));
			}
		}

		return true;
	}

	virtual TSharedPtr<IMediaPlayer, ESPMode::ThreadSafe> CreatePlayer(IMediaEventSink& EventSink) override
	{
		auto VlcMediaModule = FModuleManager::LoadModulePtr<IVlcMediaModule>("VlcMedia");
		return (VlcMediaModule != nullptr) ? VlcMediaModule->CreatePlayer(EventSink) : nullptr;
	}

	virtual FText GetDisplayName() const override
	{
		return LOCTEXT("MediaPlayerDisplayName", "VideoLAN Player");
	}

	virtual FName GetPlayerName() const override
	{
		static FName PlayerName(TEXT("VlcMedia"));
		return PlayerName;
	}

	virtual const TArray<FString>& GetSupportedPlatforms() const override
	{
		return SupportedPlatforms;
	}

	virtual bool SupportsFeature(EMediaFeature Feature) const override
	{
		return ((Feature == EMediaFeature::AudioSamples) ||
				(Feature == EMediaFeature::AudioTracks) ||
				(Feature == EMediaFeature::CaptionTracks) ||
				(Feature == EMediaFeature::Video360) ||
				(Feature == EMediaFeature::VideoSamples) ||
				(Feature == EMediaFeature::VideoTracks));

	}

public:

	//~ IModuleInterface interface

	virtual void StartupModule() override
	{
		// supported file extensions
		SupportedFileExtensions.Add(TEXT("3g2"));
		SupportedFileExtensions.Add(TEXT("3ga"));
		SupportedFileExtensions.Add(TEXT("3gp"));
		SupportedFileExtensions.Add(TEXT("3gp2"));
		SupportedFileExtensions.Add(TEXT("3gpp"));
		SupportedFileExtensions.Add(TEXT("669"));
		SupportedFileExtensions.Add(TEXT("a52"));
		SupportedFileExtensions.Add(TEXT("aac"));
		SupportedFileExtensions.Add(TEXT("ac3"));
		SupportedFileExtensions.Add(TEXT("adt"));
		SupportedFileExtensions.Add(TEXT("adts"));
		SupportedFileExtensions.Add(TEXT("aif"));
		SupportedFileExtensions.Add(TEXT("aifc"));
		SupportedFileExtensions.Add(TEXT("aiff"));
		SupportedFileExtensions.Add(TEXT("amb"));
		SupportedFileExtensions.Add(TEXT("amr"));
		SupportedFileExtensions.Add(TEXT("amv"));
		SupportedFileExtensions.Add(TEXT("aob"));
		SupportedFileExtensions.Add(TEXT("ape"));
		SupportedFileExtensions.Add(TEXT("asf"));
		SupportedFileExtensions.Add(TEXT("au"));
		SupportedFileExtensions.Add(TEXT("avi"));
		SupportedFileExtensions.Add(TEXT("awb"));
		SupportedFileExtensions.Add(TEXT("bik"));
		SupportedFileExtensions.Add(TEXT("bin"));
		SupportedFileExtensions.Add(TEXT("caf"));
		SupportedFileExtensions.Add(TEXT("crf"));
		SupportedFileExtensions.Add(TEXT("divx"));
		SupportedFileExtensions.Add(TEXT("drc"));
		SupportedFileExtensions.Add(TEXT("dts"));
		SupportedFileExtensions.Add(TEXT("dv"));
		SupportedFileExtensions.Add(TEXT("evo"));
		SupportedFileExtensions.Add(TEXT("f4v"));
		SupportedFileExtensions.Add(TEXT("flac"));
		SupportedFileExtensions.Add(TEXT("flv"));
		SupportedFileExtensions.Add(TEXT("gvi"));
		SupportedFileExtensions.Add(TEXT("gxf"));
		SupportedFileExtensions.Add(TEXT("iso"));
		SupportedFileExtensions.Add(TEXT("it"));
		SupportedFileExtensions.Add(TEXT("kar"));
		SupportedFileExtensions.Add(TEXT("m1v"));
		SupportedFileExtensions.Add(TEXT("m2t"));
		SupportedFileExtensions.Add(TEXT("m2ts"));
		SupportedFileExtensions.Add(TEXT("m2v"));
		SupportedFileExtensions.Add(TEXT("m4a"));
		SupportedFileExtensions.Add(TEXT("m4b"));
		SupportedFileExtensions.Add(TEXT("m4p"));
		SupportedFileExtensions.Add(TEXT("m5p"));
		SupportedFileExtensions.Add(TEXT("m4v"));
		SupportedFileExtensions.Add(TEXT("mid"));
		SupportedFileExtensions.Add(TEXT("mka"));
		SupportedFileExtensions.Add(TEXT("mkv"));
		SupportedFileExtensions.Add(TEXT("mlp"));
		SupportedFileExtensions.Add(TEXT("mod"));
		SupportedFileExtensions.Add(TEXT("mov"));
		SupportedFileExtensions.Add(TEXT("mp1"));
		SupportedFileExtensions.Add(TEXT("mp2"));
		SupportedFileExtensions.Add(TEXT("mp2v"));
		SupportedFileExtensions.Add(TEXT("mp3"));
		SupportedFileExtensions.Add(TEXT("mp4"));
		SupportedFileExtensions.Add(TEXT("mp4v"));
		SupportedFileExtensions.Add(TEXT("mpa"));
		SupportedFileExtensions.Add(TEXT("mpc"));
		SupportedFileExtensions.Add(TEXT("mpe"));
		SupportedFileExtensions.Add(TEXT("mpeg"));
		SupportedFileExtensions.Add(TEXT("mpeg1"));
		SupportedFileExtensions.Add(TEXT("mpeg2"));
		SupportedFileExtensions.Add(TEXT("mpeg4"));
		SupportedFileExtensions.Add(TEXT("mpg"));
		SupportedFileExtensions.Add(TEXT("mpga"));
		SupportedFileExtensions.Add(TEXT("mpv2"));
		SupportedFileExtensions.Add(TEXT("mts"));
		SupportedFileExtensions.Add(TEXT("mtv"));
		SupportedFileExtensions.Add(TEXT("mus"));
		SupportedFileExtensions.Add(TEXT("mxf"));
		SupportedFileExtensions.Add(TEXT("mxg"));
		SupportedFileExtensions.Add(TEXT("nsc"));
		SupportedFileExtensions.Add(TEXT("nsv"));
		SupportedFileExtensions.Add(TEXT("nuv"));
		SupportedFileExtensions.Add(TEXT("nut"));
		SupportedFileExtensions.Add(TEXT("oga"));
		SupportedFileExtensions.Add(TEXT("ogg"));
		SupportedFileExtensions.Add(TEXT("ogm"));
		SupportedFileExtensions.Add(TEXT("ogv"));
		SupportedFileExtensions.Add(TEXT("ogx"));
		SupportedFileExtensions.Add(TEXT("oma"));
		SupportedFileExtensions.Add(TEXT("opus"));
		SupportedFileExtensions.Add(TEXT("qcp"));
		SupportedFileExtensions.Add(TEXT("ps"));
		SupportedFileExtensions.Add(TEXT("ra"));
		SupportedFileExtensions.Add(TEXT("ram"));
		SupportedFileExtensions.Add(TEXT("rec"));
		SupportedFileExtensions.Add(TEXT("rm"));
		SupportedFileExtensions.Add(TEXT("rmi"));
		SupportedFileExtensions.Add(TEXT("rmvb"));
		SupportedFileExtensions.Add(TEXT("rpl"));
		SupportedFileExtensions.Add(TEXT("rv"));
		SupportedFileExtensions.Add(TEXT("s3m"));
		SupportedFileExtensions.Add(TEXT("sdp"));
		SupportedFileExtensions.Add(TEXT("sid"));
		SupportedFileExtensions.Add(TEXT("spx"));
		SupportedFileExtensions.Add(TEXT("ts"));
		SupportedFileExtensions.Add(TEXT("tak"));
		SupportedFileExtensions.Add(TEXT("thd"));
		SupportedFileExtensions.Add(TEXT("thp"));
		SupportedFileExtensions.Add(TEXT("tod"));
		SupportedFileExtensions.Add(TEXT("tta"));
		SupportedFileExtensions.Add(TEXT("rp"));
		SupportedFileExtensions.Add(TEXT("rs"));
		SupportedFileExtensions.Add(TEXT("tta"));
		SupportedFileExtensions.Add(TEXT("tts"));
		SupportedFileExtensions.Add(TEXT("txd"));
		SupportedFileExtensions.Add(TEXT("ty"));
		SupportedFileExtensions.Add(TEXT("vid"));
		SupportedFileExtensions.Add(TEXT("vob"));
		SupportedFileExtensions.Add(TEXT("voc"));
		SupportedFileExtensions.Add(TEXT("vqf"));
		SupportedFileExtensions.Add(TEXT("vro"));
		SupportedFileExtensions.Add(TEXT("w64"));
		SupportedFileExtensions.Add(TEXT("wav"));
		SupportedFileExtensions.Add(TEXT("webm"));
		SupportedFileExtensions.Add(TEXT("wm"));
		SupportedFileExtensions.Add(TEXT("wma"));
		SupportedFileExtensions.Add(TEXT("wmv"));
		SupportedFileExtensions.Add(TEXT("wtv"));
		SupportedFileExtensions.Add(TEXT("wv"));
		SupportedFileExtensions.Add(TEXT("xa"));
		SupportedFileExtensions.Add(TEXT("xesc"));
		SupportedFileExtensions.Add(TEXT("xm"));

		// supported platforms
		SupportedPlatforms.Add(TEXT("Linux"));
		SupportedPlatforms.Add(TEXT("Mac"));
		SupportedPlatforms.Add(TEXT("Windows"));
		SupportedPlatforms.Add(TEXT("WinRT"));

		// supported schemes
		SupportedUriSchemes.Add(TEXT("cdda"));
		SupportedUriSchemes.Add(TEXT("dccp"));
		SupportedUriSchemes.Add(TEXT("dshow"));
		SupportedUriSchemes.Add(TEXT("dvd"));
		SupportedUriSchemes.Add(TEXT("file"));
		SupportedUriSchemes.Add(TEXT("dvd"));
		SupportedUriSchemes.Add(TEXT("ftp"));
		SupportedUriSchemes.Add(TEXT("http"));
		SupportedUriSchemes.Add(TEXT("https"));
		SupportedUriSchemes.Add(TEXT("icyx"));
		SupportedUriSchemes.Add(TEXT("itpc"));
		SupportedUriSchemes.Add(TEXT("mms"));
		SupportedUriSchemes.Add(TEXT("mmsh"));
		SupportedUriSchemes.Add(TEXT("mmst"));
		SupportedUriSchemes.Add(TEXT("mmsu"));
		SupportedUriSchemes.Add(TEXT("mtp"));
		SupportedUriSchemes.Add(TEXT("pnm"));
		SupportedUriSchemes.Add(TEXT("realrtsp"));
		SupportedUriSchemes.Add(TEXT("rtmp"));
		SupportedUriSchemes.Add(TEXT("rtp"));
		SupportedUriSchemes.Add(TEXT("rtsp"));
		SupportedUriSchemes.Add(TEXT("sap"));
		SupportedUriSchemes.Add(TEXT("smb"));
		SupportedUriSchemes.Add(TEXT("screen"));
		SupportedUriSchemes.Add(TEXT("unsv"));
		SupportedUriSchemes.Add(TEXT("v4l2"));
		SupportedUriSchemes.Add(TEXT("vcd"));

#if WITH_EDITOR
		// register settings
		ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");

		if (SettingsModule != nullptr)
		{
			ISettingsSectionPtr SettingsSection = SettingsModule->RegisterSettings("Project", "Plugins", "VlcMedia",
				LOCTEXT("VlcMediaSettingsName", "VLC Media"),
				LOCTEXT("VlcMediaSettingsDescription", "Configure the VLC Media plug-in."),
				GetMutableDefault<UVlcMediaSettings>()
			);
		}
#endif //WITH_EDITOR

		// register player factory
		auto MediaModule = FModuleManager::LoadModulePtr<IMediaModule>("Media");

		if (MediaModule != nullptr)
		{
			MediaModule->RegisterPlayerFactory(*this);
		}
	}

	virtual void ShutdownModule() override
	{
		// unregister player factory
		auto MediaModule = FModuleManager::GetModulePtr<IMediaModule>("Media");

		if (MediaModule != nullptr)
		{
			MediaModule->UnregisterPlayerFactory(*this);
		}

#if WITH_EDITOR
		// unregister settings
		ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");

		if (SettingsModule != nullptr)
		{
			SettingsModule->UnregisterSettings("Project", "Plugins", "VlcMedia");
		}
#endif //WITH_EDITOR
	}

private:

	/** List of supported media file types. */
	TArray<FString> SupportedFileExtensions;

	/** List of platforms that the media player support. */
	TArray<FString> SupportedPlatforms;

	/** List of supported URI schemes. */
	TArray<FString> SupportedUriSchemes;
};


#undef LOCTEXT_NAMESPACE

IMPLEMENT_MODULE(FVlcMediaFactoryModule, VlcMediaFactory);

<MSG> Added missing supported file formats.

https://github.com/ue4plugins/VlcMedia/issues/42

<DFF> @@ -178,8 +178,8 @@ public:
 		SupportedFileExtensions.Add(TEXT("m4a"));
 		SupportedFileExtensions.Add(TEXT("m4b"));
 		SupportedFileExtensions.Add(TEXT("m4p"));
-		SupportedFileExtensions.Add(TEXT("m5p"));
 		SupportedFileExtensions.Add(TEXT("m4v"));
+		SupportedFileExtensions.Add(TEXT("m5p"));
 		SupportedFileExtensions.Add(TEXT("mid"));
 		SupportedFileExtensions.Add(TEXT("mka"));
 		SupportedFileExtensions.Add(TEXT("mkv"));
@@ -209,8 +209,8 @@ public:
 		SupportedFileExtensions.Add(TEXT("mxg"));
 		SupportedFileExtensions.Add(TEXT("nsc"));
 		SupportedFileExtensions.Add(TEXT("nsv"));
-		SupportedFileExtensions.Add(TEXT("nuv"));
 		SupportedFileExtensions.Add(TEXT("nut"));
+		SupportedFileExtensions.Add(TEXT("nuv"));
 		SupportedFileExtensions.Add(TEXT("oga"));
 		SupportedFileExtensions.Add(TEXT("ogg"));
 		SupportedFileExtensions.Add(TEXT("ogm"));

{'commit': 'diff --git a/Source/VlcMediaEditor/Private/VlcFileMediaSourceFactory.cpp b/Source/VlcMediaEditor/Private/VlcFileMediaSourceFactory.cpp\nindex 6fb58fd..f3c956c 100644\n--- a/Source/VlcMediaEditor/Private/VlcFileMediaSourceFactory.cpp\n+++ b/Source/VlcMediaEditor/Private/VlcFileMediaSourceFactory.cpp\n@@ -12,42 +12,132 @@\n UVlcFileMediaSourceFactory::UVlcFileMediaSourceFactory(const FObjectInitializer& ObjectInitializer)\n \t: Super(ObjectInitializer)\n {\n+\tFormats.Add(TEXT("3g2;3GPP2 Multimedia"));\n+\tFormats.Add(TEXT("3ga;3GPP Audio"));\n \tFormats.Add(TEXT("3gp;3GP Video Stream"));\n+\tFormats.Add(TEXT("3gp2;3GPP Multimedia"));\n+\tFormats.Add(TEXT("3gpp;3GPP Media"));\n+\tFormats.Add(TEXT("669;UNIS Composer 669 Module"));\n \tFormats.Add(TEXT("a52;Dolby Digital AC-3 Audio"));\n-\tFormats.Add(TEXT("aac;MPEG-2 Advanced Audio Coding File"));\n-\tFormats.Add(TEXT("asf;ASF Media File"));\n+\tFormats.Add(TEXT("aac;MPEG-2 Advanced Audio Coding"));\n+\tFormats.Add(TEXT("ac3;Audio Codec 3"));\n+\tFormats.Add(TEXT("adt;Audio Data Transport Stream"));\n+\tFormats.Add(TEXT("adts;Audio Data Transport Stream"));\n+\tFormats.Add(TEXT("aif;Audio Interchange File Format"));\n+\tFormats.Add(TEXT("aifc;Compressed Audio Interchange File"));\n+\tFormats.Add(TEXT("aiff;Audio Interchange File Format"));\n+\tFormats.Add(TEXT("amb;Ambisonics B-Format"));\n+\tFormats.Add(TEXT("amr;Adaptive Multi-Rate Codec"));\n+\tFormats.Add(TEXT("amv;Anime Music Video"));\n+\tFormats.Add(TEXT("aob;DVD-Audio Audio Object"));\n+\tFormats.Add(TEXT("ape;AVS Plugin Effects File"));\n+\tFormats.Add(TEXT("asf;ASF Media"));\n \tFormats.Add(TEXT("au;Sun Microsystems Audio"));\n \tFormats.Add(TEXT("avi;Audio Video Interleave File"));\n-\tFormats.Add(TEXT("dts;Digital Theater System File"));\n-\tFormats.Add(TEXT("dv;Digital Video File"));\n+\tFormats.Add(TEXT("awb;AMR-WB Audio"));\n+\tFormats.Add(TEXT("bik;Bink Video"));\n+\tFormats.Add(TEXT("bin;Binary File"));\n+\tFormats.Add(TEXT("caf;Core Audio"));\n+\tFormats.Add(TEXT("crf;CRF Video"));\n+\tFormats.Add(TEXT("divx;DivX-Encoded Movie"));\n+\tFormats.Add(TEXT("drc;DRM Rights Object"));\n+\tFormats.Add(TEXT("dts;Digital Theater System"));\n+\tFormats.Add(TEXT("dv;Digital Video"));\n+\tFormats.Add(TEXT("evo;SeeVogh Player Video Recording"));\n+\tFormats.Add(TEXT("f4v;Flash MP4 Video"));\n \tFormats.Add(TEXT("flac;Free Lossless Audio Codec"));\n \tFormats.Add(TEXT("flv;Adobe Flash Video"));\n-\tFormats.Add(TEXT("mkv;Matroska Video"));\n+\tFormats.Add(TEXT("gvi;Google Video"));\n+\tFormats.Add(TEXT("gxf;General eXchange Format"));\n+\tFormats.Add(TEXT("iso;Disc Image"));\n+\tFormats.Add(TEXT("it;Impulse Tracker Module"));\n+\tFormats.Add(TEXT("kar;Karaoke MIDI"));\n+\tFormats.Add(TEXT("m1v;MPEG-1 Video"));\n+\tFormats.Add(TEXT("m2t;HDV Video"));\n+\tFormats.Add(TEXT("m2ts;Blu-ray BDAV Video"));\n+\tFormats.Add(TEXT("m2v;MPEG-2 Video"));\n+\tFormats.Add(TEXT("m4a;MPEG-4 Audio"));\n+\tFormats.Add(TEXT("m4b;MPEG-4 Audio Book"));\n+\tFormats.Add(TEXT("m4p;iTunes Music Store Audio"));\n+\tFormats.Add(TEXT("m5p;MachFive Preset File"));\n+\tFormats.Add(TEXT("m4v;iTunes Video"));\n+\tFormats.Add(TEXT("mid;MIDI File"));\n \tFormats.Add(TEXT("mka;Matroska Audio"));\n+\tFormats.Add(TEXT("mkv;Matroska Video"));\n+\tFormats.Add(TEXT("mlp;Meridian Lossless Packing Audio"));\n+\tFormats.Add(TEXT("mod;Amiga Music Module"));\n \tFormats.Add(TEXT("mov;Apple QuickTime Movie"));\n+\tFormats.Add(TEXT("mp1;MPEG-1 Layer 1 Audio"));\n \tFormats.Add(TEXT("mp2;MPEG-1 Audio"));\n+\tFormats.Add(TEXT("mp2v;MPEG-2 Video"));\n \tFormats.Add(TEXT("mp3;MPEG-2 Audio"));\n \tFormats.Add(TEXT("mp4;MPEG-4 Movie"));\n+\tFormats.Add(TEXT("mp4v;MPEG-4 Video"));\n+\tFormats.Add(TEXT("mpa;MPEG-2 Audio"));\n+\tFormats.Add(TEXT("mpc;Musepack Compressed Audio"));\n+\tFormats.Add(TEXT("mpe;MPEG Movie"));\n+\tFormats.Add(TEXT("mpeg;MPEG Movie"));\n+\tFormats.Add(TEXT("mpeg1;MPEG-1 Video"));\n+\tFormats.Add(TEXT("mpeg2;MPEG-2 Video"));\n+\tFormats.Add(TEXT("mpeg4;MPEG-4 Video"));\n \tFormats.Add(TEXT("mpg;MPEG-2 Movie"));\n+\tFormats.Add(TEXT("mpga;MPEG-1 Layer 3 Audio"));\n+\tFormats.Add(TEXT("mpv2;MPEG-2 Video Stream"));\n+\tFormats.Add(TEXT("mts;AVCHD Video"));\n+\tFormats.Add(TEXT("mtv;MTV Video Format"));\n+\tFormats.Add(TEXT("mus;Finale Notation File"));\n+\tFormats.Add(TEXT("mxf;Material Exchange Format"));\n+\tFormats.Add(TEXT("mxg;Miinoto Exchangeable Group File"));\n \tFormats.Add(TEXT("nsc;Windows Media Station"));\n \tFormats.Add(TEXT("nsv;Nullsoft Streaming Video"));\n \tFormats.Add(TEXT("nut;NUT Multimedia Container"));\n-\tFormats.Add(TEXT("ogm;Ogg Multimedia"));\n+\tFormats.Add(TEXT("nuv;NuppelVideo File"));\n+\tFormats.Add(TEXT("oga;Ogg Vorbis Audio"));\n \tFormats.Add(TEXT("ogg;Ogg Multimedia"));\n+\tFormats.Add(TEXT("ogm;Ogg Multimedia"));\n+\tFormats.Add(TEXT("ogv;Ogg Video"));\n+\tFormats.Add(TEXT("ogx;Ogg Vorbis Multiplexed Media"));\n+\tFormats.Add(TEXT("oma;Sony OpenMG Music"));\n+\tFormats.Add(TEXT("opus;Opus Audio"));\n+\tFormats.Add(TEXT("qcp;PureVoice Audio"));\n+\tFormats.Add(TEXT("ps;Program Stream Container"));\n \tFormats.Add(TEXT("ra;Real Audio"));\n \tFormats.Add(TEXT("ram;Real Audio Metadata"));\n+\tFormats.Add(TEXT("rec;Topfield PVR Recording"));\n \tFormats.Add(TEXT("rm;Real Media"));\n+\tFormats.Add(TEXT("rmi;RMID MIDI"));\n \tFormats.Add(TEXT("rmvb;Real Media VBR"));\n+\tFormats.Add(TEXT("rpl;Toribash Replay File"));\n \tFormats.Add(TEXT("rv;Real Video"));\n-\tFormats.Add(TEXT("sdp;Session Description Protocol File"));\n+\tFormats.Add(TEXT("s3m;ScreamTracker 3 Module"));\n+\tFormats.Add(TEXT("sdp;Session Description Protocol"));\n+\tFormats.Add(TEXT("sid;Commodore C64 SID File"));\n+\tFormats.Add(TEXT("spx;Speex Audio"));\n \tFormats.Add(TEXT("ts;MPEG-2 Transport Stream"));\n-\tFormats.Add(TEXT("tac;True Audio Codec File"));\n-\tFormats.Add(TEXT("tta;True Audio Codec File"));\n+\tFormats.Add(TEXT("tak;Tom\'s Lossless Audio Kompressor"));\n+\tFormats.Add(TEXT("thd;Dolby TrueHD Audio Stream"));\n+\tFormats.Add(TEXT("thp;Wii/GameCube Video"));\n+\tFormats.Add(TEXT("tod;JVC Everio Video Capture"));\n+\tFormats.Add(TEXT("tta;True Audio Codec"));\n+\tFormats.Add(TEXT("tts;Telerik Trainer Session"));\n+\tFormats.Add(TEXT("txd;TXD File"));\n \tFormats.Add(TEXT("ty;Tivo Container"));\n-\tFormats.Add(TEXT("vid;Generic Video File"));\n-\tFormats.Add(TEXT("wav;Wave Audio File"));\n+\tFormats.Add(TEXT("vid;Generic Video"));\n+\tFormats.Add(TEXT("vob;DVD Video Object"));\n+\tFormats.Add(TEXT("voc;Creative Labs Audio"));\n+\tFormats.Add(TEXT("vqf;TwinVQ Audio"));\n+\tFormats.Add(TEXT("vro;DVD Video Recording Format"));\n+\tFormats.Add(TEXT("w64;Sony Wave64 Audio"));\n+\tFormats.Add(TEXT("wav;Wave Audio"));\n+\tFormats.Add(TEXT("webm;WebM Video"));\n+\tFormats.Add(TEXT("wm;Windows Media"));\n+\tFormats.Add(TEXT("wma;Windows Media Audio"));\n \tFormats.Add(TEXT("wmv;Windows Media Video"));\n-\tFormats.Add(TEXT("xa;PlayStation Audio File"));\n+\tFormats.Add(TEXT("wtv;Windows Recorded TV Show"));\n+\tFormats.Add(TEXT("wv;WavPack Audio"));\n+\tFormats.Add(TEXT("xa;PlayStation Audio"));\n+\tFormats.Add(TEXT("xesc;Expression Encoder Screen Capture"));\n+\tFormats.Add(TEXT("xm;Fasttracker 2 Extended Module"));\n \n \tSupportedClass = UFileMediaSource::StaticClass();\n \tbEditorImport = true;\ndiff --git a/Source/VlcMediaFactory/Private/VlcMediaFactoryModule.cpp b/Source/VlcMediaFactory/Private/VlcMediaFactoryModule.cpp\nindex 1b99901..0d4b491 100644\n--- a/Source/VlcMediaFactory/Private/VlcMediaFactoryModule.cpp\n+++ b/Source/VlcMediaFactory/Private/VlcMediaFactoryModule.cpp\n@@ -178,8 +178,8 @@ public:\n \t\tSupportedFileExtensions.Add(TEXT("m4a"));\n \t\tSupportedFileExtensions.Add(TEXT("m4b"));\n \t\tSupportedFileExtensions.Add(TEXT("m4p"));\n-\t\tSupportedFileExtensions.Add(TEXT("m5p"));\n \t\tSupportedFileExtensions.Add(TEXT("m4v"));\n+\t\tSupportedFileExtensions.Add(TEXT("m5p"));\n \t\tSupportedFileExtensions.Add(TEXT("mid"));\n \t\tSupportedFileExtensions.Add(TEXT("mka"));\n \t\tSupportedFileExtensions.Add(TEXT("mkv"));\n@@ -209,8 +209,8 @@ public:\n \t\tSupportedFileExtensions.Add(TEXT("mxg"));\n \t\tSupportedFileExtensions.Add(TEXT("nsc"));\n \t\tSupportedFileExtensions.Add(TEXT("nsv"));\n-\t\tSupportedFileExtensions.Add(TEXT("nuv"));\n \t\tSupportedFileExtensions.Add(TEXT("nut"));\n+\t\tSupportedFileExtensions.Add(TEXT("nuv"));\n \t\tSupportedFileExtensions.Add(TEXT("oga"));\n \t\tSupportedFileExtensions.Add(TEXT("ogg"));\n \t\tSupportedFileExtensions.Add(TEXT("ogm"));\n', 'commit_subject': 'Added missing supported file formats.', 'repo_name': 'ue4plugins/VlcMedia', 'committer': {'name': 'Gerke Max Preussner', 'email': '64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@gerke-preussner.de', 'time_sec': '1510605498', 'tz_offset': '-300', 'date': {'seconds': '1510605498'}}, 'commit_tree': '4a7280c0d36b721a69261740f732bb9086d2c161', 'commit_message': 'Added missing supported file formats.\n\nhttps://github.com/ue4plugins/VlcMedia/issues/42\n', 'language_name': 'C++', 'license': 'bsd-3-clause', 'hunks': '@@ -178,8 +178,8 @@ public:\n \t\tSupportedFileExtensions.Add(TEXT("m4a"));\n \t\tSupportedFileExtensions.Add(TEXT("m4b"));\n \t\tSupportedFileExtensions.Add(TEXT("m4p"));\n-\t\tSupportedFileExtensions.Add(TEXT("m5p"));\n \t\tSupportedFileExtensions.Add(TEXT("m4v"));\n+\t\tSupportedFileExtensions.Add(TEXT("m5p"));\n \t\tSupportedFileExtensions.Add(TEXT("mid"));\n \t\tSupportedFileExtensions.Add(TEXT("mka"));\n \t\tSupportedFileExtensions.Add(TEXT("mkv"));\n@@ -209,8 +209,8 @@ public:\n \t\tSupportedFileExtensions.Add(TEXT("mxg"));\n \t\tSupportedFileExtensions.Add(TEXT("nsc"));\n \t\tSupportedFileExtensions.Add(TEXT("nsv"));\n-\t\tSupportedFileExtensions.Add(TEXT("nuv"));\n \t\tSupportedFileExtensions.Add(TEXT("nut"));\n+\t\tSupportedFileExtensions.Add(TEXT("nuv"));\n \t\tSupportedFileExtensions.Add(TEXT("oga"));\n \t\tSupportedFileExtensions.Add(TEXT("ogg"));\n \t\tSupportedFileExtensions.Add(TEXT("ogm"));\n', 'addition_count': 2, 'deletion_count': 2, 'src_file': 'a/Source/VlcMediaFactory/Private/VlcMediaFactoryModule.cpp', 'tgt_file': 'b/Source/VlcMediaFactory/Private/VlcMediaFactoryModule.cpp', 'file_extension': '.cpp', 'before_file': '// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.\n\n#include "Containers/Array.h"\n#include "Containers/UnrealString.h"\n#include "IMediaPlayerFactory.h"\n#include "IMediaModule.h"\n#include "IMediaOptions.h"\n#include "Internationalization/Internationalization.h"\n#include "Misc/Paths.h"\n#include "Modules/ModuleInterface.h"\n#include "Modules/ModuleManager.h"\n#include "UObject/Class.h"\n#include "UObject/NameTypes.h"\n#include "UObject/UObjectGlobals.h"\n#include "UObject/WeakObjectPtr.h"\n\n#if WITH_EDITOR\n\t#include "ISettingsModule.h"\n\t#include "ISettingsSection.h"\n\t#include "VlcMediaSettings.h"\n#endif\n\n#include "../../VlcMedia/Public/IVlcMediaModule.h"\n\n\n#define LOCTEXT_NAMESPACE "FVlcMediaFactoryModule"\n\n\n/**\n * Implements the VlcMediaFactory module.\n */\nclass FVlcMediaFactoryModule\n\t: public IMediaPlayerFactory\n\t, public IModuleInterface\n{\npublic:\n\n\t//~ IMediaPlayerFactory interface\n\n\tvirtual bool CanPlayUrl(const FString& Url, const IMediaOptions* Options, TArray<FText>* OutWarnings, TArray<FText>* OutErrors) const override\n\t{\n\t\tFString Scheme;\n\t\tFString Location;\n\n\t\t// check scheme\n\t\tif (!Url.Split(TEXT("://"), &Scheme, &Location, ESearchCase::CaseSensitive))\n\t\t{\n\t\t\tif (OutErrors != nullptr)\n\t\t\t{\n\t\t\t\tOutErrors->Add(LOCTEXT("NoSchemeFound", "No URI scheme found"));\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!SupportedUriSchemes.Contains(Scheme))\n\t\t{\n\t\t\tif (OutErrors != nullptr)\n\t\t\t{\n\t\t\t\tOutErrors->Add(FText::Format(LOCTEXT("SchemeNotSupported", "The URI scheme \'{0}\' is not supported"), FText::FromString(Scheme)));\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// check file extension\n\t\tif (Scheme == TEXT("file"))\n\t\t{\n\t\t\tconst FString Extension = FPaths::GetExtension(Location, false);\n\n\t\t\tif (!SupportedFileExtensions.Contains(Extension))\n\t\t\t{\n\t\t\t\tif (OutErrors != nullptr)\n\t\t\t\t{\n\t\t\t\t\tOutErrors->Add(FText::Format(LOCTEXT("ExtensionNotSupported", "The file extension \'{0}\' is not supported"), FText::FromString(Extension)));\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// check options\n\t\tif ((OutWarnings != nullptr) && (Options != nullptr))\n\t\t{\n\t\t\tif (Options->GetMediaOption("PrecacheFile", false) && (Scheme != TEXT("file")))\n\t\t\t{\n\t\t\t\tOutWarnings->Add(LOCTEXT("PrecacheFileWarning", "Precaching is supported for local files only"));\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tvirtual TSharedPtr<IMediaPlayer, ESPMode::ThreadSafe> CreatePlayer(IMediaEventSink& EventSink) override\n\t{\n\t\tauto VlcMediaModule = FModuleManager::LoadModulePtr<IVlcMediaModule>("VlcMedia");\n\t\treturn (VlcMediaModule != nullptr) ? VlcMediaModule->CreatePlayer(EventSink) : nullptr;\n\t}\n\n\tvirtual FText GetDisplayName() const override\n\t{\n\t\treturn LOCTEXT("MediaPlayerDisplayName", "VideoLAN Player");\n\t}\n\n\tvirtual FName GetPlayerName() const override\n\t{\n\t\tstatic FName PlayerName(TEXT("VlcMedia"));\n\t\treturn PlayerName;\n\t}\n\n\tvirtual const TArray<FString>& GetSupportedPlatforms() const override\n\t{\n\t\treturn SupportedPlatforms;\n\t}\n\n\tvirtual bool SupportsFeature(EMediaFeature Feature) const override\n\t{\n\t\treturn ((Feature == EMediaFeature::AudioSamples) ||\n\t\t\t\t(Feature == EMediaFeature::AudioTracks) ||\n\t\t\t\t(Feature == EMediaFeature::CaptionTracks) ||\n\t\t\t\t(Feature == EMediaFeature::Video360) ||\n\t\t\t\t(Feature == EMediaFeature::VideoSamples) ||\n\t\t\t\t(Feature == EMediaFeature::VideoTracks));\n\n\t}\n\npublic:\n\n\t//~ IModuleInterface interface\n\n\tvirtual void StartupModule() override\n\t{\n\t\t// supported file extensions\n\t\tSupportedFileExtensions.Add(TEXT("3g2"));\n\t\tSupportedFileExtensions.Add(TEXT("3ga"));\n\t\tSupportedFileExtensions.Add(TEXT("3gp"));\n\t\tSupportedFileExtensions.Add(TEXT("3gp2"));\n\t\tSupportedFileExtensions.Add(TEXT("3gpp"));\n\t\tSupportedFileExtensions.Add(TEXT("669"));\n\t\tSupportedFileExtensions.Add(TEXT("a52"));\n\t\tSupportedFileExtensions.Add(TEXT("aac"));\n\t\tSupportedFileExtensions.Add(TEXT("ac3"));\n\t\tSupportedFileExtensions.Add(TEXT("adt"));\n\t\tSupportedFileExtensions.Add(TEXT("adts"));\n\t\tSupportedFileExtensions.Add(TEXT("aif"));\n\t\tSupportedFileExtensions.Add(TEXT("aifc"));\n\t\tSupportedFileExtensions.Add(TEXT("aiff"));\n\t\tSupportedFileExtensions.Add(TEXT("amb"));\n\t\tSupportedFileExtensions.Add(TEXT("amr"));\n\t\tSupportedFileExtensions.Add(TEXT("amv"));\n\t\tSupportedFileExtensions.Add(TEXT("aob"));\n\t\tSupportedFileExtensions.Add(TEXT("ape"));\n\t\tSupportedFileExtensions.Add(TEXT("asf"));\n\t\tSupportedFileExtensions.Add(TEXT("au"));\n\t\tSupportedFileExtensions.Add(TEXT("avi"));\n\t\tSupportedFileExtensions.Add(TEXT("awb"));\n\t\tSupportedFileExtensions.Add(TEXT("bik"));\n\t\tSupportedFileExtensions.Add(TEXT("bin"));\n\t\tSupportedFileExtensions.Add(TEXT("caf"));\n\t\tSupportedFileExtensions.Add(TEXT("crf"));\n\t\tSupportedFileExtensions.Add(TEXT("divx"));\n\t\tSupportedFileExtensions.Add(TEXT("drc"));\n\t\tSupportedFileExtensions.Add(TEXT("dts"));\n\t\tSupportedFileExtensions.Add(TEXT("dv"));\n\t\tSupportedFileExtensions.Add(TEXT("evo"));\n\t\tSupportedFileExtensions.Add(TEXT("f4v"));\n\t\tSupportedFileExtensions.Add(TEXT("flac"));\n\t\tSupportedFileExtensions.Add(TEXT("flv"));\n\t\tSupportedFileExtensions.Add(TEXT("gvi"));\n\t\tSupportedFileExtensions.Add(TEXT("gxf"));\n\t\tSupportedFileExtensions.Add(TEXT("iso"));\n\t\tSupportedFileExtensions.Add(TEXT("it"));\n\t\tSupportedFileExtensions.Add(TEXT("kar"));\n\t\tSupportedFileExtensions.Add(TEXT("m1v"));\n\t\tSupportedFileExtensions.Add(TEXT("m2t"));\n\t\tSupportedFileExtensions.Add(TEXT("m2ts"));\n\t\tSupportedFileExtensions.Add(TEXT("m2v"));\n\t\tSupportedFileExtensions.Add(TEXT("m4a"));\n\t\tSupportedFileExtensions.Add(TEXT("m4b"));\n\t\tSupportedFileExtensions.Add(TEXT("m4p"));\n\t\tSupportedFileExtensions.Add(TEXT("m5p"));\n\t\tSupportedFileExtensions.Add(TEXT("m4v"));\n\t\tSupportedFileExtensions.Add(TEXT("mid"));\n\t\tSupportedFileExtensions.Add(TEXT("mka"));\n\t\tSupportedFileExtensions.Add(TEXT("mkv"));\n\t\tSupportedFileExtensions.Add(TEXT("mlp"));\n\t\tSupportedFileExtensions.Add(TEXT("mod"));\n\t\tSupportedFileExtensions.Add(TEXT("mov"));\n\t\tSupportedFileExtensions.Add(TEXT("mp1"));\n\t\tSupportedFileExtensions.Add(TEXT("mp2"));\n\t\tSupportedFileExtensions.Add(TEXT("mp2v"));\n\t\tSupportedFileExtensions.Add(TEXT("mp3"));\n\t\tSupportedFileExtensions.Add(TEXT("mp4"));\n\t\tSupportedFileExtensions.Add(TEXT("mp4v"));\n\t\tSupportedFileExtensions.Add(TEXT("mpa"));\n\t\tSupportedFileExtensions.Add(TEXT("mpc"));\n\t\tSupportedFileExtensions.Add(TEXT("mpe"));\n\t\tSupportedFileExtensions.Add(TEXT("mpeg"));\n\t\tSupportedFileExtensions.Add(TEXT("mpeg1"));\n\t\tSupportedFileExtensions.Add(TEXT("mpeg2"));\n\t\tSupportedFileExtensions.Add(TEXT("mpeg4"));\n\t\tSupportedFileExtensions.Add(TEXT("mpg"));\n\t\tSupportedFileExtensions.Add(TEXT("mpga"));\n\t\tSupportedFileExtensions.Add(TEXT("mpv2"));\n\t\tSupportedFileExtensions.Add(TEXT("mts"));\n\t\tSupportedFileExtensions.Add(TEXT("mtv"));\n\t\tSupportedFileExtensions.Add(TEXT("mus"));\n\t\tSupportedFileExtensions.Add(TEXT("mxf"));\n\t\tSupportedFileExtensions.Add(TEXT("mxg"));\n\t\tSupportedFileExtensions.Add(TEXT("nsc"));\n\t\tSupportedFileExtensions.Add(TEXT("nsv"));\n\t\tSupportedFileExtensions.Add(TEXT("nuv"));\n\t\tSupportedFileExtensions.Add(TEXT("nut"));\n\t\tSupportedFileExtensions.Add(TEXT("oga"));\n\t\tSupportedFileExtensions.Add(TEXT("ogg"));\n\t\tSupportedFileExtensions.Add(TEXT("ogm"));\n\t\tSupportedFileExtensions.Add(TEXT("ogv"));\n\t\tSupportedFileExtensions.Add(TEXT("ogx"));\n\t\tSupportedFileExtensions.Add(TEXT("oma"));\n\t\tSupportedFileExtensions.Add(TEXT("opus"));\n\t\tSupportedFileExtensions.Add(TEXT("qcp"));\n\t\tSupportedFileExtensions.Add(TEXT("ps"));\n\t\tSupportedFileExtensions.Add(TEXT("ra"));\n\t\tSupportedFileExtensions.Add(TEXT("ram"));\n\t\tSupportedFileExtensions.Add(TEXT("rec"));\n\t\tSupportedFileExtensions.Add(TEXT("rm"));\n\t\tSupportedFileExtensions.Add(TEXT("rmi"));\n\t\tSupportedFileExtensions.Add(TEXT("rmvb"));\n\t\tSupportedFileExtensions.Add(TEXT("rpl"));\n\t\tSupportedFileExtensions.Add(TEXT("rv"));\n\t\tSupportedFileExtensions.Add(TEXT("s3m"));\n\t\tSupportedFileExtensions.Add(TEXT("sdp"));\n\t\tSupportedFileExtensions.Add(TEXT("sid"));\n\t\tSupportedFileExtensions.Add(TEXT("spx"));\n\t\tSupportedFileExtensions.Add(TEXT("ts"));\n\t\tSupportedFileExtensions.Add(TEXT("tak"));\n\t\tSupportedFileExtensions.Add(TEXT("thd"));\n\t\tSupportedFileExtensions.Add(TEXT("thp"));\n\t\tSupportedFileExtensions.Add(TEXT("tod"));\n\t\tSupportedFileExtensions.Add(TEXT("tta"));\n\t\tSupportedFileExtensions.Add(TEXT("rp"));\n\t\tSupportedFileExtensions.Add(TEXT("rs"));\n\t\tSupportedFileExtensions.Add(TEXT("tta"));\n\t\tSupportedFileExtensions.Add(TEXT("tts"));\n\t\tSupportedFileExtensions.Add(TEXT("txd"));\n\t\tSupportedFileExtensions.Add(TEXT("ty"));\n\t\tSupportedFileExtensions.Add(TEXT("vid"));\n\t\tSupportedFileExtensions.Add(TEXT("vob"));\n\t\tSupportedFileExtensions.Add(TEXT("voc"));\n\t\tSupportedFileExtensions.Add(TEXT("vqf"));\n\t\tSupportedFileExtensions.Add(TEXT("vro"));\n\t\tSupportedFileExtensions.Add(TEXT("w64"));\n\t\tSupportedFileExtensions.Add(TEXT("wav"));\n\t\tSupportedFileExtensions.Add(TEXT("webm"));\n\t\tSupportedFileExtensions.Add(TEXT("wm"));\n\t\tSupportedFileExtensions.Add(TEXT("wma"));\n\t\tSupportedFileExtensions.Add(TEXT("wmv"));\n\t\tSupportedFileExtensions.Add(TEXT("wtv"));\n\t\tSupportedFileExtensions.Add(TEXT("wv"));\n\t\tSupportedFileExtensions.Add(TEXT("xa"));\n\t\tSupportedFileExtensions.Add(TEXT("xesc"));\n\t\tSupportedFileExtensions.Add(TEXT("xm"));\n\n\t\t// supported platforms\n\t\tSupportedPlatforms.Add(TEXT("Linux"));\n\t\tSupportedPlatforms.Add(TEXT("Mac"));\n\t\tSupportedPlatforms.Add(TEXT("Windows"));\n\t\tSupportedPlatforms.Add(TEXT("WinRT"));\n\n\t\t// supported schemes\n\t\tSupportedUriSchemes.Add(TEXT("cdda"));\n\t\tSupportedUriSchemes.Add(TEXT("dccp"));\n\t\tSupportedUriSchemes.Add(TEXT("dshow"));\n\t\tSupportedUriSchemes.Add(TEXT("dvd"));\n\t\tSupportedUriSchemes.Add(TEXT("file"));\n\t\tSupportedUriSchemes.Add(TEXT("dvd"));\n\t\tSupportedUriSchemes.Add(TEXT("ftp"));\n\t\tSupportedUriSchemes.Add(TEXT("http"));\n\t\tSupportedUriSchemes.Add(TEXT("https"));\n\t\tSupportedUriSchemes.Add(TEXT("icyx"));\n\t\tSupportedUriSchemes.Add(TEXT("itpc"));\n\t\tSupportedUriSchemes.Add(TEXT("mms"));\n\t\tSupportedUriSchemes.Add(TEXT("mmsh"));\n\t\tSupportedUriSchemes.Add(TEXT("mmst"));\n\t\tSupportedUriSchemes.Add(TEXT("mmsu"));\n\t\tSupportedUriSchemes.Add(TEXT("mtp"));\n\t\tSupportedUriSchemes.Add(TEXT("pnm"));\n\t\tSupportedUriSchemes.Add(TEXT("realrtsp"));\n\t\tSupportedUriSchemes.Add(TEXT("rtmp"));\n\t\tSupportedUriSchemes.Add(TEXT("rtp"));\n\t\tSupportedUriSchemes.Add(TEXT("rtsp"));\n\t\tSupportedUriSchemes.Add(TEXT("sap"));\n\t\tSupportedUriSchemes.Add(TEXT("smb"));\n\t\tSupportedUriSchemes.Add(TEXT("screen"));\n\t\tSupportedUriSchemes.Add(TEXT("unsv"));\n\t\tSupportedUriSchemes.Add(TEXT("v4l2"));\n\t\tSupportedUriSchemes.Add(TEXT("vcd"));\n\n#if WITH_EDITOR\n\t\t// register settings\n\t\tISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");\n\n\t\tif (SettingsModule != nullptr)\n\t\t{\n\t\t\tISettingsSectionPtr SettingsSection = SettingsModule->RegisterSettings("Project", "Plugins", "VlcMedia",\n\t\t\t\tLOCTEXT("VlcMediaSettingsName", "VLC Media"),\n\t\t\t\tLOCTEXT("VlcMediaSettingsDescription", "Configure the VLC Media plug-in."),\n\t\t\t\tGetMutableDefault<UVlcMediaSettings>()\n\t\t\t);\n\t\t}\n#endif //WITH_EDITOR\n\n\t\t// register player factory\n\t\tauto MediaModule = FModuleManager::LoadModulePtr<IMediaModule>("Media");\n\n\t\tif (MediaModule != nullptr)\n\t\t{\n\t\t\tMediaModule->RegisterPlayerFactory(*this);\n\t\t}\n\t}\n\n\tvirtual void ShutdownModule() override\n\t{\n\t\t// unregister player factory\n\t\tauto MediaModule = FModuleManager::GetModulePtr<IMediaModule>("Media");\n\n\t\tif (MediaModule != nullptr)\n\t\t{\n\t\t\tMediaModule->UnregisterPlayerFactory(*this);\n\t\t}\n\n#if WITH_EDITOR\n\t\t// unregister settings\n\t\tISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");\n\n\t\tif (SettingsModule != nullptr)\n\t\t{\n\t\t\tSettingsModule->UnregisterSettings("Project", "Plugins", "VlcMedia");\n\t\t}\n#endif //WITH_EDITOR\n\t}\n\nprivate:\n\n\t/** List of supported media file types. */\n\tTArray<FString> SupportedFileExtensions;\n\n\t/** List of platforms that the media player support. */\n\tTArray<FString> SupportedPlatforms;\n\n\t/** List of supported URI schemes. */\n\tTArray<FString> SupportedUriSchemes;\n};\n\n\n#undef LOCTEXT_NAMESPACE\n\nIMPLEMENT_MODULE(FVlcMediaFactoryModule, VlcMediaFactory);\n', 'message': 'Added missing supported file formats.\n\nhttps://github.com/ue4plugins/VlcMedia/issues/42\n', 'author_name': 'Gerke Max Preussner', 'lang': 'cpp'}