FThumbImageBuffer
The image content of the thumbnail or icon. Set in FScreenCaptureSourceInfo.
USTRUCT(BlueprintType)
struct FThumbImageBuffer {
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ThumbImageBuffer")
UImage* Image = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ThumbImageBuffer")
TArray<uint8> buffer;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ThumbImageBuffer")
int64 length = 0;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ThumbImageBuffer")
int64 width = 0;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ThumbImageBuffer")
int64 height = 0;
#if defined(_WIN32) || (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE)
FThumbImageBuffer(){}
FThumbImageBuffer(const agora::rtc::ThumbImageBuffer & AgoraData){
length = AgoraData.length;
buffer.SetNumZeroed(length);
for (int i = 0; i < length; i++) {
this->buffer[i] = AgoraData.buffer[i];
}
width = AgoraData.width;
height = AgoraData.height;
if(Image == nullptr){
Image = NewObject<UImage>();
}
UTexture2D* RenderTexture = UTexture2D::CreateTransient(width, height, PF_R8G8B8A8);
if(RenderTexture){
#if AG_UE5_OR_LATER
uint8* RawData = (uint8*)RenderTexture->GetPlatformData()->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(RawData, AgoraData.buffer, width * height * 4);
RenderTexture->GetPlatformData()->Mips[0].BulkData.Unlock();
RenderTexture->UpdateResource();
#else
uint8* RawData = (uint8*)RenderTexture->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(RawData, AgoraData.buffer, width * height * 4);
RenderTexture->PlatformData->Mips[0].BulkData.Unlock();
RenderTexture->UpdateResource();
#endif
FSlateBrush RenderBrush;
RenderBrush.SetResourceObject(RenderTexture);
Image->SetBrush(RenderBrush);
}
}
agora::rtc::ThumbImageBuffer CreateAgoraData() const {
agora::rtc::ThumbImageBuffer AgoraData;
char* TmpChar = new char[length];
for (int i = 0; i < length; i++) {
TmpChar[i] = this->buffer[i];
}
AgoraData.buffer = TmpChar;
AgoraData.length = length;
AgoraData.width = width;
AgoraData.height = height;
return AgoraData;
}
void FreeAgoraData(agora::rtc::ThumbImageBuffer & AgoraData) const {
SET_UABT_GENERIC_PTR___MEMFREE(AgoraData.buffer)
}
#endif
};
Note: The default image is in the ARGB format. If you need to use another format, you need to convert the image on your own.
Attributes
- buffer
- The buffer of the thumbnail or icon.
- length
- The buffer length of the thumbnail or icon, in bytes.
- width
- The actual width (px) of the thumbnail or icon.
- height
- The actual height (px) of the thumbnail or icon.