IMetadataObserver

The metadata observer.

You can call registerMediaMetadataObserver to register or unregister the IMetadataObserver object.

getMaxMetadataSize

Occurs when the SDK requests the maximum size of the metadata.

virtual int getMaxMetadataSize() { return DEFAULT_METADATA_SIZE_IN_BYTE; }

After successfully complete the registration by calling registerMediaMetadataObserver, the SDK triggers this callback once every video frame is sent. You need to specify the maximum size of the metadata in the return value of this callback.

Returns

The maximum size of the buffer of the metadata that you want to use. The highest value is 1024 bytes. Ensure that you set the return value.

METADATA_TYPE

Metadata type of the observer. We only support video metadata for now.

Enumerator

UNKNOWN_METADATA
The type of metadata is unknown.
VIDEO_METADATA
The type of metadata is video.

Metadata

Media metadata.

struct Metadata {
    unsigned int uid;
    unsigned int size;
    unsigned char *buffer;
    long long timeStampMs;
    };

uid
The user ID.
  • For the recipient: The ID of the remote user who sent the Metadata.
  • For the sender: Ignore it.
size
The buffer size of the sent or received Metadata.
buffer
The buffer address of the sent or received Metadata.
timeStampMs
The timestamp (ms) of Metadata.

onMetadataReceived

Occurs when the local user receives the metadata.

virtual void onMetadataReceived(const Metadata &metadata) = 0;

Parameters

metadata
The metadata received. See Metadata.

onReadyToSendMetadata

Occurs when the SDK is ready to send metadata.

virtual bool onReadyToSendMetadata(Metadata &metadata, VIDEO_SOURCE_TYPE source_type) = 0;

This callback is triggered when the SDK is ready to send metadata.

Attention: Ensure that the size of the metadata does not exceed the value set in the getMaxMetadataSize callback.

Parameters

source_type
Video data type. See VIDEO_SOURCE_TYPE.
metadata
The metadata that the user wants to send. See Metadata.

Returns

  • true: Send the video frame.
  • false: Do not send the video frame.