Access raw data on meeting sdk windows custom UI

@chunsiong.zoom I am trying to enable raw audio and video access in windows sdk and we are getting linker error . I am referring your code in repo., have followed exact procedure in readme ,

I might have done some silly mistake. I am new to c++ Sdk. Please help me to resolve.

Device (please complete the following information):

  • Device: [e.g. HP EliteBook]
  • OS: [e.g. Windows 10]

Here are the detailed error:

`Error LNK2001 unresolved external symbol “public: virtual void __thiscall RawAudioDelegate::onMixedAudioRawDataReceived(class AudioRawData *)” (?onMixedAudioRawDataReceived@RawAudioDelegate@@UAEXPAVAudioRawData@@@Z) sdk_demo_v2 D:\zoom-sdk-windows-5.15.2.18146\zoom-sdk-windows-5.15.2.18146_rawdata\x86\demo\sdk_demo_v2\CustomizedUIRecordMgr.obj 1
Error LNK2001 unresolved external symbol “public: virtual void __thiscall RawAudioDelegate::onOneWayAudioRawDataReceived(class AudioRawData *,unsigned int)” (?onOneWayAudioRawDataReceived@RawAudioDelegate@@UAEXPAVAudioRawData@@I@Z) sdk_demo_v2 D:\zoom-sdk-windows-5.15.2.18146\zoom-sdk-windows-5.15.2.18146_rawdata\x86\demo\sdk_demo_v2\CustomizedUIRecordMgr.obj 1
Error LNK2001 unresolved external symbol “public: virtual void __thiscall RawVideoDelegate::onRawDataFrameReceived(class YUVRawDataI420 *)” (?onRawDataFrameReceived@RawVideoDelegate@@UAEXPAVYUVRawDataI420@@@Z) sdk_demo_v2 D:\zoom-sdk-windows-5.15.2.18146\zoom-sdk-windows-5.15.2.18146_rawdata\x86\demo\sdk_demo_v2\CustomizedUIRecordMgr.obj 1
Error LNK2001 unresolved external symbol “public: virtual void __thiscall RawVideoDelegate::onRawDataStatusChanged(enum ZOOMSDK::IZoomSDKRendererDelegate::RawDataStatus)” (?onRawDataStatusChanged@RawVideoDelegate@@UAEXW4RawDataStatus@IZoomSDKRendererDelegate@ZOOMSDK@@@Z) sdk_demo_v2 D:\zoom-sdk-windows-5.15.2.18146\zoom-sdk-windows-5.15.2.18146_rawdata\x86\demo\sdk_demo_v2\CustomizedUIRecordMgr.obj 1
Error LNK2001 unresolved external symbol “public: virtual void __thiscall RawVideoDelegate::onRendererBeDestroyed(void)” (?onRendererBeDestroyed@RawVideoDelegate@@UAEXXZ) sdk_demo_v2 D:\zoom-sdk-windows-5.15.2.18146\zoom-sdk-windows-5.15.2.18146_rawdata\x86\demo\sdk_demo_v2\CustomizedUIRecordMgr.obj 1
Error LNK1120 5 unresolved externals sdk_demo_v2 D:\zoom-sdk-windows-5.15.2.18146\zoom-sdk-windows-5.15.2.18146_rawdata\x86\bin\sdk_demo_v2.exe 1

Thanks
`

@Ranjana ,

I’ve just updated the code to 5.15.7, you may want to try it again

@chunsiong.zoom I tried updated code for 5.15.7.20385 and got same linker error.

@Ranjana are you running this on “release” instead of “debug” when building and running on visual studio?

@chunsiong.zoom yes running on release .

At first I tried to run on debug and got below error

Error C1083 Cannot open include file: 'UIlib.h': No such file or directory sdk_demo_v2 D:\zoom-sdk-windows-5.15.7.20385\zoom-sdk-windows-5.15.7.20385\x86\demo\sdk_demo_v2\stdafx.h

then I run changing to release and getting linker error.

