更新 UpdateMainVideoBuffer/UpdateAdditionalVideoBuffe
//VideoCallViewWidget.h
...
UCLASS()
class AGORAVIDEOCALL_API UVideoCallViewWidget : public UUserWidget
{
GENERATED_BODY()
public:
...
void UpdateMainVideoBuffer( uint8* RGBBuffer, uint32_t Width, uint32_t Height, uint32_t Size);
void UpdateAdditionalVideoBuffer( uint8* RGBBuffer, uint32_t Width, uint32_t Height, uint32_t Size);
void ResetBuffers();
...
};
//VideoCallViewWidget.cpp
void UVideoCallViewWidget::UpdateMainVideoBuffer(
uint8* RGBBuffer,
uint32_t Width,
uint32_t Height,
uint32_t Size)
{
if (!MainVideoViewWidget)
{
return;
}
MainVideoWidth = Width;
MainVideoHeight = Height;
MainVideoViewWidget->UpdateBuffer(RGBBuffer, Width, Height, Size);
}
void UVideoCallViewWidget::UpdateAdditionalVideoBuffer(
uint8* RGBBuffer,
uint32_t Width,
uint32_t Height,
uint32_t Size)
{
if (!AdditionalVideoViewWidget)
{
return;
}
AdditionalVideoViewWidget->UpdateBuffer(RGBBuffer, Width, Height, Size);
}
void UVideoCallViewWidget::ResetBuffers()
{
if (!MainVideoViewWidget || !AdditionalVideoViewWidget)
{
return;
}
MainVideoViewWidget->ResetBuffer();
AdditionalVideoViewWidget->ResetBuffer();
}
创建 VideoCallWidget C++ 类
VideoCallWidget 类作为示例应用程序的音频/视频调用小部件。它包含以下控件,与蓝图资产中的UI元素绑定。
创建类和添加所需的include
像之前那样创建Widget C++类,添加必要的include和转发声明。
//VideoCallWidget.h #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "Templates/UniquePtr.h" #include "Components/Image.h" #include "Components/Button.h" #include "Engine/Texture2D.h" #include "VideoCall.h" #include "VideoCallViewWidget.h" #include "VideoCallWidget.generated.h" class AVideoCallPlayerController; class UVideoViewWidget; //VideoCallWidget.cpp #include "Kismet/GameplayStatics.h" #include "UObject/ConstructorHelpers.h" #include "Components/CanvasPanelSlot.h" #include "VideoViewWidget.h" #include "VideoCallPlayerController.h"
增加成员变量
//VideoCallWidget.h
...
UCLASS()
class AGORAVIDEOCALL_API UVideoCallWidget : public UUserWidget
{
GENERATED_BODY()
public:
AVideoCallPlayerController* PlayerController = nullptr;
public:
UPROPERTY(BlueprintReadOnly, meta = (BindWidget))
UVideoCallViewWidget* VideoCallViewWidget = nullptr;
//Buttons
UPROPERTY(BlueprintReadOnly, meta = (BindWidget))
UButton* EndCallButton = nullptr;
UPROPERTY(BlueprintReadOnly, meta = (BindWidget))
UButton* MuteLocalAudioButton = nullptr;
UPROPERTY(BlueprintReadOnly, meta = (BindWidget))
UButton* VideoModeButton = nullptr;
//Button textures
int32 ButtonSizeX = 96;
int32 ButtonSizeY = 96;
UTexture2D* EndCallButtonTexture = nullptr;
UTexture2D* AudioButtonMuteTexture = nullptr;
UTexture2D* AudioButtonUnmuteTexture = nullptr;
UTexture2D* VideomodeButtonCameraoffTexture = nullptr;
UTexture2D* VideomodeButtonCameraonTexture = nullptr;
TUniquePtr<VideoCall> VideoCallPtr;
...
};










