Fixes two issues:
- Static Analysis (IncludeTool): The packaging behavior of WebRTC headers that we have modified internal caused an extra newline every line, this broke some headers which have been fixed
- NonUnity: Some of the included WebRTC headers have changed in 5414 so that they now end up including windows.h, causing issues like "min" redefinition, this has been resolved by adding "pre" and "post" headers for WebRTC includes which will ensure the appropriate preprocessor environment is set up prior to including WebRTC headers and then clean up after itself in the "post" header
#rb nazar.rudenko, aidan.possemiers
[FYI] matthew.cotton, denis.phoenix
[CL 26453140 by nick pace in ue5-main branch]
Add WebRTC 109 support to PS plugin behind a flag
This CL adds necessary changes for PS plugin to support WebRTC 109.
#rb nick.pace
[FYI] ivan.sidarau, aidan.possemiers
#jira UE-188331
Test steps:
1. Build WebRTC 109 (5414) from 3rdParty depot
2. Place headers and library into Engine\Source\ThirdParty\WebRTC\5414
3. Change "bShouldUse5414WebRTC" flag to true in WebRTC.Build.cs
4. Build UE5
5. Observe it builds and links with no issues
[CL 26336571 by nick pace in ue5-main branch]
- Creates the UnrealArchitectures class, which wraps a list of UnrealArch objects
- UnrealArch is a single architecture, expandable enum-like struct
- There is no more concept of "no/default architecture", there is always a valid active architecture when building
- Most uses of "string Architecture" are replaced with one of the two above, depending if multiple architectures are supported or not
- UnrealArch has some platform-extensions for platform-specific naming (like Linux adds in LinuxName that turns, for instance, Arm64 -> aarch64-unknown-linux-gnueabi, which is used in folder names, etc)
- UnrealArch has bIsX64 which can be used determine intel instruction set (as opposed to arm)
- TargetRules class has an "Architecture" accessor that will return a single architecture if the active architectures is a single architecture, or throw an exception if multiple. This is useful in a majority of the cases where a paltform can only have a single architecture active in TargetRules (microsoft platforms, for instance, will create separate targets when compiling multiple architectures at once)
- Added UnrealArchitectureConfig class, which contains all the architecture information for a platform (what architectures are supported, what ones are currently active for given project, etc)
#preflight 63c81fb5b065224750a1759e
#rb mike.fricker,roman.dzieciol,joe.kirchoff,dmytro.vovk,brandon.schaefer [various parts]
#p4v-preflight-copy 23562471
[CL 23829977 by josh adams in ue5-main branch]
WebRTC binary and header updates for M96.
Reducing bloat of 5.1
#rb aidan.possemiers
[FYI] william.belcher, mattias.jansson
#jira UE-166850
#lockdown Mitchell.Wilson
#preflight 6345f9758d665d55d0fbea15
[CL 22486755 by matthew cotton in ue5-main branch]
Unfortunately we have no real leads why this issue occurs in M96 + FF, only that M96/M84 + non-FF works as expected and M84 + FF works as expected.
The intent is to remove M84 support as soon the FF + M96 bitrate issue can be resolved.
#jira UE-161176
#rb self
#preflight 6333b55ddc213d2eade73a90
[CL 22231468 by luke bermingham in ue5-main branch]
#rb matthew.cotton
#fyi mattias.jansson, ivan.sidarau, william.belcher
#jira none
#preflight 630816f53042e94f9f6e84a6 63081723d65521a5a5927a19
[CL 21580148 by Nick Pace in ue5-main branch]
#fyi Nick.Pace
Original CL Desc
-----------------------------------------------------------------
Set 4664 (M96) as the default WebRTC version and update usage of WebRTC by Pixel Streaming to avoid deprecated API
#rb self
#fyi mattias.jansson, ivan.sidarau, william.belcher, matthew.cotton
#jira none
#preflight 6307233fc85b7fef22ecb57b
[CL 21569680 by jessica agee in ue5-main branch]
#rb self
#fyi mattias.jansson, ivan.sidarau, william.belcher, matthew.cotton
#jira none
#preflight 6307233fc85b7fef22ecb57b
[CL 21559988 by Nick Pace in ue5-main branch]
This change list is a collation of work from multiple authors.
********Features*******
* Add a ForceKeyFrame blueprints and cpp method which forces the modules default streamer to send a keyframe.
* Add support for use of WebRTC version 96 with Pixel Streaming. NOTE: There are noticeable performance regressions introduced with this version that are being investigated. Version 84 remains the default.
* Add the ability to stream the main Level Editor window to the browser.
* Add a Pixel Streaming specific toolbar for starting and stopping streaming in the editor, as well as configuring some basic plugin settings.
* Add ARKit transform support for controlling PixelStreamingVCam cameras with ARKit transform data received from the LiveLink app. See PixelStreamingVCamSession for handling of this data.
********Bugfixes*******
* Fix backwards compatibility break where offers from players wouldn't result in a connection.
* Fix a deadlock scenario that could be triggered with rapid peer connects/disconnects.
* Fix a crash in WebRTC caused by not removing the audio sink when a peer disconnects.
* Fix streams being capped at 30fps by default.
* Fix incorrect WebRTC headers being included in public header.
********Refactors*******
* Refactor Pixel Streaming start-up logic to be a more uniform code path.
* Refactor Pixel Streaming URL to use settings function like PixelStreamingIP and Port.
* Moved ECodec to public so the module can expose a method to select what codec the user would like to use.
* Modified packaging of a PixelStreaming project so that ps-infra files are placed in a nicer location.
* Refactor handling of input so mouse and touch events don't affect windows in front of or around the target viewport.
* Renamed the encoders and their corresponding factories to better describe their purpose.
#rb luke.bermingham
#jira none
#preflight 62c3919fc438da7f09fe0914
#fyi mattias.jansson, aidan.possemiers, david.hibbitts
[CL 20938453 by William Belcher in ue5-main branch]
- Windows-based platform extensions should not use MfMedia player now - should change to WmfMedia for the time being.
#jira UE-131865
#rb Eric.McDaniel
#preflight 62347b390820efd09469a25a
[CL 19434256 by David Harvey in ue5-main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869250 via CL 10869537 via CL 10869906
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870965 by ryan durand in Main branch]