Also I am using visual studio 2019, Platform tool v142, windows sdk version 10.0.
I don’t know does this makes difference.

@Ranjana ,

I’m not sure if the version makes a difference.
Nonetheless I’ve just tried out on my machine,

It is on VS 2022, Platform tool v143 and Windows SDK 10

@chunsiong.zoom we are getting same error when tried runnning in VS 2022, Platform tool v143 and Windows SDK 10.

Could you please help us to resolve this.

@Ranjana ,

Is there such a file in your folder?
image

stafx.h references UIlib.h

@chunsiong.zoom yes I have the file

@Ranjana could you share again which files are complaining about the dulib?

@chunsiong.zoom sure.

This is the error

and sdatx.h has

@Ranjana

I’m not exactly sure what causes this, but here are some addition things which I would try in order of effort needed

  1. Try the x64 version
  2. Clean and build the solution (try for both x86 and x64)
  3. Reinstall visual studio

when you originally downloaded the Meeting SDK for Windows, did you change any of the properties?

@chunsiong.zoom Thanks. The code is working fine. I reinstalled the visual studio

But when I joined the meeting ( run in custom UI mode) and start local recording taking permission from host, At the end of the meeting I can see only local recording (mp4). I couldn’t see either raw data output.yuv or audio.pcm.

I can see in this thread
https://devforum.zoom.us/t/access-raw-data-with-meeting-sdk-requires-the-host-to-be-licensed/87871/14
raw recording does not require any license . But last reply say host should be licensed

Could you please help me understanding this.

@Ranjana ,

That response is from a bot, and is not accurate. I have deleted the reply to prevent future confusion.
You do not need a license to access raw data.

I would recommend you to pull the sample code again, as there are updates to the code.
You will need to comment out the part where it is doing local recording to an mp4 file.

@chunsiong.zoom Appreciate your help and support . We are able to execute code and getting output.yuv and audio.pcm .

Since I am not so familiar with C++, have few queries .

The raw data we receive has only the video and audio of host, even though camera and mic of other participant is on .

Also we are not able to view all participant video in sdk even after changing gallery view.

Please help us to identify and understand the function we need to check to find the video render of each participant and corresponding data in raw recording

Thanks.

@Ranjana ,

Please refer to the docs.
When subscribing to raw audio, you can subscribe to individual audio or mixed audio stream
When subscribing to raw video, you need to specify each individual’s ID

@chunsiong.zoom we modified the code to subscribe each participant

// Loop through the list of participants
for (int i = 0; i < participants->GetCount(); i++) {

int returnvalue = m_pParticipantsController->GetParticipantsList()->GetItem(i);

rawVideoDelegate = new RawVideoDelegate(returnvalue);
SDKError err2 = createRenderer(&videoRenderer, rawVideoDelegate);
if (err2 != SDKERR_SUCCESS) {
cout << “Error occurred”;
//handle error
}
else {

  int returnvalue = m_pParticipantsController->GetParticipantsList()->GetItem(i);

  videoRenderer->setRawDataResolution(ZoomSDKResolution_1080P);
  //subscribe to the user's raw video by their userID
  videoRenderer->subscribe(returnvalue, RAW_DATA_TYPE_VIDEO);
  
  //this will trigger callbacks in onRawDataFrameReceived(... ...) within RawVideoDelegate.cpp

}

}
and we try to write data to different file names with below code

int participantId = data->GetSourceID();

// Create a filename based on the participant’s name.
std::string filename =“output”+ std::to_string(participantId) + “.yuv”;

Still we are unable to have multiple output files . As per our understanding each time we subscribe with different participant id , onRawDataFrameReceived will be trigger with different participant data having unique source ID .

Please help us understanding this. Since we are not able to debug the code without errors.

@Ranjana ,

This is a sample code, you will probably need to debug this further yourself.

If I’m not mistaken, everytime you run the loop, it is destroying / dereferencing the previous object, and creating a new RawVideoDelegate.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.