167 lines
6.9 KiB
C++
167 lines
6.9 KiB
C++
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "VlcFileMediaSourceFactory.h"
|
|
|
|
#include "FileMediaSource.h"
|
|
#include "Misc/Paths.h"
|
|
|
|
|
|
/* UVlcFileMediaSourceFactory structors
|
|
*****************************************************************************/
|
|
|
|
UVlcFileMediaSourceFactory::UVlcFileMediaSourceFactory(const FObjectInitializer& ObjectInitializer)
|
|
: Super(ObjectInitializer)
|
|
{
|
|
Formats.Add(TEXT("3g2;3GPP2 Multimedia"));
|
|
Formats.Add(TEXT("3ga;3GPP Audio"));
|
|
Formats.Add(TEXT("3gp;3GP Video Stream"));
|
|
Formats.Add(TEXT("3gp2;3GPP Multimedia"));
|
|
Formats.Add(TEXT("3gpp;3GPP Media"));
|
|
Formats.Add(TEXT("669;UNIS Composer 669 Module"));
|
|
Formats.Add(TEXT("a52;Dolby Digital AC-3 Audio"));
|
|
Formats.Add(TEXT("aac;MPEG-2 Advanced Audio Coding"));
|
|
Formats.Add(TEXT("ac3;Audio Codec 3"));
|
|
Formats.Add(TEXT("adt;Audio Data Transport Stream"));
|
|
Formats.Add(TEXT("adts;Audio Data Transport Stream"));
|
|
Formats.Add(TEXT("aif;Audio Interchange File Format"));
|
|
Formats.Add(TEXT("aifc;Compressed Audio Interchange File"));
|
|
Formats.Add(TEXT("aiff;Audio Interchange File Format"));
|
|
Formats.Add(TEXT("amb;Ambisonics B-Format"));
|
|
Formats.Add(TEXT("amr;Adaptive Multi-Rate Codec"));
|
|
Formats.Add(TEXT("amv;Anime Music Video"));
|
|
Formats.Add(TEXT("aob;DVD-Audio Audio Object"));
|
|
Formats.Add(TEXT("ape;AVS Plugin Effects File"));
|
|
Formats.Add(TEXT("asf;ASF Media"));
|
|
Formats.Add(TEXT("au;Sun Microsystems Audio"));
|
|
Formats.Add(TEXT("avi;Audio Video Interleave File"));
|
|
Formats.Add(TEXT("awb;AMR-WB Audio"));
|
|
Formats.Add(TEXT("bik;Bink Video"));
|
|
Formats.Add(TEXT("bin;Binary File"));
|
|
Formats.Add(TEXT("caf;Core Audio"));
|
|
Formats.Add(TEXT("crf;CRF Video"));
|
|
Formats.Add(TEXT("divx;DivX-Encoded Movie"));
|
|
Formats.Add(TEXT("drc;DRM Rights Object"));
|
|
Formats.Add(TEXT("dts;Digital Theater System"));
|
|
Formats.Add(TEXT("dv;Digital Video"));
|
|
Formats.Add(TEXT("evo;SeeVogh Player Video Recording"));
|
|
Formats.Add(TEXT("f4v;Flash MP4 Video"));
|
|
Formats.Add(TEXT("flac;Free Lossless Audio Codec"));
|
|
Formats.Add(TEXT("flv;Adobe Flash Video"));
|
|
Formats.Add(TEXT("gvi;Google Video"));
|
|
Formats.Add(TEXT("gxf;General eXchange Format"));
|
|
Formats.Add(TEXT("iso;Disc Image"));
|
|
Formats.Add(TEXT("it;Impulse Tracker Module"));
|
|
Formats.Add(TEXT("kar;Karaoke MIDI"));
|
|
Formats.Add(TEXT("m1v;MPEG-1 Video"));
|
|
Formats.Add(TEXT("m2t;HDV Video"));
|
|
Formats.Add(TEXT("m2ts;Blu-ray BDAV Video"));
|
|
Formats.Add(TEXT("m2v;MPEG-2 Video"));
|
|
Formats.Add(TEXT("m4a;MPEG-4 Audio"));
|
|
Formats.Add(TEXT("m4b;MPEG-4 Audio Book"));
|
|
Formats.Add(TEXT("m4p;iTunes Music Store Audio"));
|
|
Formats.Add(TEXT("m5p;MachFive Preset File"));
|
|
Formats.Add(TEXT("m4v;iTunes Video"));
|
|
Formats.Add(TEXT("mid;MIDI File"));
|
|
Formats.Add(TEXT("mka;Matroska Audio"));
|
|
Formats.Add(TEXT("mkv;Matroska Video"));
|
|
Formats.Add(TEXT("mlp;Meridian Lossless Packing Audio"));
|
|
Formats.Add(TEXT("mod;Amiga Music Module"));
|
|
Formats.Add(TEXT("mov;Apple QuickTime Movie"));
|
|
Formats.Add(TEXT("mp1;MPEG-1 Layer 1 Audio"));
|
|
Formats.Add(TEXT("mp2;MPEG-1 Audio"));
|
|
Formats.Add(TEXT("mp2v;MPEG-2 Video"));
|
|
Formats.Add(TEXT("mp3;MPEG-2 Audio"));
|
|
Formats.Add(TEXT("mp4;MPEG-4 Movie"));
|
|
Formats.Add(TEXT("mp4v;MPEG-4 Video"));
|
|
Formats.Add(TEXT("mpa;MPEG-2 Audio"));
|
|
Formats.Add(TEXT("mpc;Musepack Compressed Audio"));
|
|
Formats.Add(TEXT("mpe;MPEG Movie"));
|
|
Formats.Add(TEXT("mpeg;MPEG Movie"));
|
|
Formats.Add(TEXT("mpeg1;MPEG-1 Video"));
|
|
Formats.Add(TEXT("mpeg2;MPEG-2 Video"));
|
|
Formats.Add(TEXT("mpeg4;MPEG-4 Video"));
|
|
Formats.Add(TEXT("mpg;MPEG-2 Movie"));
|
|
Formats.Add(TEXT("mpga;MPEG-1 Layer 3 Audio"));
|
|
Formats.Add(TEXT("mpv2;MPEG-2 Video Stream"));
|
|
Formats.Add(TEXT("mts;AVCHD Video"));
|
|
Formats.Add(TEXT("mtv;MTV Video Format"));
|
|
Formats.Add(TEXT("mus;Finale Notation File"));
|
|
Formats.Add(TEXT("mxf;Material Exchange Format"));
|
|
Formats.Add(TEXT("mxg;Miinoto Exchangeable Group File"));
|
|
Formats.Add(TEXT("nsc;Windows Media Station"));
|
|
Formats.Add(TEXT("nsv;Nullsoft Streaming Video"));
|
|
Formats.Add(TEXT("nut;NUT Multimedia Container"));
|
|
Formats.Add(TEXT("nuv;NuppelVideo File"));
|
|
Formats.Add(TEXT("oga;Ogg Vorbis Audio"));
|
|
Formats.Add(TEXT("ogg;Ogg Multimedia"));
|
|
Formats.Add(TEXT("ogm;Ogg Multimedia"));
|
|
Formats.Add(TEXT("ogv;Ogg Video"));
|
|
Formats.Add(TEXT("ogx;Ogg Vorbis Multiplexed Media"));
|
|
Formats.Add(TEXT("oma;Sony OpenMG Music"));
|
|
Formats.Add(TEXT("opus;Opus Audio"));
|
|
Formats.Add(TEXT("qcp;PureVoice Audio"));
|
|
Formats.Add(TEXT("ps;Program Stream Container"));
|
|
Formats.Add(TEXT("ra;Real Audio"));
|
|
Formats.Add(TEXT("ram;Real Audio Metadata"));
|
|
Formats.Add(TEXT("rec;Topfield PVR Recording"));
|
|
Formats.Add(TEXT("rm;Real Media"));
|
|
Formats.Add(TEXT("rmi;RMID MIDI"));
|
|
Formats.Add(TEXT("rmvb;Real Media VBR"));
|
|
Formats.Add(TEXT("rpl;Toribash Replay File"));
|
|
Formats.Add(TEXT("rv;Real Video"));
|
|
Formats.Add(TEXT("s3m;ScreamTracker 3 Module"));
|
|
Formats.Add(TEXT("sdp;Session Description Protocol"));
|
|
Formats.Add(TEXT("sid;Commodore C64 SID File"));
|
|
Formats.Add(TEXT("spx;Speex Audio"));
|
|
Formats.Add(TEXT("ts;MPEG-2 Transport Stream"));
|
|
Formats.Add(TEXT("tak;Tom's Lossless Audio Kompressor"));
|
|
Formats.Add(TEXT("thd;Dolby TrueHD Audio Stream"));
|
|
Formats.Add(TEXT("thp;Wii/GameCube Video"));
|
|
Formats.Add(TEXT("tod;JVC Everio Video Capture"));
|
|
Formats.Add(TEXT("tta;True Audio Codec"));
|
|
Formats.Add(TEXT("tts;Telerik Trainer Session"));
|
|
Formats.Add(TEXT("txd;TXD File"));
|
|
Formats.Add(TEXT("ty;Tivo Container"));
|
|
Formats.Add(TEXT("vid;Generic Video"));
|
|
Formats.Add(TEXT("vob;DVD Video Object"));
|
|
Formats.Add(TEXT("voc;Creative Labs Audio"));
|
|
Formats.Add(TEXT("vqf;TwinVQ Audio"));
|
|
Formats.Add(TEXT("vro;DVD Video Recording Format"));
|
|
Formats.Add(TEXT("w64;Sony Wave64 Audio"));
|
|
Formats.Add(TEXT("wav;Wave Audio"));
|
|
Formats.Add(TEXT("webm;WebM Video"));
|
|
Formats.Add(TEXT("wm;Windows Media"));
|
|
Formats.Add(TEXT("wma;Windows Media Audio"));
|
|
Formats.Add(TEXT("wmv;Windows Media Video"));
|
|
Formats.Add(TEXT("wtv;Windows Recorded TV Show"));
|
|
Formats.Add(TEXT("wv;WavPack Audio"));
|
|
Formats.Add(TEXT("xa;PlayStation Audio"));
|
|
Formats.Add(TEXT("xesc;Expression Encoder Screen Capture"));
|
|
Formats.Add(TEXT("xm;Fasttracker 2 Extended Module"));
|
|
|
|
SupportedClass = UFileMediaSource::StaticClass();
|
|
bEditorImport = true;
|
|
}
|
|
|
|
|
|
/* UFactory overrides
|
|
*****************************************************************************/
|
|
|
|
bool UVlcFileMediaSourceFactory::FactoryCanImport(const FString& Filename)
|
|
{
|
|
// @hack: disable file extensions that are used in other factories
|
|
// @todo gmp: add support for multiple factories per file extension
|
|
const FString FileExtension = FPaths::GetExtension(Filename);
|
|
|
|
return (FileExtension.ToUpper() != FString("WAV"));
|
|
}
|
|
|
|
|
|
UObject* UVlcFileMediaSourceFactory::FactoryCreateFile(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, const FString& Filename, const TCHAR* Parms, FFeedbackContext* Warn, bool& bOutOperationCanceled)
|
|
{
|
|
UFileMediaSource* MediaSource = NewObject<UFileMediaSource>(InParent, InClass, InName, Flags);
|
|
MediaSource->SetFilePath(CurrentFilename);
|
|
|
|
return MediaSource;
|
|
}
|