🌐 English

    WebRTC API#

    Oasis supports WebRTC video and audio (SRTP), and data channels (SCTP).

    It supports ICE for NAT Traversal.

    Header File#

    OasisWebRTC.h

    RTCPeerConnectionEventDelegate Interface#

    class RTCPeerConnectionEventDelegate : public std::enable_shared_from_this<RTCPeerConnectionEventDelegate>
    {
    public:
        RTCPeerConnectionEventDelegate();
        virtual ~RTCPeerConnectionEventDelegate();
    
        virtual void onSessionCreated(const RTCPeerConnectionRef &pc, const char *local_sid, const char *remote_sid, int64_t session_id, void *opaque);
        virtual void onSessionDestroyed(const RTCPeerConnectionRef &pc, const char *local_sid, const char *remote_sid, int64_t session_id, void *opaque);
        virtual void onConnectionTimedOut(const RTCPeerConnectionRef &pc, const char *local_sid, const char *remote_sid, int64_t session_id, void *opaque);
        virtual void onLocalOffer(const RTCPeerConnectionRef &pc, const char *local_sid, const char *remote_sid, const char *local_offer);
        virtual void onLocalAnswer(const RTCPeerConnectionRef &pc, const char *local_sid, const char *remote_sid, const char *local_answer);
        virtual void onNewLocalCandidate(const RTCPeerConnectionRef &pc, const char *local_sid, const char *remote_sid, const char *mid, const char *local_candidate);
        virtual void onError(const RTCPeerConnectionRef &pc, const char *local_sid, const char *remote_sid, int32_t error, int32_t reason, const char *reason_msg);
    
        virtual void onLocalDataChannelOpened(const RTCPeerConnectionRef &pc, const RTCDataChannelRef &dc);
        virtual void onLocalDataChannelClosed(const RTCPeerConnectionRef &pc, const RTCDataChannelRef &dc);
    
        virtual void onPeerDataChannelOpen(const RTCPeerConnectionRef &pc, const RTCDataChannelRef &dc);
        virtual void onPeerDataChannelClosed(const RTCPeerConnectionRef &pc, const RTCDataChannelRef &dc);
        virtual void onPeerDataChannelString(const RTCPeerConnectionRef &pc, const RTCDataChannelRef &dc, const std::string &string, uint32_t flags);
        virtual void onPeerDataChannelBinary(const RTCPeerConnectionRef &pc, const RTCDataChannelRef &dc, const void *data, size_t length, uint32_t flags);
        virtual void onPeerDataChannelError(const RTCPeerConnectionRef &pc, const RTCDataChannelRef &dc, int32_t error, int32_t reason, const char *reason_msg);
    
        virtual void onPeerImageReady(const RTCPeerConnectionRef &pc, const char *camera_path);
    };
    
    void onSessionCreated ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , int64_t session_id , void * opaque )
    OasisWebRTC.h
    Callback function called when a WebRTC session is created.
    Parameters
    pc  WebRTC connection object.
    local_sid  String pointer indicating the local ID.
    remote_sid  String pointer indicating the remote ID.
    session_id  The session ID.
    opaque  Pointer for internal use.
    void onSessionDestroyed ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , int64_t session_id , void * opaque )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    session_id 
    opaque 
    void onConnectionTimedOut ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , int64_t session_id , void * opaque )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    session_id 
    opaque 
    void onLocalOffer ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , const char * local_offer )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    local_offer 
    void onLocalAnswer ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , const char * local_answer )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    local_answer 
    void onNewLocalCandidate ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , const char * mid , const char * local_candidate )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    mid 
    local_candidate 
    void onError ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , int32_t error , int32_t reason , const char * reason_msg )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    error 
    reason 
    reason_msg 
    void onLocalDataChannelOpened ( const RTCPeerConnectionRef & pc , const RTCDataChannelRef & dc )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    dc 
    void onLocalDataChannelClosed ( const RTCPeerConnectionRef & pc , const RTCDataChannelRef & dc )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    dc 
    void onPeerDataChannelOpen ( const RTCPeerConnectionRef & pc , const RTCDataChannelRef & dc )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    dc 
    void onPeerDataChannelClosed ( const RTCPeerConnectionRef & pc , const RTCDataChannelRef & dc )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    dc 
    void onPeerDataChannelString ( const RTCPeerConnectionRef & pc , const RTCDataChannelRef & dc , const std::string & string , uint32_t flags )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    dc 
    string 
    flags 
    void onPeerDataChannelBinary ( const RTCPeerConnectionRef & pc , const RTCDataChannelRef & dc , const void * data , size_t length , uint32_t flags )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    dc 
    data 
    length 
    flags 
    void onPeerDataChannelError ( const RTCPeerConnectionRef & pc , const RTCDataChannelRef & dc , int32_t error , int32_t reason , const char * reason_msg )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    dc 
    error 
    reason 
    reason_msg 
    void onPeerImageReady ( const RTCPeerConnectionRef & pc , const char * camera_path )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    camera_path 

    Functions#

    RTCPeerConnectionRef rtcPeerConnectionCreate ( key_value_map_t & session_parameters , const std::shared_ptr<RTCPeerConnectionEventDelegate> & delegate )
    OasisWebRTC.h
    Parameters
    session_parameters 
    delegate 
    Return Value
    int32_t rtcPeerConnectionDestroy ( const RTCPeerConnectionRef & pc )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionSetLocalSid ( const RTCPeerConnectionRef & pc , const char * local_sid )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    Return Value
    • 0: Success
    • -1: Failure
    bool rtcPeerConnectionIsBusy ( const RTCPeerConnectionRef & pc )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    Return Value
    int32_t rtcPeerConnectionSetRemoteAnswer ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , const char * answer_sdp )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    answer_sdp 
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionSetRemoteOffer ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , const char * offer_sdp , bool always_create )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    offer_sdp 
    always_create 
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionAddRemoteCandidate ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid , const char * mid , const char * remote_candidate )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    mid 
    remote_candidate 
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionCreateSession ( const RTCPeerConnectionRef & pc , const char * from_sid )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    from_sid 
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionCreateSessionWithParameters ( const RTCPeerConnectionRef & pc , const char * from_sid , const key_value_map_t & parameters )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    from_sid 
    parameters 
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionDestroySession ( const RTCPeerConnectionRef & pc , const char * local_sid , const char * remote_sid )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    local_sid 
    remote_sid 
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionMuteSoundSink ( const RTCPeerConnectionRef & pc , bool on )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    on 
    Return Value
    • 0: Success
    • -1: Failure
    int32_t rtcPeerConnectionMuteSoundSource ( const RTCPeerConnectionRef & pc , bool on )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    on 
    Return Value
    • 0: Success
    • -1: Failure
    RTCDataChannelRef rtcCreateDataChannel ( const RTCPeerConnectionRef & pc , const char * label )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    label 
    Return Value
    int32_t rtcDestroyDataChannel ( const RTCPeerConnectionRef & pc , const char * label )
    OasisWebRTC.h
    Parameters
    pc  WebRTC connection object.
    label 
    Return Value
    • 0: Success
    • -1: Failure
    uint16_t rtcDataChannelStreamID ( const RTCDataChannelRef & dc )
    OasisWebRTC.h
    Parameters
    dc 
    Return Value
    const char * rtcDataChannelLabel ( const RTCDataChannelRef & dc )
    OasisWebRTC.h
    Parameters
    dc 
    Return Value
    const char * rtcDataChannelProtocol ( const RTCDataChannelRef & dc )
    OasisWebRTC.h
    Parameters
    dc 
    Return Value
    ssize_t rtcDataChannelSendString ( const RTCDataChannelRef & dc , const std::string & string , uint32_t flags )
    OasisWebRTC.h
    Parameters
    dc 
    string 
    flags 
    Return Value
    ssize_t rtcDataChannelSendString ( const RTCDataChannelRef & dc , const char * string , size_t length , uint32_t flags )
    OasisWebRTC.h
    Parameters
    dc 
    string 
    length 
    flags 
    Return Value
    ssize_t rtcDataChannelSendBinary ( const RTCDataChannelRef & dc , const std::vector<uint8_t> & data , uint32_t flags )
    OasisWebRTC.h
    Parameters
    dc 
    data 
    flags 
    Return Value
    ssize_t rtcDataChannelSendBinary ( const RTCDataChannelRef & dc , const std::vector<char> & data , uint32_t flags )
    OasisWebRTC.h
    Parameters
    dc 
    data 
    flags 
    Return Value
    ssize_t rtcDataChannelSendBinary ( const RTCDataChannelRef & dc , const void * data , size_t length , uint32_t flags )
    OasisWebRTC.h
    Parameters
    dc 
    data 
    length 
    flags 
    Return Value

    Example#