Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DeserializeAudioMediaBuffer" /> class.

        /// </summary>
        /// <param name="serialized">The serialized.</param>
        public DeserializeAudioMediaBuffer(SerializableAudioMediaBuffer serialized)
        {
            this.ActiveSpeakers = serialized.ActiveSpeakers;
            this.Length         = serialized.Length;
            this.IsSilence      = serialized.IsSilence;
            this.Timestamp      = serialized.Timestamp;

            if (serialized.Buffer != null)
            {
                IntPtr mixedBuffer = Marshal.AllocHGlobal(serialized.Buffer.Length);
                Marshal.Copy(serialized.Buffer, 0, mixedBuffer, serialized.Buffer.Length);

                this.Data   = mixedBuffer;
                this.Length = serialized.Buffer.Length;
            }

            if (serialized.SerializableUnmixedAudioBuffers != null)
            {
                this.UnmixedAudioBuffers = new UnmixedAudioBuffer[serialized.SerializableUnmixedAudioBuffers.Length];

                var count = 0;
                foreach (var i in serialized.SerializableUnmixedAudioBuffers)
                {
                    if (i.Buffer.Length > 0)
                    {
                        IntPtr bufferData = Marshal.AllocHGlobal(i.Buffer.Length);
                        Marshal.Copy(i.Buffer, 0, bufferData, i.Buffer.Length);

                        this.UnmixedAudioBuffers[count].Data(bufferData);

                        this.UnmixedAudioBuffers[count].ActiveSpeakerId(i.ActiveSpeakerId);
                        this.UnmixedAudioBuffers[count].OriginalSenderTimestamp(i.OriginalSenderTimestamp);
                        this.UnmixedAudioBuffers[count].Length(i.Buffer.Length);
                    }

                    count++;
                }
            }
        }
        /// <summary>
        /// Gets the participant.
        /// </summary>
        /// <param name="serialized">The serialized.</param>
        /// <returns>List&lt;IParticipant&gt;.</returns>
        public List <IParticipant> GetParticipant(SerializableAudioMediaBuffer serialized)
        {
            var list = new List <IParticipant>();

            if (serialized.SerializableUnmixedAudioBuffers != null)
            {
                foreach (var i in serialized.SerializableUnmixedAudioBuffers)
                {
                    var participant = new Participant();
                    var info        = new ParticipantInfo();
                    var identity    = new IdentitySet();
                    var user        = new Identity();

                    user.DisplayName    = i.DisplayName;
                    user.AdditionalData = i.AdditionalData;
                    user.Id             = i.AdId;

                    identity.User    = user;
                    info.Identity    = identity;
                    participant.Info = info;

                    var media = new Microsoft.Graph.MediaStream()
                    {
                        SourceId = i.ActiveSpeakerId.ToString()
                    };
                    participant.MediaStreams = new List <Microsoft.Graph.MediaStream>()
                    {
                        media
                    };

                    participant.IsInLobby = false;

                    list.Add(new ParticipantExtension(participant));
                }
            }

            return(list);
        }
 /// <summary>
 /// Saves the audio media buffer.
 /// </summary>
 /// <param name="data">The data.</param>
 private async Task _saveAudioMediaBuffer(SerializableAudioMediaBuffer data)
 {
     await saveBsonFile(data, data.Timestamp.ToString());
 }