Obtain Raw data in the meeting sdk

Description
Hello, I would like to create an integration with zoom to perform data analysis on video and audio, reviewing the documentation I see what can be done with the meeting sdk in c. I am starting in this language and I appreciate any help.
I found this doc doc

Error?
sparse documentation

When you refer Call StartRawRecording in IMeetingRecordingController to trigger the recording consent dialog for all users if the current user has permission to start the recording.
this is in IMeetingRecordingInterface or in IMeetingServiceInterface

Troubleshooting Routes
I am using the windows sdk with de x64 demo and I create a instance of CustomVideoDelegate.h for override the methods

How To Reproduce

#pragma once
#include "stdafx.h"
#include "zoom_sdk.h"
#include "zoom_sdk_def.h"
#include <zoom_sdk_raw_data_def.h>
#include <rawdata/rawdata_renderer_interface.h>
#include <rawdata/rawdata_audio_helper_interface.h>

using namespace ZOOM_SDK_NAMESPACE;

class CustomVideoDelegate : public IZoomSDKRendererDelegate
{
    public:
        enum RawDataStatus
        {
            RawData_On,
            RawData_Off,
        };

        virtual void onRawDataFrameReceived(const YUVRawDataI420& yuvRawData)
        {
            //process the raw video data stored in the YUVRawDataI420 object
        }      
};


class CustomAudioDelegate : public IZoomSDKAudioRawDataDelegate
{
    public:
        virtual void onOneWayAudioRawDataReceived(unsigned int userId, unsigned char* data, int data_len)
        {
            // Handle per-user audio data
            // Do not perform heavy operations here, as it may cause delayed or lost data.
            // Process the data...
        }

        virtual void onMixedAudioRawDataReceived(unsigned char* data, int data_len)
        {
            // Handle meeting-wide audio data
            // Do not perform heavy operations here, as it may cause delayed or lost data.
            // Process the data...
        }
};
1 Like

Update, I split the code in 2 files, the first CustomVideoDelegate.h

#include "stdafx.h"
#include "zoom_sdk.h"
#include "zoom_sdk_def.h"
#include <zoom_sdk_raw_data_def.h>
#include <rawdata/rawdata_renderer_interface.h>

using namespace ZOOM_SDK_NAMESPACE;

class CustomVideoDelegate : public IZoomSDKRendererDelegate
{
public:
    static CustomVideoDelegate* GetInstance();

    // Inherited via IZoomSDKRendererDelegate
    virtual void onRendererBeDestroyed() override;

    virtual void onRawDataFrameReceived(YUVRawDataI420* data) override;

    virtual void onRawDataStatusChanged(RawDataStatus status) override;

private:
    CustomVideoDelegate();
    ~CustomVideoDelegate();

private:
    static CustomVideoDelegate* m_videoObj;
    static ZOOM_SDK_NAMESPACE::IZoomSDKRendererDelegate* m_pRendererDelegate;
};

and the CustomVideoDelegate.cpp

#include "stdafx.h"
#include <zoom_sdk_raw_data_def.h>
#include <rawdata/rawdata_renderer_interface.h>
#include <rawdata/rawdata_audio_helper_interface.h>
#include <rawdata/zoom_rawdata_api.h>
#include "CustomVideoDelegate.h"

using namespace ZOOM_SDK_NAMESPACE;

CustomVideoDelegate* CustomVideoDelegate::m_videoObj = NULL;

CustomVideoDelegate::CustomVideoDelegate()
{

}


CustomVideoDelegate::~CustomVideoDelegate()
{

}


CustomVideoDelegate* CustomVideoDelegate::GetInstance()
{
	if (m_videoObj == NULL)
	{
		m_videoObj = new CustomVideoDelegate();
	}
	return m_videoObj;
}


void CustomVideoDelegate::onRendererBeDestroyed()
{
	// TODO: insert return statement here
}

void CustomVideoDelegate::onRawDataFrameReceived(YUVRawDataI420* data)
{
	::MessageBox(NULL, _T("test recording"), _T("winsdk demo"), MB_OK);
}


void CustomVideoDelegate::onRawDataStatusChanged(RawDataStatus status)
{

}

