| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557 |
- /*******************************************************************************
- Copyright © 2015-2022 PICO Technology Co., Ltd.All rights reserved.
- NOTICE:All information contained herein is, and remains the property of
- PICO Technology Co., Ltd. The intellectual and technical concepts
- contained herein are proprietary to PICO Technology Co., Ltd. and may be
- covered by patents, patents in process, and are protected by trade secret or
- copyright law. Dissemination of this information or reproduction of this
- material is strictly forbidden unless prior written permission is obtained from
- PICO Technology Co., Ltd.
- *******************************************************************************/
- using System;
- using System.Runtime.InteropServices;
- namespace Pico.Platform.Models
- {
- /// <summary>
- /// The binary message received in a RTC room.
- /// </summary>
- public class RtcBinaryMessageReceived
- {
- /// The message sender's user ID.
- public readonly string UserId;
- /// The binary data of the message.
- public readonly byte[] Data;
- /// The ID of the room that the message is sent to.
- public readonly string RoomId;
- public RtcBinaryMessageReceived(IntPtr o)
- {
- UserId = CLIB.ppf_RtcBinaryMessageReceived_GetUserId(o);
- var ptr = CLIB.ppf_RtcBinaryMessageReceived_GetData(o);
- var sz = CLIB.ppf_RtcBinaryMessageReceived_GetLength(o);
- Data = MarshalUtil.ByteArrayFromNative(ptr, (uint) sz);
- RoomId = CLIB.ppf_RtcBinaryMessageReceived_GetRoomId(o);
- }
- }
- /// <summary>
- /// The audio frame is several frames of RTC recorded audio.
- /// </summary>
- public class RtcAudioFrame
- {
- /// The type of the audio channel for this audio frame.
- public readonly RtcAudioChannel Channel;
- /// The data pointer of the audio frame.
- public readonly IntPtr Data;
- /// The size of the data.
- public readonly long DataSize;
- /// The sample rate of the data.
- public readonly RtcAudioSampleRate SampleRate;
- /// The timestamp.Its value is always 0. So don't use it.
- public readonly long TimeStampInUs;
- public RtcAudioFrame(IntPtr o)
- {
- Channel = CLIB.ppf_RtcAudioFrame_GetChannel(o);
- DataSize = CLIB.ppf_RtcAudioFrame_GetDataSize(o);
- SampleRate = CLIB.ppf_RtcAudioFrame_GetSampleRate(o);
- TimeStampInUs = CLIB.ppf_RtcAudioFrame_GetTimeStampInUs(o);
- Data = CLIB.ppf_RtcAudioFrame_GetData(o);
- }
- public byte[] GetData()
- {
- return MarshalUtil.ByteArrayFromNative(this.Data, (uint) this.DataSize);
- }
- public void SetData(byte[] data)
- {
- Marshal.Copy(data, 0, this.Data, (int) this.DataSize);
- }
- }
- /// <summary>
- /// The message sending result that indicates whether the message is successfully sent.
- /// </summary>
- public class RtcMessageSendResult
- {
- /// The message ID.
- public readonly long MessageId;
- /// The error code returned in the result. `200` means success.
- public readonly int Error;
- /// The ID of the room that the message is sent to.
- public readonly string RoomId;
- public RtcMessageSendResult(IntPtr o)
- {
- MessageId = CLIB.ppf_RtcMessageSendResult_GetMessageId(o);
- Error = CLIB.ppf_RtcMessageSendResult_GetError(o);
- RoomId = CLIB.ppf_RtcMessageSendResult_GetRoomId(o);
- }
- }
- /// <summary>
- /// When the remote user canceled publshing stream to the room, you will receive a notification.
- /// </summary>
- public class RtcUserUnPublishInfo
- {
- /// The ID of the remote user.
- public readonly string UserId;
- /// The stream type.
- public readonly RtcMediaStreamType MediaStreamType;
- /// The reason why the remote user canceled publishing stream.
- public readonly RtcStreamRemoveReason Reason;
- /// The ID of the room that the remote user is in.
- public readonly string RoomId;
- public RtcUserUnPublishInfo(IntPtr o)
- {
- UserId = CLIB.ppf_RtcUserUnPublishInfo_GetUserId(o);
- MediaStreamType = CLIB.ppf_RtcUserUnPublishInfo_GetMediaStreamType(o);
- Reason = CLIB.ppf_RtcUserUnPublishInfo_GetReason(o);
- RoomId = CLIB.ppf_RtcUserUnPublishInfo_GetRoomId(o);
- }
- }
- /// <summary>
- /// The publish stream info.
- /// If the remote user publishes stream, you will receive a notification.
- /// </summary>
- public class RtcUserPublishInfo
- {
- /// The ID of the remote user.
- public readonly string UserId;
- /// The stream type.
- public readonly RtcMediaStreamType MediaStreamType;
- /// The ID of the room that the remote user is in.
- public readonly string RoomId;
- public RtcUserPublishInfo(IntPtr o)
- {
- UserId = CLIB.ppf_RtcUserPublishInfo_GetUserId(o);
- MediaStreamType = CLIB.ppf_RtcUserPublishInfo_GetMediaStreamType(o);
- RoomId = CLIB.ppf_RtcUserPublishInfo_GetRoomId(o);
- }
- }
- /// <summary>
- /// The message received by a certain room.
- /// The remote users can send messages to the room and you will receive this message.
- /// </summary>
- public class RtcRoomMessageReceived
- {
- /// The ID of the message sender.
- public readonly string UserId;
- /// The message.
- public readonly string Message;
- /// The ID of the room that the message was sent to.
- public readonly string RoomId;
- public RtcRoomMessageReceived(IntPtr o)
- {
- UserId = CLIB.ppf_RtcRoomMessageReceived_GetUserId(o);
- Message = CLIB.ppf_RtcRoomMessageReceived_GetMessage(o);
- RoomId = CLIB.ppf_RtcRoomMessageReceived_GetRoomId(o);
- }
- }
- /// <summary>
- /// The message sent to you by a certain user. You will receive a notification.
- /// </summary>
- public class RtcUserMessageReceived
- {
- /// The ID of the message sender.
- public readonly string UserId;
- /// The message.
- public readonly string Message;
- /// The ID of the room that the message sender and recipient are in.
- public readonly string RoomId;
- public RtcUserMessageReceived(IntPtr o)
- {
- UserId = CLIB.ppf_RtcUserMessageReceived_GetUserId(o);
- Message = CLIB.ppf_RtcUserMessageReceived_GetMessage(o);
- RoomId = CLIB.ppf_RtcUserMessageReceived_GetRoomId(o);
- }
- }
- /// <summary>
- /// The stream sync info sent to your room. You will receive a notification,
- /// </summary>
- public class RtcStreamSyncInfo
- {
- /// The key of the stream.
- public readonly RtcRemoteStreamKey StreamKey;
- /// The type of the stream.
- public readonly RtcSyncInfoStreamType StreamType;
- /// The stream sync info
- public readonly byte[] Data;
- public RtcStreamSyncInfo(IntPtr o)
- {
- StreamKey = new RtcRemoteStreamKey(CLIB.ppf_RtcStreamSyncInfo_GetStreamKey(o));
- StreamType = CLIB.ppf_RtcStreamSyncInfo_GetStreamType(o);
- var ptr = CLIB.ppf_RtcStreamSyncInfo_GetData(o);
- var sz = CLIB.ppf_RtcStreamSyncInfo_GetLength(o);
- Data = MarshalUtil.ByteArrayFromNative(ptr, (uint) sz);
- }
- }
- /// <summary>
- /// If you enable audio properties report, you will periodically receive audio property info.
- /// </summary>
- public class RtcAudioPropertyInfo
- {
- /// The volume detected. It's a value between `0` and `255`.
- public readonly int Volume;
- public RtcAudioPropertyInfo(IntPtr o)
- {
- Volume = CLIB.ppf_RtcAudioPropertyInfo_GetVolume(o);
- }
- }
- /// <summary>
- /// You will receive this message after you call \ref RtcService.JoinRoom.
- /// </summary>
- public class RtcJoinRoomResult
- {
- /// The ID of the room that the user joined.
- public readonly string RoomId;
- /// The ID of the user.
- public readonly string UserId;
- /// The error code. `0` indicates success.
- public readonly int ErrorCode;
- /// The time from calling \ref RtcService.JoinRoom to receiving the result.
- public readonly int Elapsed;
- /// Whether it is the first time that the user has joined the room or if the user is reconnected to the room.
- public readonly RtcJoinRoomType JoinType;
- public RtcJoinRoomResult(IntPtr o)
- {
- RoomId = CLIB.ppf_RtcJoinRoomResult_GetRoomId(o);
- UserId = CLIB.ppf_RtcJoinRoomResult_GetUserId(o);
- ErrorCode = CLIB.ppf_RtcJoinRoomResult_GetErrorCode(o);
- Elapsed = CLIB.ppf_RtcJoinRoomResult_GetElapsed(o);
- JoinType = CLIB.ppf_RtcJoinRoomResult_GetJoinType(o);
- }
- }
- /// <summary>
- /// You will receive this message after you call \ref RtcService.LeaveRoom.
- /// </summary>
- public class RtcLeaveRoomResult
- {
- /// The ID of the room that the user left.
- public readonly string RoomId;
- public RtcLeaveRoomResult(IntPtr o)
- {
- RoomId = CLIB.ppf_RtcLeaveRoomResult_GetRoomId(o);
- }
- }
- /// <summary>
- /// The local audio properties info.
- /// You will periodically receive this message after you
- /// call \ref RtcService.EnableAudioPropertiesReport.
- /// </summary>
- public class RtcLocalAudioPropertiesInfo
- {
- /// The stream index info.
- public readonly RtcStreamIndex StreamIndex;
- /// The audio property details.
- public readonly RtcAudioPropertyInfo AudioPropertyInfo;
- public RtcLocalAudioPropertiesInfo(IntPtr o)
- {
- StreamIndex = CLIB.ppf_RtcLocalAudioPropertiesInfo_GetStreamIndex(o);
- AudioPropertyInfo = new RtcAudioPropertyInfo(CLIB.ppf_RtcLocalAudioPropertiesInfo_GetAudioPropertyInfo(o));
- }
- }
- /// <summary>
- /// The local audio properties report.
- /// You will periodically receive this message after you
- /// call \ref RtcService.EnableAudioPropertiesReport.
- /// </summary>
- public class RtcLocalAudioPropertiesReport
- {
- public readonly RtcLocalAudioPropertiesInfo[] AudioPropertiesInfos;
- public RtcLocalAudioPropertiesReport(IntPtr o)
- {
- ulong total = (ulong) CLIB.ppf_RtcLocalAudioPropertiesReport_GetAudioPropertiesInfosSize(o);
- AudioPropertiesInfos = new RtcLocalAudioPropertiesInfo[total];
- for (uint i = 0; i < total; i++)
- {
- AudioPropertiesInfos[i] = new RtcLocalAudioPropertiesInfo(CLIB.ppf_RtcLocalAudioPropertiesReport_GetAudioPropertiesInfos(o, (UIntPtr) i));
- }
- }
- }
- /// <summary>
- /// The media device change info.
- /// RTC engine will send this message if media device change is detected.
- /// </summary>
- public class RtcMediaDeviceChangeInfo
- {
- /// <summary>
- /// Device ID.
- /// </summary>
- public readonly string DeviceId;
- /// <summary>
- /// Device type.
- /// </summary>
- public readonly RtcMediaDeviceType DeviceType;
- /// <summary>
- /// Device state.
- /// </summary>
- public readonly RtcMediaDeviceState DeviceState;
- /// <summary>
- /// Device error.
- /// </summary>
- public readonly RtcMediaDeviceError DeviceError;
- public RtcMediaDeviceChangeInfo(IntPtr o)
- {
- DeviceId = CLIB.ppf_RtcMediaDeviceChangeInfo_GetDeviceId(o);
- DeviceType = CLIB.ppf_RtcMediaDeviceChangeInfo_GetDeviceType(o);
- DeviceState = CLIB.ppf_RtcMediaDeviceChangeInfo_GetDeviceState(o);
- DeviceError = CLIB.ppf_RtcMediaDeviceChangeInfo_GetDeviceError(o);
- }
- }
- /// <summary>
- /// You will receive this notification if the remote user call \ref RtcService.MuteLocalAudio.
- /// </summary>
- public class RtcMuteInfo
- {
- /// The ID of the remote user who muted audio.
- public readonly string UserId;
- /// The state of audio muting: muted or canceled.
- public readonly RtcMuteState MuteState;
- public RtcMuteInfo(IntPtr o)
- {
- UserId = CLIB.ppf_RtcMuteInfo_GetUserId(o);
- MuteState = CLIB.ppf_RtcMuteInfo_GetMuteState(o);
- }
- }
- /// <summary>
- /// The remote audio properties info.
- /// You can check who is speaking by this method.
- /// </summary>
- public class RtcRemoteAudioPropertiesInfo
- {
- public readonly RtcRemoteStreamKey StreamKey;
- public readonly RtcAudioPropertyInfo AudioPropertiesInfo;
- public RtcRemoteAudioPropertiesInfo(IntPtr o)
- {
- StreamKey = new RtcRemoteStreamKey(CLIB.ppf_RtcRemoteAudioPropertiesInfo_GetStreamKey(o));
- AudioPropertiesInfo = new RtcAudioPropertyInfo(CLIB.ppf_RtcRemoteAudioPropertiesInfo_GetAudioPropertiesInfo(o));
- }
- }
- /// <summary>
- /// You will receive remote user's audio info if you call \ref RtcService.EnableAudioPropertiesReport.
- /// </summary>
- public class RtcRemoteAudioPropertiesReport
- {
- public readonly RtcRemoteAudioPropertiesInfo[] AudioPropertiesInfos;
- /// The total volume of remote users in the room.
- public readonly int TotalRemoteVolume;
- public RtcRemoteAudioPropertiesReport(IntPtr o)
- {
- AudioPropertiesInfos = new RtcRemoteAudioPropertiesInfo[(int) CLIB.ppf_RtcRemoteAudioPropertiesReport_GetAudioPropertiesInfosSize(o)];
- for (uint i = 0; i < AudioPropertiesInfos.Length; i++)
- {
- AudioPropertiesInfos[i] = new RtcRemoteAudioPropertiesInfo(CLIB.ppf_RtcRemoteAudioPropertiesReport_GetAudioPropertiesInfos(o, (UIntPtr) i));
- }
- TotalRemoteVolume = CLIB.ppf_RtcRemoteAudioPropertiesReport_GetTotalRemoteVolume(o);
- }
- }
- /// <summary>
- /// RtcRemoteStreamKey indicates the stream index of a remote user.
- /// </summary>
- public class RtcRemoteStreamKey
- {
- /// The ID of the room that the remote user is in.
- public readonly string RoomId;
- /// The ID of the remote user.
- public readonly string UserId;
- /// Indicates whether the stream is main stream or screen stream.
- public readonly RtcStreamIndex RtcStreamIndex;
- public RtcRemoteStreamKey(IntPtr o)
- {
- RoomId = CLIB.ppf_RtcRemoteStreamKey_GetRoomId(o);
- UserId = CLIB.ppf_RtcRemoteStreamKey_GetUserId(o);
- RtcStreamIndex = CLIB.ppf_RtcRemoteStreamKey_GetStreamIndex(o);
- }
- }
- /// <summary>
- /// You will receive an error code when an error occurred in the room.
- /// </summary>
- public class RtcRoomError
- {
- /// The error code.
- public readonly int Code;
- /// The ID of the room where the error occurred.
- public readonly string RoomId;
- public RtcRoomError(IntPtr o)
- {
- Code = CLIB.ppf_RtcRoomError_GetCode(o);
- RoomId = CLIB.ppf_RtcRoomError_GetRoomId(o);
- }
- }
- /// <summary>
- /// You will periodically receive this message after you successfully join a room.
- /// </summary>
- public class RtcRoomStats
- {
- /// The time elapsed since you joined the room .
- public readonly int TotalDuration;
- /// The number of users in the room.
- public readonly int UserCount;
- /// The ID of the room you joined.
- public readonly string RoomId;
- public RtcRoomStats(IntPtr o)
- {
- TotalDuration = CLIB.ppf_RtcRoomStats_GetTotalDuration(o);
- UserCount = CLIB.ppf_RtcRoomStats_GetUserCount(o);
- RoomId = CLIB.ppf_RtcRoomStats_GetRoomId(o);
- }
- }
- /// <summary>
- /// The warning info of the room.
- /// </summary>
- public class RtcRoomWarn
- {
- /// The error code.
- public readonly int Code;
- /// The ID of the room that the warning info comes from.
- public readonly string RoomId;
- public RtcRoomWarn(IntPtr o)
- {
- Code = CLIB.ppf_RtcRoomWarn_GetCode(o);
- RoomId = CLIB.ppf_RtcRoomWarn_GetRoomId(o);
- }
- }
- /// <summary>
- /// You will receive this message after a remote user joins the room.
- /// </summary>
- public class RtcUserJoinInfo
- {
- /// The ID of the user.
- public readonly string UserId;
- /// If the remote user set the `UserExtra` field when calling \ref RtcService.JoinRoom with extra info.
- public readonly string UserExtra;
- /// The time used for the remote user to join the room.
- public readonly int Elapsed;
- /// The ID of the room that the remote user joined.
- public readonly string RoomId;
- public RtcUserJoinInfo(IntPtr o)
- {
- UserId = CLIB.ppf_RtcUserJoinInfo_GetUserId(o);
- UserExtra = CLIB.ppf_RtcUserJoinInfo_GetUserExtra(o);
- Elapsed = CLIB.ppf_RtcUserJoinInfo_GetElapsed(o);
- RoomId = CLIB.ppf_RtcUserJoinInfo_GetRoomId(o);
- }
- }
- /// <summary>
- /// You will receive this message when the remote user leaves the room.
- /// </summary>
- public class RtcUserLeaveInfo
- {
- /// The ID of the user.
- public readonly string UserId;
- /// The reason why the user left the room, which can be network error or proactive quit.
- public readonly RtcUserLeaveReasonType OfflineReason;
- /// The ID of the room that the user left.
- public readonly string RoomId;
- public RtcUserLeaveInfo(IntPtr o)
- {
- UserId = CLIB.ppf_RtcUserLeaveInfo_GetUserId(o);
- OfflineReason = CLIB.ppf_RtcUserLeaveInfo_GetOfflineReason(o);
- RoomId = CLIB.ppf_RtcUserLeaveInfo_GetRoomId(o);
- }
- }
- }
|