agoraio-community / agora-unreal-sdk-cpp Goto Github PK
View Code? Open in Web Editor NEWAgora Unreal SDK - C++ (Beta)
Agora Unreal SDK - C++ (Beta)
Issue
When Gathr attempts to open their project in the Unreal Editor using a Mac, they are consistently blocked by an error.
Solution
Provide a fix to the plugin, or instructions Gathr can follow to avoid this blocking issue
More Context
Using a Mac with a blank project does not cause this error. It appears to be related to something involving Gathr's engine settings, plugins, code, etc.
I can see that the Unreal Blueprint demo app runs on Android. However this CPP demo app is Windows, Web and IOS only. Looking through the code, I cant see why though as the Unreal project is cross-platform. Or am I missing something?
Describe the bug
In AgoraService.h, the platform check for IOS is improperly formatted and causes the compile to fail.
This:
#if defined (__APPLE__ && TARGET_OS_IPHONE) #include <Agora/iOS/Include/IAgoraService.h> #else #include <Agora/IAgoraService.h> #endif
Should be:
#if defined (__APPLE__) && (TARGET_OS_IPHONE) #include <Agora/iOS/Include/IAgoraService.h> #else #include <Agora/IAgoraService.h> #endif
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The Agora plugin should not cause any compilation issues.
Screenshots
n/a.
Desktop (please complete the following information):
Problem
Unreal updated the engine to 4.25.3, causing errors during PC builds for the plugin and project.
As Unreal automatically updates the engine, this is a blocker for PC users.
Solution
Describe the bug
Broadcasting to a voice channel with many instances causes a crash after enabling positional audio.
To Reproduce
Instances will crash randomly/when spikes in volume occur:
All instances will crash once microphone is unmuted:
Expected behavior
Positional audio works smoothly and there is no crash
Screenshots
I have reproduced the crash in the editor with Rider for Unreal 2021.2. It points to agora_core_audio_render_thread and the method AgoraRTC::ChENetwork::~ChENetwork(void)
Desktop:
Additional context
Been reproduced when joining a single Agora voice channel and also joining multiple Agora channels
Blueprint wrapper Doesn't include all functionality
The Blueprint wrapper doesn't reflect Agora's native functionality.
Currently, it has been modified at Nix's discretion for Unreal adaptation.
Solution
The Blueprint wrapper includes functions that have been left out.
Nix Comments
Pure c++ version is not available in blueprints,
blueprints version is available in c++ but its interface is different from native agora SDK.
In the current implementation, we are faced with the fact that sometimes users try to mix approaches.
This use case was not included in the plugin idea and leads to incorrect plugin behavior.
We suggest to merge ั++ module and blueprints module to have a single approach customers should work with.
Actions that should be done:
Agora cannot pass audio frames by specific user
When Gathr devs try to get audio from Agora users, it comes in one giant block of all user audio mixed together.
Solution: Return audio frames by specific Agora UID
The Gathr team resources
Gathr has provided example code, email descriptions and Slack messages providing extra context and support.
There is an error when I compile the original project.
1>------ Build started: Project: AgoraVideoCall, Configuration: Development_Editor x64 ------ 1>Creating makefile for AgoraVideoCallEditor (no existing makefile) 1>UnrealBuildTool : warning : Library 'agora_rtc_sdk.lib' was not resolvable to a file when used in Module 'Agora', assuming it is a filename and will search library paths for it. This is slow and dependency checking will not work for it. Please update reference to be fully qualified alternatively use PublicSystemLibraryPaths if you do intended to use this slow path to suppress this warning. 1>Parsing headers for AgoraVideoCallEditor 1> Running UnrealHeaderTool "E:\Unreal Plugins\Agora-Unreal-SDK-CPP-master\AgoraVideoCall.uproject" "E:\Unreal Plugins\Agora-Unreal-SDK-CPP-master\Intermediate\Build\Win64\AgoraVideoCallEditor\Development\AgoraVideoCallEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -installed 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(173) : LogCompile: Error: 'EFRAME_RATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(197) : LogCompile: Error: 'EORIENTATION_MODE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(209) : LogCompile: Error: 'EDEGRADATION_PREFERENCE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(333) : LogCompile: Error: 'ECAPTURER_OUTPUT_PREFERENCE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(373) : LogCompile: Error: 'EAUDIO_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(394) : LogCompile: Error: 'EAUDIO_SCENARIO_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(420) : LogCompile: Error: 'EAUDIO_EQUALIZATION_BAND_FREQUENCY' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(436) : LogCompile: Error: 'EAUDIO_REVERB_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(466) : LogCompile: Error: 'EAUDIO_REVERB_PRESET' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(476) : LogCompile: Error: 'ECLIENT_ROLE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(488) : LogCompile: Error: 'EPRIORITY_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(506) : LogCompile: Error: 'ERENDER_MODE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(516) : LogCompile: Error: 'EAUDIO_CODEC_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(540) : LogCompile: Error: 'ERAW_AUDIO_FRAME_OP_MODE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(554) : LogCompile: Error: 'ESTREAM_FALLBACK_OPTIONS' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(574) : LogCompile: Error: 'EVOICE_CHANGER_PRESET' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(586) : LogCompile: Error: 'EVIDEO_MIRROR_MODE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(604) : LogCompile: Error: 'EAUDIO_RECORDING_QUALITY_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(616) : LogCompile: Error: 'ELIGHTENING_CONTRAST_LEVEL' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(628) : LogCompile: Error: 'EAUDIO_SAMPLE_RATE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(639) : LogCompile: Error: 'EVIDEO_CODEC_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1332) : LogCompile: Error: 'EUSER_OFFLINE_REASON_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1374) : LogCompile: Error: 'ECHANNEL_PROFILE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1396) : LogCompile: Error: 'EVIDEO_FRAME_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1435) : LogCompile: Error: 'EVIDEO_CONTENT_HINT' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1447) : LogCompile: Error: 'ELASTMILE_PROBE_RESULT_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1503) : LogCompile: Error: 'EQUALITY_ADAPT_INDICATION' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1517) : LogCompile: Error: 'EVIDEO_CODEC_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1595) : LogCompile: Error: 'EREMOTE_VIDEO_STREAM_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1747) : LogCompile: Error: 'ELOCAL_AUDIO_STREAM_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1764) : LogCompile: Error: 'ELOCAL_AUDIO_STREAM_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1793) : LogCompile: Error: 'EREMOTE_AUDIO_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1830) : LogCompile: Error: 'EREMOTE_AUDIO_STATE_REASON' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1853) : LogCompile: Error: 'EMEDIA_DEVICE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1870) : LogCompile: Error: 'EAUDIO_MIXING_STATE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1887) : LogCompile: Error: 'EAUDIO_MIXING_ERROR_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1904) : LogCompile: Error: 'ELOCAL_VIDEO_STREAM_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1927) : LogCompile: Error: 'ELOCAL_VIDEO_STREAM_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1952) : LogCompile: Error: 'EREMOTE_VIDEO_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(1987) : LogCompile: Error: 'EREMOTE_VIDEO_STATE_REASON' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2004) : LogCompile: Error: 'ECHANNEL_MEDIA_RELAY_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2051) : LogCompile: Error: 'ECHANNEL_MEDIA_RELAY_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2094) : LogCompile: Error: 'ECHANNEL_MEDIA_RELAY_EVENT' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2122) : LogCompile: Error: 'ERTMP_STREAM_PUBLISH_STATE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2160) : LogCompile: Error: 'ERTMP_STREAM_PUBLISH_ERROR' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2186) : LogCompile: Error: 'EAUDIO_ROUTE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2229) : LogCompile: Error: 'ECONNECTION_STATE_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2283) : LogCompile: Error: 'ECONNECTION_CHANGED_REASON_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>E:/Unreal Plugins/Agora-Unreal-SDK-CPP-master/Plugins/AgoraPlugin/Source/AgoraBlueprintable/Public/UECompatibility.h(2309) : LogCompile: Error: 'ENETWORK_TYPE' does not have a 0 entry! (This is a problem when the enum is initalized by default) 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(46,5): error MSB3075: The command "chcp 65001 >NUL && "D:\Program Files\UE_4.24\Engine\Build\BatchFiles\Build.bat" AgoraVideoCallEditor Win64 Development -Project="E:\Unreal Plugins\Agora-Unreal-SDK-CPP-master\AgoraVideoCall.uproject" -WaitMutex -FromMsBuild" exited with code 5. Please verify that you have sufficient rights to run this command. 1>Done building project "AgoraVideoCall.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I have tried to modify the path of agora_rtc_sdk.lib ,but it doesn't work. Can you give me some help? I use UE4.24, vs2019, win10.
Issue
Currently, the plugin builds are separated into two different branches:
Solution
Include iOS build support into plugin along with the other platforms
Additional context
The iOS separation was caused by fundamental changes to Agora SDK. Support might be needed from Agora team to make this happen
C++ SDK isn't to parity with Agora Native SDK
The C++ SDK currently doesn't reflect Agora's native C++ SDK.
Currently, it has been modified at Nix's discretion for Unreal adaptation.
Solution
The C++ SDK reflects the standard with which Agora has built their C++ SDK, adapted for Unreal code standards, etc.
For Nix
Please include what needs to be changed in C++ wrapper here
Stream Messages weren't able to be sent to multiple channels
As a user, I can send text chats to one person, but not to people using multiple Agora channels
Solution
Stream Messages are able to be sent through IChannel objects, for the purpose of text chat through multiple Agora channels
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.