Skip to content

metaRTC8 API

yangrtc edited this page Jan 5, 2026 · 1 revision

Parameter

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;  

ICE

YangPeer peerInfo;
peerInfo.rtc.iceServerIP//stun and turn server ip
peerInfo.rtc.iceServerPort//port
peerInfo.rtc.iceUserName//username
peerInfo.rtc.icePassword/password

API

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,YangPushData *audioData);  
   //push video stream  
	int32_t (*on_video)(YangPeer* peer,YangPushData *videoData);  
   //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;  

Clone this wiki locally