Updating : I found the meeting_recording_interface.h
path :“meeting_service_components/meeting_recording_interface.h”
I create a instance of the pure virtual interface

for the CustomRecordingContro,ler.h

#pragma once
#include "stdafx.h"
#include "zoom_sdk_def.h"
#include <time.h>
#include "meeting_service_components/meeting_recording_interface.h"

using namespace ZOOM_SDK_NAMESPACE;

class CustomRecordingController : public IMeetingRecordingController
{
	public :
		static CustomRecordingController* GetInstance();
		// Inherited via IMeetingRecordingController
		virtual SDKError SetEvent(IMeetingRecordingCtrlEvent* pEvent) override;
		virtual SDKError IsSupportRequestLocalRecordingPrivilege() override;
		virtual SDKError RequestLocalRecordingPrivilege() override;
		virtual SDKError StartRecording(time_t& startTimestamp) override;
		virtual SDKError StopRecording(time_t& stopTimestamp) override;
		virtual SDKError CanStartRecording(bool cloud_recording, unsigned int userid) override;
		virtual SDKError CanAllowDisAllowLocalRecording() override;
		virtual SDKError StartCloudRecording() override;
		virtual SDKError StopCloudRecording() override;
		virtual SDKError IsSupportLocalRecording(unsigned int userid) override;
		virtual SDKError AllowLocalRecording(unsigned int userid) override;
		virtual SDKError DisAllowLocalRecording(unsigned int userid) override;
		virtual SDKError RequestCustomizedLocalRecordingSource() override;
		virtual SDKError PauseRecording() override;
		virtual SDKError ResumeRecording() override;
		virtual SDKError PauseCloudRecording() override;
		virtual SDKError ResumeCloudRecording() override;
		virtual SDKError StartRawRecording() override;
		virtual SDKError StopRawRecording() override;
		virtual RecordingStatus GetCloudRecordingStatus() override;
	private:
		CustomRecordingController();
		~CustomRecordingController();
	private:
		//static CustomRecordingController* m_recordingObj;
		static ZOOM_SDK_NAMESPACE::IMeetingRecordingController* m_pController;
};

and for the CustomRecordingController.cpp

#pragma once
#include "stdafx.h"
#include "zoom_sdk_def.h"
#include <time.h>
#include "meeting_service_components/meeting_recording_interface.h"

using namespace ZOOM_SDK_NAMESPACE;

class CustomRecordingController : public IMeetingRecordingController
{
	public :
		static CustomRecordingController* GetInstance();
		// Inherited via IMeetingRecordingController
		virtual SDKError SetEvent(IMeetingRecordingCtrlEvent* pEvent) override;
		virtual SDKError IsSupportRequestLocalRecordingPrivilege() override;
		virtual SDKError RequestLocalRecordingPrivilege() override;
		virtual SDKError StartRecording(time_t& startTimestamp) override;
		virtual SDKError StopRecording(time_t& stopTimestamp) override;
		virtual SDKError CanStartRecording(bool cloud_recording, unsigned int userid) override;
		virtual SDKError CanAllowDisAllowLocalRecording() override;
		virtual SDKError StartCloudRecording() override;
		virtual SDKError StopCloudRecording() override;
		virtual SDKError IsSupportLocalRecording(unsigned int userid) override;
		virtual SDKError AllowLocalRecording(unsigned int userid) override;
		virtual SDKError DisAllowLocalRecording(unsigned int userid) override;
		virtual SDKError RequestCustomizedLocalRecordingSource() override;
		virtual SDKError PauseRecording() override;
		virtual SDKError ResumeRecording() override;
		virtual SDKError PauseCloudRecording() override;
		virtual SDKError ResumeCloudRecording() override;
		virtual SDKError StartRawRecording() override;
		virtual SDKError StopRawRecording() override;
		virtual RecordingStatus GetCloudRecordingStatus() override;
	private:
		CustomRecordingController();
		~CustomRecordingController();
	private:
		//static CustomRecordingController* m_recordingObj;
		static ZOOM_SDK_NAMESPACE::IMeetingRecordingController* m_pController;
};