You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#lockdown nick.penwarden #rb none Change 3235667 on 2016/12/14 by Max.Preussner Media: Moved enums into separate header file, so they can be shared Change 3259266 on 2017/01/16 by Max.Preussner Core: Added timespan ratio Change 3267229 on 2017/01/21 by Max.Preussner Editor: Fixed texture samplers in materials not getting notified when sRGB mode changed Change 3274773 on 2017/01/27 by Max.Preussner Core: Added TLruCache template Change 3281579 on 2017/02/01 by Max.Preussner Core: Added scalar division to FTimespan Change 3289522 on 2017/02/07 by Max.Preussner MediaAssets: Added looping for play lists Change 3290664 on 2017/02/07 by Max.Preussner Engine: Moved UTexture material notification code into separate function, so it can be used by derived classes. Change3290688on 2017/02/07 by Max.Preussner MediaAssets: Notifying materials when media texture properties changed. Change 3291171 on 2017/02/07 by Max.Preussner MediaAssets: Filtering unused UTexture properties Change 3291229 on 2017/02/07 by Max.Preussner ImgMedia: Use displayWindow instead of dataWindow due to bug in OpenEXR with data window min < 0 Change 3298520 on 2017/02/11 by Max.Preussner Sequencer: Fixed skylight and reflection components off by one frame in PIE Change 3298778 on 2017/02/12 by Max.Preussner MediaUtils: Experimenting with dynamic pitch adjustment Change 3298987 on 2017/02/13 by Max.Chen Editor: Add matrix and transform properties to property editor test object Change 3298997 on 2017/02/13 by Max.Chen Editor: It's now possible to specify Units and ForceUnits meta-data on struct properties - Doing so will cause any child numeric and struct properties to use these units by default (unless another unit was specified) - Added percentage unit type - Multiplier unit types can now be converted between Change 3298998 on 2017/02/13 by Max.Chen Editor: Conversion between multiplier (1.5x) and percentage (150%) units is now possible Change3348678on 2017/03/15 by Max.Preussner Media: Added Buffering media event Change 3355268 on 2017/03/20 by Max.Preussner Core: TQueue documentation updates Change3359055on 2017/03/22 by Max.Preussner Portal: Removed dependency to Messaging.h Change 3359060 on 2017/03/22 by Max.Preussner Messaging: Modernization pass - added missing includes & forward declarations - include what you use - deprecated shared pointer typedefs - replaced some delegates with callback interfaces - documentation fixes Change 3359189 on 2017/03/22 by Max.Preussner Automation: Modernization pass - include what you use - removed molothic header - documentation fixes #upgradenotes: IAutomationWorkerModule.h is now in the module's public root directory Change 3359718 on 2017/03/22 by Max.Preussner Messaging: Moved common helper classes into MessagingCommon module #upgradenotes: If you use the common helper classes, replace "Messaging" with "MessagingCommon" in your Build.cs files and remove the "Helpers/" subdirectory from your include statements (unless you actually include header files from "Messaging", in which case you need to keep "Messaging" and add "MessagingCommon"). Change 3359793 on 2017/03/23 by Max.Preussner TargetDeviceServices: Modernization pass - include what you use - removed boilerplate header - deprecated selected shared pointer typedefs - reorganized files - documentation fixes Change 3361028 on 2017/03/23 by Max.Preussner DeviceManager: Modernization pass - include what you use - reduced shared pointer typedef usage - documentation fixes Change 3361197 on 2017/03/23 by Max.Preussner Messaging: Waking up message router thread on shutdown Change 3361246 on 2017/03/23 by Max.Preussner AutomationWindow: Removed boilerplate header #upgradenotes: Replace includes of AutomationWindow.h with IAutomationWindowModule.h Change 3361428 on 2017/03/23 by Max.Preussner AutomationController: Removed boilerplate header #upgradenotes: Instead of AutomationController.h, include the individual interface headers that you actually use. Remove the "Interfaces/" subdirectory from existing interface inclusions. Change 3363206 on 2017/03/24 by Max.Preussner ProfileLauncher: Modernization pass - include what you use (selected files) - reduced shared pointer typedef usages - removed dead code - cleaned up file organization - documentation fixes Change 3363290 on 2017/03/24 by Max.Preussner LauncherServices: Removed boilerplate header #upgradenotes: Instead of including LauncherServices.h, include the ILauncherXXX.h files that you actually use. Remove the "Interfaces/" subdirectory from existing ILauncherXXX.h includes Change 3363305 on 2017/03/24 by Max.Preussner LauncherCheck: Removed boilerplate header #upgradenotes: Include ILauncherCheckModule.h instead of LauncherCheck.h. Remove "Interfaces/" subdirectory from existing ILauncherCheckModule.h inclusions Change 3363708 on 2017/03/24 by Max.Preussner ImageWrapper: Removed boilerplate header #upgradenotes: Instead of including ImageWrapper.h, include the actual IImageWrapperXXX.h files that you use. Remove the "Interfaces/" subdirectory from existing IImageWrapperXXX.h includes Change 3363966 on 2017/03/24 by Max.Preussner ImageWrapper: Modernization pass - include what you use - reorganized internal files - documentation fixes Change 3364579 on 2017/03/24 by Max.Preussner ImageWrapper: Deprecated shared pointer typedef and removed usages #upgradenotes: Please use TSharedPtr<IImageWrapper> instead of IImageWrapperPtr Change 3364582 on 2017/03/24 by Max.Preussner NetworkFileSystem: Removed monolithic boilerplate header #upgradenotes: Instead of including NetworkFileServer.h, include the INetworkFileXXX.h headers that you actually use. Remove the "Interfaces/" subdirectory from existing INetworkFileXXX.h includes Change 3381440 on 2017/04/05 by Max.Preussner Oculus: Removed illegal pragmas Change 3391731 on 2017/04/12 by Max.Preussner ImgMedia: Added support for BMP, JPG and PNG image sequences Change 3401146 on 2017/04/19 by Max.Preussner Core: Cleanup pass for FTimespan usages; updated documentation When initializing time span values from single components, consider using the FromHours, FromMinutes, FromSeconds, Zero, MinValue and related methods instead of calling the overloaded constructors as they will make your code easier to read and understand. Change 3401504 on 2017/04/20 by Max.Preussner MCP: Fixed incorrect FTimespan usage of GetMilliseconds instead of GetTotalMilliseconds Change 3401833 on 2017/04/20 by Max.Preussner Core: Various improvements to FTimespan - added proper serialization - updated documentation - access fractions as milli-, micro- or nanoseconds - removed the following string formatters as they were not useful: %D %H %M %S %F - updated documentation #upgradenotes: The %D string formatter (previously total number of days) is now the zero-padded days component of the time span. Time spans are now always exported and stringified with a leading plus or minus sign. #jira UE-43990 #jira UE-44163 Change 3437543 on 2017/05/12 by Max.Preussner PS4Media: Added audio error codes conversion Change 3446564 on 2017/05/18 by Max.Preussner Networking: Fixed nullpointer crash if socket initialization fails Change 3459978 on 2017/05/25 by Max.Preussner ImgMedia: Renamed frame cache to frame loader Change 3463311 on 2017/05/26 by Max.Preussner Core: Added iterators & predicate based methods to LRU Cache Change 3464452 on 2017/05/29 by Max.Preussner ImgMedia: Added video sample output Change 3464468 on 2017/05/29 by Max.Preussner Media: Added separate cache visualization for loaded and cached samples Change3464592on 2017/05/29 by Max.Preussner Core: Added TLruCache::FindAndTouch Change 3464607 on 2017/05/29 by Max.Preussner Core: Added TRange::Inclusive / ::Exclusive Change 3464608 on 2017/05/29 by Max.Preussner Media: Fixed incorrect upper bound in support play rates of various players Change 3466732 on 2017/05/30 by Max.Preussner ImgMedia: Added image compression type to info string Change 3466871 on 2017/05/31 by Max.Preussner WmfMedia: Fixed session capabilities not showing up; added initialization logging Change 3467785 on 2017/05/31 by Max.Preussner MfMedia: Fixed sample stride calculated from media input instead of output Change3467963on 2017/05/31 by Max.Preussner WmfMedia: Reordered media sub-type string conversion to fix some tracks being reported incorrectly Change 3468110 on 2017/05/31 by Max.Preussner WmfMedia: Added MPEG-2 media sub types to utils Change 3468516 on 2017/05/31 by Max.Preussner AndroidMedia: Allow mediaplayer audio to be disable on Android (UE-45570) Change 3468554 on 2017/05/31 by Max.Preussner MediaAssets: Added AutoClear option to automatically clear media texture when media is unloaded Change 3468627 on 2017/05/31 by Max.Preussner ImgMedia: Allowing for auto-selection of EXR decoder thread count Change 3468648 on 2017/05/31 by Max.Preussner ImgMedia: Reorganized OpenExrWrapper files Change 3471789 on 2017/06/02 by Max.Preussner WmfMedia: Fixed potential concurrency issue in session state management Change 3472918 on 2017/06/03 by Max.Preussner Core: Allowing zero sized LRU cache; added default constructor Change 3472919 on 2017/06/03 by Max.Preussner Media: Added pre-Slate tick stage; renamed some functions; continued to implement sample caching Change 3473704 on 2017/06/05 by Max.Preussner AndroidMedia: Added settings class Change 3474407 on 2017/06/05 by Max.Preussner AndroidMedia: Implemented video sample processing Change 3474934 on 2017/06/05 by Max.Preussner ImgMedia: Fixed crash due to deleting loader work items twice (UE-45705) #jira UE-45705 Change 3476925 on 2017/06/06 by Max.Preussner Media: Added return values to media view interface; documentation fixes Change 3477158 on 2017/06/06 by Max.Preussner SwitchMedia: Implemented sample pooling Change 3477201 on 2017/06/07 by Max.Preussner PS4Media: Implemented video sample pooling Change 3481470 on 2017/06/08 by Max.Preussner Media: Fixed time stamps not set in recycled texture samples Change 3481472 on 2017/06/08 by Max.Preussner MediaAssets: Fixed no video samples fetched while player is in buffering state Change 3481473 on 2017/06/08 by Max.Preussner MediaUtils: Added default constructor to MediaSampleQueue Change 3481584 on 2017/06/08 by Max.Preussner MediaUtils: Paused state is considered forward for sample lookup as this is the common case. Change 3481588 on 2017/06/08 by Max.Preussner PS4Media: Redesigned the PS4 media player to support async file loading & track switching Change 3481627 on 2017/06/08 by Max.Preussner PS4Media: Opening media sources in thread pool if not precaching Change 3481666 on 2017/06/08 by Max.Preussner ImgMedia: Fixed SequencePath property file picker always opening default path Change 3481669 on 2017/06/08 by Max.Preussner ImgMedia: Fixed crash when quering cache state of empty image sequence Change 3481685 on 2017/06/08 by Max.Preussner ImgMedia: Fixed EXR reader failing to play slow loading sequences (UE-45719) #jira UE-45719 Change 3483623 on 2017/06/10 by Max.Preussner Media: Added getters for 360 view settings; added support for relative view updates Change 3483624 on 2017/06/10 by Max.Preussner Media: Added Blueprint support for 360 videos Change 3483626 on 2017/06/10 by Max.Preussner MediaPlayerEditor: Added 360 video mouse controls; broke out viewport widget into separate class. Change 3483627 on 2017/06/10 by Max.Preussner Core: Using system start time instead of current time for renamed log file names Change 3483630 on 2017/06/10 by Max.Preussner Core: Grouping log files by log name and processing each group separately when deleting old log files Change 3483816 on 2017/06/10 by Max.Preussner WmfMedia: Detecting audio device availability to prevent lockup of audio tracks Change 3483939 on 2017/06/11 by Max.Preussner AvfMedia: Finished Media Framework 3.0 upgrade - overhauled track switching - removed render thread flushes - reduced nesting - code cleanup pass Change 3483940 on 2017/06/11 by Max.Preussner Media: Consistent track switching behavior across platforms Change 3484172 on 2017/06/11 by Max.Preussner MediaPlayerEditor: Removed obsolete asset type actions Change 3484180 on 2017/06/11 by Max.Preussner MediaPlayerEditor: Fixed media player info overlays not visible during mouse capture Change 3484248 on 2017/06/11 by Max.Preussner MediaAssets: Media players now always have a playlist Change 3484249 on 2017/06/11 by Max.Preussner MediaPlayerEditor: Added UI controls to Playlist tab Change 3484250 on 2017/06/11 by Max.Preussner Media: Implemented overlay sample caching Change 3484252 on 2017/06/11 by Max.Preussner WmfMedia: Enabled support for .smi and .sami subtitle files Change 3485433 on 2017/06/12 by Max.Preussner ImgMedia: Enabled plug-in on all platforms; enabled EXR only on platforms that support it Change 3485720 on 2017/06/12 by Max.Preussner MediaPlayerEditor: Added ability to save playlists Change 3485828 on 2017/06/12 by Max.Preussner AvfMedia: Thread-safe ticking of video sampler; ticking audio processing on high frequency thread Change 3485926 on 2017/06/12 by Max.Preussner MediaUtils: Draining all unconsumed samples at the end of a frame Change 3486043 on 2017/06/12 by Max.Preussner Media: Consistent behavior for playlist navigation (UE-45964) #jira UE-45964 Change 3486104 on 2017/06/12 by Max.Preussner MediaPlayerEditor: Implemented simple overlay text positioning Change 3486145 on 2017/06/12 by Max.Preussner AndroidMediaPlayer: Moved video sample handling into render thread Change 3486147 on 2017/06/12 by Max.Preussner MediaPlayerEditor: Moved overlay texts into separate layer Change 3486188 on 2017/06/12 by Max.Preussner Media: Enabling media factory modules in Editor for all players Change 3486223 on 2017/06/12 by Max.Preussner Media: Defaulting players to select first audio and video tracks by default Change 3486473 on 2017/06/13 by Max.Preussner Media: Buffering is no longer a media player state, but handled separately (for players that can buffer while playing) Change 3486475 on 2017/06/13 by Max.Preussner MediaPlayerEditor: Showing busy bar when buffering or preparing Change 3487237 on 2017/06/13 by Max.Preussner AndroidMedia: Fixed video sample not getting processed on render thread Change 3487507 on 2017/06/13 by Michael.Trepka AvfMedia - small cleanup of the code for passing video frame rate to the video sampler Change 3487719 on 2017/06/13 by Michael.Trepka Disable shared PCH in OpenExrWrapper to solve a problem with bUseRTTI mismatch between the module and the PCH Change 3487842 on 2017/06/13 by Max.Preussner AndroidMedia: Fixed texture swizzle disabled on non-Engine builds Change 3488006 on 2017/06/13 by Michael.Trepka AvfMedia - Moved some logic from FAvfMediaPlayer::TickTickable() to FAvfMediaTracks::ProcessAudio() to make it thread safe, plus fixed a bug with the player not setting the current status to Stopped after opening a file Change 3488308 on 2017/06/13 by Chris.Babcock AndroidMedia: Fixed flicker issue #jira UE-45736 Change 3488335 on 2017/06/13 by Max.Preussner MediaAssets: Made UFileMediaSource::GetFullPath public Change 3488338 on 2017/06/13 by Max.Preussner MediaPlayerEditor: Fixed "Show file in Explorer" not working for file media sources Change 3488339 on 2017/06/13 by Max.Preussner MediaPlayerEditor: Showing a throbber when buffering player Change 3488768 on 2017/06/14 by Max.Preussner Core: Inlined FTimespan static functions hange 3490203 on 2017/06/14 by Max.Preussner Core: Force inlined TComPtr operators Change 3494083 on 2017/06/15 by Chris.Babcock AndroidMedia: Fix playlist looping (send PlaybackEndReached event) #jira UE-46086 Change 3497017 on 2017/06/16 by Max.Preussner MediaAssets: Playlists now auto advance with PlayOnOpen off Change 3497075 on 2017/06/17 by Chris.Babcock MediaPlayer Sampler node and external texture support for Android MediaPlayer - enable with USE_EXTERNALTEXTURE in AndroidMediaPlayer.cpp (disabled in this CL) - supports MediaSample node in material editor with scale/bias handled if above flag enabled - fixed looping problems, including eventual crashes - track switching fixed (lockups and missing video) - corrected resource leaks and crash switching maps #jira UE-46055 #jira UE-45744 #jira UE-46086 Change 3497163 on 2017/06/17 by Max.Preussner MediaUtils: Processing media events immediately if on game thread Change 3497170 on 2017/06/17 by Max.Preussner Media: All Media Framework interfaces are pure virtual Change 3498603 on 2017/06/19 by Ben.Marsh UBT: Prevent plugins which list modules multiple times from adding them twice. Change 3500870 on 2017/06/20 by Max.Preussner WmfMedia: Rewrote WMF state machine; now with track switching #jira UE-20209 #jira UE-35385 #jira UE-38337 #jira UE-45676 Change 3502181 on 2017/06/20 by Chris.Babcock MediaSampler node updates - fixed issue with ExternalTexture singleton for DLL compatiblity - now works for all players (registers texture samples with ExternalTexture by player GUID) - enabled OES in AndroidMediaPlayer now that materials can universally use the MediaSampler Change 3503182 on 2017/06/21 by Max.Preussner Media: Refactored status flags into an enum; exposed connecting status Change 3503724 on 2017/06/21 by Chris.Babcock Improvement in MediaPlayer Sampler node - RGB, R, G, B, A output pins like normal texture sampler - allow preview in material editor - fix OES detection for Android Change 3509088 on 2017/06/26 by Max.Preussner MediaAssets: Added AddFile and AddUrl to UMediaPlaylist Change 3510256 on 2017/06/26 by Max.Preussner WmfMedia: Fixed play rate not set to zero when end reached Change 3510273 on 2017/06/26 by Max.Preussner MediaPlayerEditor: Removed obsolete Slate culling rectangle code Change 3510413 on 2017/06/26 by Max.Preussner MediaPlayerEditor: Showing frame rate if available Change 3510533 on 2017/06/26 by Max.Preussner MediaUtils: Preventing media cache filling up when scrubbing Change 3510859 on 2017/06/26 by Max.Preussner PS4Media: Fixed track switching crashes (UE-45960) #jira UE-45960 Change3514173on 2017/06/28 by Max.Preussner WmfMedia: Optimized player capabilities check Change 3514174 on 2017/06/28 by Max.Preussner WmfMedia: Moved media source resolver code into utility class Change 3514714 on 2017/06/28 by Max.Preussner Core: Added TComPointer.IsValid; code cleanup pass Change3517912on 2017/06/30 by Max.Preussner MediaUtils: Added GetVideoAspectRatio to player facade Change 3524957 on 2017/07/06 by Max.Preussner ImgMedia: Decoding image frames only when video track is selected Change 3525252 on 2017/07/06 by Max.Preussner ImgMedia: Async image sequence initialization Change 3525266 on 2017/07/06 by Max.Preussner ImgMedia: Enabled reverse playback Change 3525722 on 2017/07/06 by Max.Preussner WmfMedia: Workaround for occasional WMF internal deadlock in IMFRateSupport Change 3525800 on 2017/07/07 by Max.Preussner WmfMedia: Fixed another WMF deadlock issue & some rate change glitches; improved logging. Change 3525801 on 2017/07/07 by Max.Preussner MediaPlayerEditor: Made scrubbing more responsive Change 3526500 on 2017/07/07 by Max.Preussner WmfMedia: Using NULL for Windows pointers Change 3527323 on 2017/07/07 by Max.Preussner WmfMedia: Added support for audio and video capture media sources Change 3530197 on 2017/07/10 by Max.Preussner WmfMedia: Added utility functions for enumerating audio and video capture devices Change 3533465 on 2017/07/12 by Max.Preussner Media: Added media capture device support API & implementation for WMF Change 3533469 on 2017/07/12 by Max.Preussner MediaPlayerEditor: Added source selection menu w/ capture device menu to navigation bar Change 3533540 on 2017/07/12 by Max.Preussner MediaAssets: Blueprint support for media capture device discovery Change 3533574 on 2017/07/12 by Max.Preussner WmfMedia: Using cached supported play rates; more strict pausing support check Change 3533924 on 2017/07/12 by Max.Preussner WmfMedia: Added global LowLatency setting (UEVR-859) Note that this setting is only supported when compiling for Windows 8 or newer. Change 3534027 on 2017/07/12 by Max.Preussner WmfMedia: Compile time support for low latency session attribute on < Windows8 #jira UEVR-859 Change 3538744 on 2017/07/14 by Max.Preussner MediaUtils: Renamed FDefaultMediaTimeSource to FAppMediaTimeSource Change 3542818 on 2017/07/18 by Max.Preussner WmfMedia: Fixed race condition on session shutdown Change 3543082 on 2017/07/18 by Max.Preussner WmfMedia: Fixed track selection in media that doesn't support seeking Change 3543092 on 2017/07/18 by Max.Preussner Media: Implemented media track format API Enables multiple formats per media track. By default, the first usable format is selected. This feature is currently only implemented for WmfMedia. All other players assume a single format per track. Change 3543794 on 2017/07/19 by Max.Preussner WmfMedia: Added string conversion for null GUIDs Change 3543796 on 2017/07/19 by Max.Preussner MfMedia: Copied GUID string conversion updates from WmfMedia Change 3543797 on 2017/07/19 by Max.Preussner WmfMedia: Preventing duplicate track formats in capture devices with legacy DirectX support Change 3544390 on 2017/07/19 by Max.Preussner Media: Allowing INDEX_NONE as 'current selection' index in track format related functions Change 3545368 on 2017/07/19 by Max.Preussner WmfMedia: Fixed session error with some media sources when attempting to seek to current position without ever starting Change 3545388 on 2017/07/19 by Max.Preussner MediaAssets: Fixed RGB input sources rendered upside down Change 3545430 on 2017/07/19 by Max.Preussner MediaAssets: Fixed incorrect sRGB conversion on BMP inputs Change 3547362 on 2017/07/20 by Max.Preussner Core: Added IsGraph and IsPrint to TCHAR utilities Change3547376on 2017/07/20 by Max.Preussner WmfMedia: Better log messages for non-standard video types (UE-47533) #jira UE-47533 Change 3547404 on 2017/07/20 by Max.Preussner QAGame: Enabled PlayOnOpen and Looping on MediaPlayerSwitch BP (UE-47542) #jira UE-47542 Change 3547466 on 2017/07/20 by Max.Preussner WmfMedia: Fixed edge case for detecting whether pause is available Change 3548742 on 2017/07/21 by Max.Preussner Media: Added API for changing the input frame rate Change 3548743 on 2017/07/21 by Max.Preussner WmfMedia: Implemented ability to change input frame rate Change 3554411 on 2017/07/25 by Max.Preussner AudioMixer: Broke out SynthComponent initialization code; added bIsUISound property Change 3554818 on 2017/07/25 by Max.Preussner Media: Added per track-type cache queries Change 3557284 on 2017/07/26 by Max.Preussner WmfMedia: Added buffer size check in texture sample as well Change 3560530 on 2017/07/27 by Max.Preussner WmfMedia: Made COM object destructors private and added assertions Change 3560580 on 2017/07/27 by Max.Preussner MediaUtils: Added method for querying number of objects in pool Change 3562572 on 2017/07/28 by Max.Preussner WmfMedia: Properly handling topology status errors when opening media Change 3576710 on 2017/08/08 by Chris.Babcock bug fixes for mediaplayer - rare cases in Android media tracks - make FMediaCaptureDevice members available in blueprints Change 3577736 on 2017/08/08 by Chris.Babcock Extend ExternalTexture to support 2x3 transform (scale/rotation + offset) Change 3578831 on 2017/08/09 by Max.Preussner MediaAssets: Made media sound component BP spawnable Change 3579210 on 2017/08/09 by Max.Preussner UdpMessaging: Not showing warning message if tunnel settings left empty to use defaults Change 3579547 on 2017/08/09 by Chris.Babcock Better support for Android external texture detection Change3579567on 2017/08/09 by Chris.Babcock Android camera plugin #jira UEMOB-215 Change 3580035 on 2017/08/10 by Andrew.Rodham Media Texture: External textures are now fully supported and enforced when attempting to sample external texture types in materials. - Textures can now dynamically provide an external texture GUID at runtime, which is queried by the uniform expression. Statically defined GUIDs remain supported. - Added necessary ExternalTexture(Parameter) methods to the material compiler and HLSL translator - Made UTexture::GetMaterialType const-correct #tests Test map that contains TextureObject, TextureObjectParameter, TextureSample and TextureSampleParameter nodes with media textures works on both a Nexus 10 (non-image-external), and a Pixel (image-external), and on desktop PC. Change 3581552 on 2017/08/10 by Chris.Babcock Use bilinear sampling instead of point for external texture (Android media and camera) Change 3581628 on 2017/08/10 by Max.Preussner Core: Fixed FTimespan import/export/copypaste (UE-43990) #jira UE-43990 #jira UE-44163 Change 3581909 on 2017/08/11 by Andrew.Rodham Media: Only cache material proxy pointers if they have been initialized (and thus, will be removed from the cache on release) - This prevents destroyed proxies from remaining in the texture registry #jira UE-48307 Change 3582451 on 2017/08/11 by Max.Preussner AudioMixer: Fixed initialization order of synth components This ensures that the Synth is initialized before OnRegister in the super class initializes and activates the AudioComponents. Previously, the AudioComponent would fail to activate, because Synth was nullptr. #jira UE-48055 Change 3582453 on 2017/08/11 by Max.Preussner MediaAssets: Enabling ticking in media sound component (UE-48055) #jira UE-48055 Change 3583101 on 2017/08/11 by Chris.Babcock Android camera improvements - return correct capture device type (webcamfront/rear) - remove seek (not supported) - support track formats - better framerate selection Change 3590109 on 2017/08/16 by Chris.Babcock Move external texture coordinate update to improve accuracy and save a uniform in final shader Change 3590530 on 2017/08/16 by Max.Preussner MediaAssets: Changed capture device enumeration BP function signatures to allow filter bit masks #jira UE-48166 Change 3590547 on 2017/08/16 by Max.Preussner MediaPlayerEditor: Ticking sound component directly Change 3590628 on 2017/08/16 by Max.Preussner Switch: Fixed media decoder asserting when attempting to pause without having started Change 3591816 on 2017/08/16 by Aaron.McLeran #jira UE-48470 Disabling async processing for procedural sound waves on mac. Change 3592266 on 2017/08/16 by Max.Preussner Media: Replaced media cache with the new sample processing pipeline; continued to implement MfMedia This change fixes stuttering issues with audio and video. However, proper pipeline flushing is not fully implemented yet, so the playback will break after the first playthrough, which might result in freeze frames or out of memory assertions depending on the platform. This will be addressed in an upcoming change. #jira UE-48474 #jira UE-45677 Change 3592355 on 2017/08/17 by Max.Preussner MediaUtils: Added sample sink collection to remove code duplication Change 3592739 on 2017/08/17 by Max.Preussner ImgMedia: Fetching only one video sample per frame Change 3592741 on 2017/08/17 by Max.Preussner MediaUtils: Better sample fetching when paused Change 3592761 on 2017/08/17 by Max.Preussner MediaUtils: Fixed overflow detection in sample sinks Change 3592762 on 2017/08/17 by Max.Preussner ImgMedia: Sending end reached event when looping Change 3592885 on 2017/08/17 by Max.Preussner ImgMedia: Fixed reverse play Change 3592887 on 2017/08/17 by Max.Preussner MediaUtils: Better sample range calculation for audio samples Change 3593010 on 2017/08/17 by Max.Preussner ImgMedia: Fixed async loading of non-EXR image sequences Change 3593193 on 2017/08/17 by Max.Preussner AndroidMedia: Fixed typo Change 3593230 on 2017/08/17 by Max.Preussner Media: Implemented flushing for player sample queues Change 3593346 on 2017/08/17 by Max.Preussner Media: Proper sample processing for reverse playback Change 3593482 on 2017/08/17 by Max.Preussner Switch: Fixed sample range check for reverse playback Change 3594428 on 2017/08/17 by Max.Preussner PS4Media: Fixed video not playing/crashing #jira UE-48547 #jira UE-48549 Change 3595404 on 2017/08/17 by Max.Preussner MediaAssets: Not requesting audio samples if not playing #jira UE-48557 Change 3595624 on 2017/08/17 by Max.Preussner PS4Media: Fixed no looping after track switching #jira UE-46524 #jira UE-48557 Change 3595704 on 2017/08/17 by Max.Preussner MediaUtils: Improved sample queue flushing Eventually this needs to be event-driven. #jira UE-48557 Change3595706on 2017/08/17 by Max.Preussner PS4Media: Flushing queues when track switching #jira UE-48557 Change 3595909 on 2017/08/17 by Max.Preussner Matinee: Fix Matinee redirect missing as UClass has been GC'ed (GitHub PR #3382) https://github.com/EpicGames/UnrealEngine/pull/3382 #jira UE-42906 #rn Fix Matinee redirect missing as UClass has been GC'ed (GitHub PR #3382) Change 3597480 on 2017/08/18 by Max.Preussner ImgMediaPlayer: Fixed presentation time calculation for very large delta times Change 3597669 on 2017/08/18 by Max.Preussner ImgMedia: Setting player stopped instead of paused when end reached Change 3597709 on 2017/08/18 by Max.Preussner SwitchMedia: Fixed audio sample duration calculation Change 3598479 on 2017/08/18 by Max.Preussner ImgMedia: Ensuring that first/last frame is played when starting playback forward/reverse; improved state checking; user logging Change 3598629 on 2017/08/18 by Max.Preussner MediaUtils: Properly handling pending flushes when peeking sample queues Change3598633on 2017/08/18 by Max.Preussner WmfMedia: Fixed occasional WMF deadlock when scrubbing Change 3598653 on 2017/08/18 by Max.Preussner MediaUtils: Fixed audio resampling in reverse playback Change 3598659 on 2017/08/18 by Max.Preussner MediaPlayerEditor: Creating sound output only if audio device available Change 3598688 on 2017/08/18 by Max.Preussner MediaUtils: Flushing sample queues on direction change regardless of paused state Change 3599444 on 2017/08/20 by Max.Preussner WmfMedia: Added missing check for rate control when quering supported rates Change 3603661 on 2017/08/22 by Max.Preussner WmfMedia: Fixed NV12 output Change 3604345 on 2017/08/23 by Max.Preussner MediaUtils: Added subtitle samples to media sample collection; fixed documentation Change3604987on 2017/08/23 by Max.Preussner PS4Media: Setting correct track format types Change 3605117 on 2017/08/23 by Joe.Barnes Fix issue where presentation time was being treated as milliseconds instead of microseconds. Change 3605128 on 2017/08/23 by Joe.Barnes Fix potential issue calculating total (looped) play time after seek or reset. Track last video presentation time Change 3605139 on 2017/08/23 by Joe.Barnes Support audio type DType_Setup. Fix issue with procedural sounds popping. Consume more samples if necessary. #jira ue-48544 Change 3605197 on 2017/08/23 by Max.Preussner Media: Fixed track display name formatting (UE-48767) #jira UE-48767 Change 3605817 on 2017/08/23 by Max.Chen Auto set sampler type on drop on actor. #jira UE-48769 Change 3605999 on 2017/08/23 by Max.Preussner MfMedia: Restarting source reader when switching tracks #jira UE-48766 Change 3606416 on 2017/08/23 by Max.Preussner PS4Media: Various player improvements #jira UE-48586 Change 3607656 on 2017/08/24 by Max.Preussner WmfMedia: Improved logging for Seek and SetRate Change 3607855 on 2017/08/24 by Max.Preussner MfMedia: Better verbose logging; validating seeks; reduced nesting; fixed track switching\ #jira UE-48766 Change 3608029 on 2017/08/24 by Max.Preussner PS4Media: Fixed streaming media not playing; improved result checks & logging #jira UE-48610 Change 3608473 on 2017/08/24 by Max.Preussner MfMedia: Fixed audio sample duration calculation #jira UE-48756 Change 3609316 on 2017/08/24 by Chris.Babcock Provide external texture RotationScale and Offset from sample Change 3610067 on 2017/08/25 by Richard.Wallis Mac: Editor locks up when Track switching and Mac: Media Audio continues to play after closing player. - Fix for creating extra OS AV media playback objects so audio playback not stopping due to over retained objects. - Trying to access OS AV Media Playback object (esp. the currentTime value) across mutliple threads at once seems to cause deadlock in the Apple libraries - moved location of currentTime acess point to Media Ticker - this sets the current time and is then just returned in the getter when on game main. - Trying to playback audio via OS media playback and through the engine at the same time when enabling the selected audio track. Engine version via sample buffers via AVAssetReaderTrackOutput doesn't seem to be working as intended with the new audio frame work audio sinks - so reverting to OS AV media playback for Mac at the moment until better fix for this can be put in. #jira UE-48590, UE-48604 Change 3610267 on 2017/08/25 by Max.Preussner PS4Media: Added missing track selection validation #jira UE-48765 Change 3610399 on 2017/08/25 by Max.Preussner PS4Media: Fixed infinite player re-initialization loop if track selection failed Change 3610809 on 2017/08/25 by Chris.Babcock Fixes for Android media player and camera player - buffer samples copy proper bytecount - realloc sets new buffer ptr - refcount of Java buffers fixed Change 3610953 on 2017/08/25 by Chris.Babcock Fix audio disable before play on Android media player Change 3611405 on 2017/08/25 by Max.Preussner WmfMedia: Resetting supported rates if RateSupport unavailable Change 3611406 on 2017/08/25 by Max.Preussner MfMedia: Resetting supported rates if RateSupport unavailable Change 3611453 on 2017/08/25 by Chris.Babcock Android external texture extension updates for compatibility Change 3611719 on 2017/08/26 by Max.Preussner Media: Added media event for completed seek operations; flushing sinks on seek Change 3611764 on 2017/08/26 by Max.Preussner AvfMedia: Setting player to preparing state prior to initializing tracks asynchronously Change 3611802 on 2017/08/26 by Max.Preussner Media: Exposed error state in media player Change 3611803 on 2017/08/26 by Max.Preussner MediaPlayerEditor: Showing error state in UI Change 3611887 on 2017/08/26 by Max.Preussner MediaUtils: Corrected media sample sink overflow check Change 3611892 on 2017/08/27 by Max.Preussner WmfMedia: Leaving session in error state after error Change 3611929 on 2017/08/27 by Max.Preussner MediaPlayerEditor: Fixed sound stopping on looping Change 3611930 on 2017/08/27 by Max.Preussner MfMedia: Rewrote async sample processing to fix various playback issues Change 3611942 on 2017/08/27 by Max.Preussner Media: Sending suspension event when playback ended Change 3611957 on 2017/08/27 by Max.Preussner UnrealEd: Allowed transient assets to be resaved to disk Change 3611981 on 2017/08/27 by Max.Preussner PS4Media: Rewrote sample processing to fix various playback issues #jira UE-48596 #jira UE-48793 Change 3612035 on 2017/08/27 by Max.Preussner UnrealEd: Picking standard default names when resaving transient packages Change 3612045 on 2017/08/27 by Max.Preussner Media: Fixed playlists not getting saved correctly from Editor (UE-35382) #jira UE-35382 Change 3612212 on 2017/08/28 by Richard.Wallis Fix for Multitrack Video samples continue to Play on Open after Play on Open is toggled off. Current Rate was not getting reset back to 0.0 on media close. #jira UE-47602 Change 3613531 on 2017/08/28 by Max.Preussner MediaAssets: Fixed external texture related crash on shutdown (UE-48918) Also no longer creating clock sink for media player CDO #jira UE-48918 Change 3613677 on 2017/08/28 by Andrew.Porter Fixed crash at exit in Mac editor caused by double release of AVPlayerItem object #jira UE-48937 Change 3615917 on 2017/08/29 by Max.Preussner MfMedia: Added compile options for DXVA and falling back to synchronous sample reading [CL 3617655 by Max Chen in Main branch]
279 lines
8.4 KiB
C++
279 lines
8.4 KiB
C++
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "AutomationReportManager.h"
|
|
#include "HAL/FileManager.h"
|
|
#include "Misc/Paths.h"
|
|
#include "Modules/ModuleManager.h"
|
|
#include "IAutomationControllerModule.h"
|
|
#include "AutomationReport.h"
|
|
|
|
|
|
FAutomationReportManager::FAutomationReportManager()
|
|
{
|
|
//ensure that we have a valid root to the hierarchy
|
|
FAutomationTestInfo TestInfo;
|
|
ReportRoot = MakeShareable(new FAutomationReport( TestInfo ));
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::Empty()
|
|
{
|
|
//ensure there is a root node
|
|
ReportRoot->Empty();
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::ClustersUpdated( const int32 NumClusters )
|
|
{
|
|
ReportRoot->ClustersUpdated(NumClusters);
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::ResetForExecution(const int32 NumTestPasses)
|
|
{
|
|
//Recursively prepare all tests for execution
|
|
ReportRoot->ResetForExecution(NumTestPasses);
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::StopRunningTests()
|
|
{
|
|
ReportRoot->StopRunningTest();
|
|
}
|
|
|
|
|
|
TSharedPtr<IAutomationReport> FAutomationReportManager::GetNextReportToExecute(bool& bOutAllTestsComplete, const int32 ClusterIndex, const int32 PassIndex, const int32 NumDevicesInCluster)
|
|
{
|
|
TSharedPtr<IAutomationReport> ReportToExecute = ReportRoot->GetNextReportToExecute(bOutAllTestsComplete, ClusterIndex, PassIndex, NumDevicesInCluster);
|
|
return ReportToExecute;
|
|
}
|
|
|
|
|
|
TSharedPtr<IAutomationReport> FAutomationReportManager::EnsureReportExists(FAutomationTestInfo& TestInfo, const int32 ClusterIndex, const int32 NumPasses)
|
|
{
|
|
TSharedPtr<IAutomationReport> NewStatus = ReportRoot->EnsureReportExists (TestInfo, ClusterIndex, NumPasses);
|
|
return NewStatus;
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::SetFilter( TSharedPtr< AutomationFilterCollection > InFilter )
|
|
{
|
|
ReportRoot->SetFilter( InFilter );
|
|
}
|
|
|
|
|
|
TArray <TSharedPtr <IAutomationReport> >& FAutomationReportManager::GetFilteredReports()
|
|
{
|
|
return ReportRoot->GetFilteredChildren();
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::SetVisibleTestsEnabled(const bool bEnabled)
|
|
{
|
|
ReportRoot->SetEnabled(bEnabled);
|
|
}
|
|
|
|
|
|
int32 FAutomationReportManager::GetEnabledTestsNum() const
|
|
{
|
|
return ReportRoot->GetEnabledTestsNum();
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::GetEnabledTestNames(TArray<FString>& OutEnabledTestNames) const
|
|
{
|
|
ReportRoot->GetEnabledTestNames(OutEnabledTestNames,FString());
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::SetEnabledTests(const TArray<FString>& EnabledTests)
|
|
{
|
|
ReportRoot->SetEnabledTests(EnabledTests,FString());
|
|
}
|
|
|
|
|
|
const bool FAutomationReportManager::ExportReport(uint32 FileExportTypeMask, const int32 NumDeviceClusters)
|
|
{
|
|
// The results log. Errors, warnings etc are added to this
|
|
TArray<FString> ResultsLog;
|
|
|
|
// Create the report be recursively going through the results tree
|
|
FindLeafReport(ReportRoot, NumDeviceClusters, ResultsLog, FileExportTypeMask);
|
|
|
|
// Has a report been generated
|
|
bool ReportGenerated = false;
|
|
|
|
// Ensure we have a log to write
|
|
if (ResultsLog.Num())
|
|
{
|
|
// Create the file name
|
|
FString FileName = FString::Printf( TEXT( "Automation%s.csv" ), *FDateTime::Now().ToString() );
|
|
FString FileLocation = FPaths::ConvertRelativePathToFull(FPaths::AutomationDir());
|
|
FString FullPath = FString::Printf( TEXT( "%s%s" ), *FileLocation, *FileName );
|
|
|
|
// save file
|
|
FArchive* LogFile = IFileManager::Get().CreateFileWriter( *FullPath );
|
|
|
|
if (LogFile != NULL)
|
|
{
|
|
for (int32 Index = 0; Index < ResultsLog.Num(); ++Index)
|
|
{
|
|
FString LogEntry = FString::Printf( TEXT( "%s" ),
|
|
*ResultsLog[ Index ]) + LINE_TERMINATOR;
|
|
LogFile->Serialize( TCHAR_TO_ANSI( *LogEntry ), LogEntry.Len() );
|
|
}
|
|
|
|
LogFile->Close();
|
|
delete LogFile;
|
|
|
|
// A report has been generated
|
|
ReportGenerated = true;
|
|
}
|
|
}
|
|
|
|
return ReportGenerated;
|
|
}
|
|
|
|
void FAutomationReportManager::AddResultReport(TSharedPtr< IAutomationReport > InReport, const int32 NumDeviceClusters, TArray< FString >& ResultsLog, uint32 FileExportTypeMask)
|
|
{
|
|
if (InReport->IsEnabled())
|
|
{
|
|
for (int32 ClusterIndex = 0; ClusterIndex < NumDeviceClusters; ++ClusterIndex)
|
|
{
|
|
FAutomationTestResults TestResults = InReport->GetResults( ClusterIndex,CurrentTestPass );
|
|
|
|
// Early out if we don't want this report
|
|
bool AddReport = true;
|
|
if ( !EFileExportType::IsSet( FileExportTypeMask, EFileExportType::FET_All ) && !EFileExportType::IsSet( FileExportTypeMask, EFileExportType::FET_Status ) )
|
|
{
|
|
uint32 ResultMask = 0;
|
|
|
|
if (TestResults.GetErrorTotal() > 0)
|
|
{
|
|
EFileExportType::SetFlag( ResultMask, EFileExportType::FET_Errors );
|
|
}
|
|
if (TestResults.GetWarningTotal() > 0)
|
|
{
|
|
EFileExportType::SetFlag( ResultMask, EFileExportType::FET_Warnings );
|
|
}
|
|
if (TestResults.GetLogTotal())
|
|
{
|
|
EFileExportType::SetFlag( ResultMask, EFileExportType::FET_Logs );
|
|
}
|
|
|
|
// Ensure we have a report that passes at least one filter
|
|
if ( ( ResultMask & FileExportTypeMask ) == 0 )
|
|
{
|
|
AddReport = false;
|
|
}
|
|
}
|
|
|
|
if (AddReport)
|
|
{
|
|
// Get the duration of the test
|
|
float MinDuration;
|
|
float MaxDuration;
|
|
FString DurationString;
|
|
if (InReport->GetDurationRange(MinDuration, MaxDuration ))
|
|
{
|
|
//if there is a duration range
|
|
if (MinDuration != MaxDuration)
|
|
{
|
|
DurationString = FString::Printf( TEXT( "%4.4fs - %4.4fs" ), MinDuration, MaxDuration );
|
|
}
|
|
else
|
|
{
|
|
DurationString = FString::Printf( TEXT( "%4.4fs" ), MinDuration );
|
|
}
|
|
}
|
|
|
|
// Build a status string that contains information about the test
|
|
FString Status;
|
|
|
|
// Was the test a success
|
|
if ( ( TestResults.GetWarningTotal() == 0 ) && ( TestResults.GetErrorTotal() == 0 ) && ( InReport->GetState(ClusterIndex, CurrentTestPass) == EAutomationState::Success ) )
|
|
{
|
|
Status = "Success";
|
|
}
|
|
else if( InReport->GetState( ClusterIndex,CurrentTestPass ) == EAutomationState::NotEnoughParticipants )
|
|
{
|
|
Status = TEXT( "Could not run." );
|
|
}
|
|
else
|
|
{
|
|
Status = "Issues ";
|
|
if (TestResults.GetWarningTotal())
|
|
{
|
|
Status += "Warnings ";
|
|
}
|
|
if (TestResults.GetErrorTotal())
|
|
{
|
|
Status += "Errors";
|
|
}
|
|
}
|
|
|
|
// Create the log string
|
|
FString Info = FString::Printf( TEXT("DeviceName: %s, Platform: %s, Test Name: %s, Test Duration: %s, Status: %s" ),
|
|
*InReport->GetGameInstanceName( ClusterIndex ),
|
|
*FModuleManager::GetModuleChecked< IAutomationControllerModule >( "AutomationController" ).GetAutomationController()->GetDeviceTypeName( ClusterIndex ),
|
|
*InReport->GetDisplayNameWithDecoration(),
|
|
*DurationString,
|
|
*Status );
|
|
|
|
ResultsLog.Add( Info );
|
|
|
|
// Pre and post fix strings to add to the errors and warnings for viewing in CSV. Spaces correctly, and allows commas in the message
|
|
const FString ErrorPrefixText = TEXT( "\t,,,\"" );
|
|
const FString ErrorSufixText = TEXT( "\"" );
|
|
|
|
|
|
// Add any warning or errors
|
|
for ( const FAutomationEvent& Event : TestResults.GetEvents() )
|
|
{
|
|
switch ( Event.Type )
|
|
{
|
|
case EAutomationEventType::Info:
|
|
if ( EFileExportType::IsSet(FileExportTypeMask, EFileExportType::FET_All) || EFileExportType::IsSet(FileExportTypeMask, EFileExportType::FET_Logs) )
|
|
{
|
|
ResultsLog.Add(ErrorPrefixText + Event.ToString() + ErrorSufixText);
|
|
}
|
|
break;
|
|
case EAutomationEventType::Warning:
|
|
if ( EFileExportType::IsSet(FileExportTypeMask, EFileExportType::FET_All) || EFileExportType::IsSet(FileExportTypeMask, EFileExportType::FET_Warnings) )
|
|
{
|
|
ResultsLog.Add(ErrorPrefixText + Event.ToString() + ErrorSufixText);
|
|
}
|
|
break;
|
|
case EAutomationEventType::Error:
|
|
if ( EFileExportType::IsSet(FileExportTypeMask, EFileExportType::FET_All) || EFileExportType::IsSet(FileExportTypeMask, EFileExportType::FET_Errors) )
|
|
{
|
|
ResultsLog.Add(ErrorPrefixText + Event.ToString() + ErrorSufixText);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void FAutomationReportManager::FindLeafReport(TSharedPtr< IAutomationReport > InReport, const int32 NumDeviceClusters, TArray< FString >& ResultsLog, uint32 FileExportTypeMask)
|
|
{
|
|
TArray< TSharedPtr< IAutomationReport > >& ChildReports = InReport->GetFilteredChildren();
|
|
|
|
// If there are no child reports, we have reached a leaf that has had a test run on it.
|
|
if (ChildReports.Num() == 0)
|
|
{
|
|
AddResultReport( InReport, NumDeviceClusters, ResultsLog, FileExportTypeMask );
|
|
}
|
|
else
|
|
{
|
|
// We still have some child nodes. We won't have run a test on this node
|
|
for (int32 ChildIndex = 0; ChildIndex < ChildReports.Num(); ++ChildIndex)
|
|
{
|
|
FindLeafReport( ChildReports[ ChildIndex ], NumDeviceClusters, ResultsLog, FileExportTypeMask );
|
|
}
|
|
}
|
|
}
|