mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-27 04:35:34 +08:00
128 lines
2.9 KiB
C++
128 lines
2.9 KiB
C++
#ifndef _X_H_
|
|
#define _X_H_
|
|
|
|
#if defined(_MSC_VER)
|
|
#define DLLAPI __declspec(dllexport)
|
|
#elif defined(__GNUC__)
|
|
#define DLLAPI __attribute__((visibility("default")))
|
|
#else
|
|
#define DLLAPI
|
|
#endif
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
enum DATA_TYPE { VIDEO = 0, AUDIO, DATA };
|
|
enum ConnectionStatus {
|
|
Connecting = 0,
|
|
Connected,
|
|
Gathering,
|
|
Disconnected,
|
|
Failed,
|
|
Closed,
|
|
IncorrectPassword,
|
|
NoSuchTransmissionId
|
|
};
|
|
|
|
enum SignalStatus {
|
|
SignalConnecting = 0,
|
|
SignalConnected,
|
|
SignalFailed,
|
|
SignalClosed,
|
|
SignalReconnecting,
|
|
SignalServerClosed
|
|
};
|
|
|
|
enum TraversalMode { P2P = 0, Relay, UnknownMode };
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct {
|
|
const char* data;
|
|
size_t size;
|
|
uint32_t width;
|
|
uint32_t height;
|
|
} XVideoFrame;
|
|
|
|
typedef struct {
|
|
uint64_t video_in;
|
|
uint64_t video_out;
|
|
uint64_t audio_in;
|
|
uint64_t audio_out;
|
|
uint64_t data_in;
|
|
uint64_t data_out;
|
|
uint64_t total_in;
|
|
uint64_t total_out;
|
|
} XNetTrafficStats;
|
|
|
|
typedef struct Peer PeerPtr;
|
|
|
|
typedef void (*OnReceiveBuffer)(const char*, size_t, const char*, const size_t,
|
|
void*);
|
|
|
|
typedef void (*OnReceiveVideoFrame)(const XVideoFrame*, const char*,
|
|
const size_t, void*);
|
|
|
|
typedef void (*OnSignalStatus)(SignalStatus, void*);
|
|
|
|
typedef void (*OnConnectionStatus)(ConnectionStatus, const char*, const size_t,
|
|
void*);
|
|
|
|
typedef void (*NetStatusReport)(const char*, const size_t, TraversalMode,
|
|
const XNetTrafficStats*, void*);
|
|
|
|
typedef struct {
|
|
bool use_cfg_file;
|
|
const char* cfg_path;
|
|
|
|
const char* signal_server_ip;
|
|
int signal_server_port;
|
|
const char* stun_server_ip;
|
|
int stun_server_port;
|
|
const char* turn_server_ip;
|
|
int turn_server_port;
|
|
const char* turn_server_username;
|
|
const char* turn_server_password;
|
|
bool hardware_acceleration;
|
|
bool av1_encoding;
|
|
bool enable_turn;
|
|
|
|
OnReceiveBuffer on_receive_video_buffer;
|
|
OnReceiveBuffer on_receive_audio_buffer;
|
|
OnReceiveBuffer on_receive_data_buffer;
|
|
|
|
OnReceiveVideoFrame on_receive_video_frame;
|
|
|
|
OnSignalStatus on_signal_status;
|
|
OnConnectionStatus on_connection_status;
|
|
NetStatusReport net_status_report;
|
|
void* user_data;
|
|
} Params;
|
|
|
|
DLLAPI PeerPtr* CreatePeer(const Params* params);
|
|
|
|
DLLAPI void DestroyPeer(PeerPtr** peer_ptr);
|
|
|
|
DLLAPI int Init(PeerPtr* peer_ptr, const char* user_id);
|
|
|
|
DLLAPI int CreateConnection(PeerPtr* peer_ptr, const char* transmission_id,
|
|
const char* password);
|
|
|
|
DLLAPI int JoinConnection(PeerPtr* peer_ptr, const char* transmission_id,
|
|
const char* password);
|
|
|
|
DLLAPI int LeaveConnection(PeerPtr* peer_ptr, const char* transmission_id);
|
|
|
|
DLLAPI int SendVideoFrame(PeerPtr* peer_ptr, const XVideoFrame* video_frame);
|
|
|
|
DLLAPI int SendAudioFrame(PeerPtr* peer_ptr, const char* data, size_t size);
|
|
|
|
DLLAPI int SendData(PeerPtr* peer_ptr, const char* data, size_t size);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif |