-
Notifications
You must be signed in to change notification settings - Fork 264
metaRTC7 API
yangrtc edited this page Dec 16, 2025
·
6 revisions
typedef struct YangRtcInfo {
yangbool isControlled;
yangbool enableSdpCandidate;
int32_t sessionTimeout;
int32_t iceCandidateType;
YangIceTransportPolicy iceTransportPolicy;
int32_t iceServerPort;
int32_t rtcSocketProtocol;
int32_t turnSocketProtocol;
int32_t rtcPort;
int32_t rtcLocalPort;
int32_t turnReqInterval;
int32_t maxTurnWaitTime;
char iceServerIP[64];
char iceUserName[32];
char icePassword[64];
}YangRtcInfo;
typedef struct{
int32_t uid;
int32_t userId;
int32_t remotePort;
int32_t mediaServer;
YangIceMode iceMode;
YangIpFamilyType familyType;
YangRtcDirection direction;
char remoteIp[64];
YangRtcInfo rtc;
YangPushAudioInfo pushAudio;
YangPushVideoInfo pushVideo;
}YangPeerInfo;
typedef struct {
YangSslCallback sslCallback;
YangRtcCallback rtcCallback;
//receive audio/video/msg data callback
YangReceiveCallback recvCallback;
YangIceCallback iceCallback;
}YangPeerCallback;
YangPeer peerInfo;
peerInfo.rtc.iceServerIP//stun and turn server ip
peerInfo.rtc.iceServerPort//port
peerInfo.rtc.iceUserName//username
peerInfo.rtc.icePassword/password
typedef struct{
void* conn;
YangPeerInfo peerInfo;
YangPeerCallback peerCallback;
}YangPeer;
typedef struct {
YangPeer peer;
//add audio track
int32_t (*addAudioTrack)(YangPeer* peer,YangAudioCodec codec);
//add video track
int32_t (*addVideoTrack)(YangPeer* peer,YangVideoCodec codec);
//set direction
int32_t (*addTransceiver)(YangPeer* peer,YangMediaTrack media,YangRtcDirection direction);
//create local sdp
int32_t (*createOffer)(YangPeer* peer, char **psdp);
//When exchanging sdp, after obtaining the peer sdp, generate a local sdp to send back to the peer
int32_t (*createAnswer)(YangPeer* peer,char* answer);
// create datachnnel
int32_t (*createDataChannel)(YangPeer* peer);
//set locla peer sdp
int32_t (*setLocalDescription)(YangPeer* peer,char* sdp);
//set remote peer sdp
int32_t (*setRemoteDescription)(YangPeer* peer,char* sdp);
//close metartc
int32_t (*close)(YangPeer* peer);
//push audio stream
int32_t (*on_audio)(YangPeer* peer,YangFrame* audioFrame);
//push video stream
int32_t (*on_video)(YangPeer* peer,YangFrame* videoFrame);
//push datachannel message
int32_t (*on_message)(YangPeer* peer,YangFrame* msgFrame);
//live connection state
int32_t (*isAlive)(YangPeer* peer);
//Is it already connected
int32_t (*isConnected)(YangPeer* peer);
int32_t (*addIceCandidate)(YangPeer* peer,char* candidateStr);
//send rtc system message
int32_t (*sendRtcMessage)(YangPeer* peer, YangRtcMessageType mess);
int32_t (*sendRequestPli)(YangPeer* peer);
//0:host 1:stun 2:turn
YangIceCandidateType (*getIceCandidateType)(YangPeer* peer);
YangRtcConnectionState (*getConnectionState)(YangPeer* peer);
}YangPeerConnection;