void UpdateUser() { User user = new User(); if (ttclient.GetUser(userid, ref user)) { useridTextBox.Text = user.nUserID.ToString(); nicknameTextBox.Text = user.szNickname; usernameTextBox.Text = user.szUsername; statusmodeTextBox.Text = user.nStatusMode.ToString(); statusmsgTextBox.Text = user.szStatusMsg; usertypeTextBox.Text = (user.uUserType & UserType.USERTYPE_ADMIN) == UserType.USERTYPE_ADMIN ? "Admin" : "Default"; versionTextBox.Text = user.uVersion.ToString(); } UserStatistics stats = new UserStatistics(); if (ttclient.GetUserStatistics(userid, ref stats)) { audiolossTextBox.Text = String.Format("{0}/{1}", stats.nVoicePacketsLost, stats.nVoicePacketsRecv + stats.nVoicePacketsLost); videolossTextBox.Text = String.Format("{0}/{1}", stats.nVideoCaptureFramesLost, stats.nVideoCaptureFramesRecv + stats.nVideoCaptureFramesLost); } }
public void TestMediaStreamVideo() { const string USERNAME = "******", PASSWORD = "******"; string NICKNAME = "TeamTalk.NET - " + GetCurrentMethod(); const UserRight USERRIGHTS = UserRight.USERRIGHT_TRANSMIT_MEDIAFILE_AUDIO | UserRight.USERRIGHT_TRANSMIT_MEDIAFILE_VIDEO; MakeUserAccount(GetCurrentMethod(), USERNAME, PASSWORD, USERRIGHTS); TeamTalk ttclient = NewClientInstance(); InitSound(ttclient); Connect(ttclient); Login(ttclient, NICKNAME, USERNAME, PASSWORD); JoinRoot(ttclient); MediaFileInfo mf = new MediaFileInfo(); Assert.IsTrue(TeamTalk.GetMediaFileInfo(MEDIAFILE_VIDEO, ref mf), "get media file info"); Assert.IsTrue(mf.uDurationMSec > 0, "media file time"); Assert.IsTrue(mf.audioFmt.nSampleRate > 0, "sample rate"); Assert.IsTrue(mf.audioFmt.nChannels > 0, "channels"); Assert.IsTrue(mf.videoFmt.nWidth > 0, "has video"); VideoCodec vidcodec = new VideoCodec(); vidcodec.nCodec = Codec.WEBM_VP8_CODEC; vidcodec.webm_vp8.nRcTargetBitrate = 0; Assert.IsTrue(ttclient.StartStreamingMediaFileToChannel(MEDIAFILE_VIDEO, vidcodec), "start stream media file"); TTMessage msg = new TTMessage(); User user = new User(); bool video = false, audio = false; int videoframes = 0; while (ttclient.GetMessage(ref msg, 2000)) { switch (msg.nClientEvent) { case ClientEvent.CLIENTEVENT_USER_STATECHANGE: user = (User)msg.DataToObject(); audio |= user.uUserState.HasFlag(UserState.USERSTATE_MEDIAFILE_AUDIO); video |= user.uUserState.HasFlag(UserState.USERSTATE_MEDIAFILE_VIDEO); break; case ClientEvent.CLIENTEVENT_USER_MEDIAFILE_VIDEO: { Bitmap bmp; VideoFrame f = ttclient.AcquireUserMediaVideoFrame(msg.nSource, out bmp); videoframes++; Assert.IsTrue(f.nWidth > 0, "acquired video frame"); Assert.IsTrue(ttclient.ReleaseUserMediaVideoFrame(f), "release video frame"); break; } } } Assert.IsTrue(audio, "media audio playback"); Assert.IsTrue(video, "media video playback"); Assert.IsTrue(videoframes>0, "got video frames"); UserStatistics stats = new UserStatistics(); Assert.IsTrue(ttclient.GetUserStatistics(ttclient.GetMyUserID(), ref stats)); Assert.IsTrue(stats.nMediaFileAudioPacketsRecv > 0); Assert.IsTrue(stats.nMediaFileVideoFramesRecv > 0); Assert.IsTrue(stats.nMediaFileVideoPacketsRecv > 0); Assert.IsTrue(ttclient.StopStreamingMediaFileToChannel(), "stop stream"); }
/** * @brief Get statistics for data and packet reception from a user. * * @param nUserID The ID of the user to extract. * @param lpUserStatistics A preallocated #BearWare.UserStatistics struct. */ public bool GetUserStatistics(int nUserID, ref UserStatistics lpUserStatistics) { return TTDLL.TT_GetUserStatistics(m_ttInst, nUserID, ref lpUserStatistics); }
public void TestMediaStreamAudio() { const string USERNAME = "******", PASSWORD = "******"; string NICKNAME = "TeamTalk.NET - " + GetCurrentMethod(); const UserRight USERRIGHTS = UserRight.USERRIGHT_TRANSMIT_MEDIAFILE_AUDIO; MakeUserAccount(GetCurrentMethod(), USERNAME, PASSWORD, USERRIGHTS); TeamTalk ttclient = NewClientInstance(); InitSound(ttclient); Connect(ttclient); Login(ttclient, NICKNAME, USERNAME, PASSWORD); JoinRoot(ttclient); MediaFileInfo mf = new MediaFileInfo(); Assert.IsTrue(TeamTalk.GetMediaFileInfo(MEDIAFILE_AUDIO, ref mf), "get media file info"); Assert.IsTrue(mf.uDurationMSec > 0, "media file time"); Assert.IsTrue(mf.audioFmt.nSampleRate > 0, "sample rate"); Assert.IsTrue(mf.audioFmt.nChannels > 0, "channels"); VideoCodec vidcodec = new VideoCodec(); vidcodec.nCodec = Codec.NO_CODEC; Assert.IsTrue(ttclient.StartStreamingMediaFileToChannel(MEDIAFILE_AUDIO, vidcodec), "start stream media file"); TTMessage msg = new TTMessage(); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_USER_STATECHANGE, DEF_WAIT, ref msg), "wait for state change, player launch"); Assert.IsTrue(WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_USER_STATECHANGE, DEF_WAIT, ref msg), "wait for state change, playback"); User user = (User)msg.DataToObject(); Assert.IsTrue(user.uUserState.HasFlag(UserState.USERSTATE_MEDIAFILE_AUDIO), "media playback"); WaitForEvent(ttclient, ClientEvent.CLIENTEVENT_NONE, 5000); Assert.IsTrue(ttclient.SetUserAudioStreamBufferSize(ttclient.UserID, StreamType.STREAMTYPE_MEDIAFILE_AUDIO, 5000)); Assert.IsTrue(ttclient.GetUser(ttclient.UserID, ref user)); Assert.AreEqual(5000, user.nBufferMSecMediaFile); Assert.IsTrue(ttclient.StopStreamingMediaFileToChannel(), "stop stream"); UserStatistics stats = new UserStatistics(); Assert.IsTrue(ttclient.GetUserStatistics(ttclient.GetMyUserID(), ref stats)); Assert.IsTrue(stats.nMediaFileAudioPacketsRecv > 0); Assert.IsFalse(ttclient.StartStreamingMediaFileToChannel("sdfsdf", vidcodec), "start stream invalid media file"); }