1XB%8y$*)Ohp>Tg%Ppx=Yw<4lfqn?_x~1!lxPlm%|W z!YypH%J+i(oo{?1KkCfqd90^)<##fk@Lbpk^^s@L;FF0vjjx-qd+Zxv^!kM_hTMk4C^cW@JkC#il@nxW~?#Z^%H;D}$ z-=@jJr5 3o49nE7>}xf%U>{r*l$L;Q76d=tjP3rX!%?Z458JC`JB zv8umcOOix;SogR3bfR7@ZX~9|r>E_Oo*d}@Yken ;sp5Tjv#+J{a-pKwfh 3Eu3rC*3p>HQ$|j8-|;Te@eN9luk)&geOO56{5;CTN*cNsmi 2JY5?JUH7h?uJvF+UdcP!58l A#ZkSeI46!zDus<@9Erl(+Khe&EkWrad#{Lg1IT^{dTjll9Mx z&FsSrUVUO-INd5iDC?WUb8fZ!N!>XXp~X-CdoiH-8pKv_Yoi0sn?JfGO^Q*IOQw1? z4+1&kVUK^M(NYtvIb{l72{+5kdaGsWl&y;GYK%8UZ-bFfb2W^ru<{s@TY*Ow?_{R$*qnPSztVN;=_nppE#uu z@>p5qU~-N))IarsRSK&O8?-v*$aP|4u=3a#SIj~Z&lBeyEAz@oT$Ah^uReG)4ptk6 z+hL}2Y;xEBFf>^0*eqot)fB5fu>n>aHnx($EX=1A3;*07Hf30CSP?sVg-2bVz^p&4 z^03;lTNifdy2ba`tMSdS+AzdswsWvQ{x!jB!w;)M6%QG}>y~dGRugu%f_Gn|f!YJs zn{ycU!@YJ`O&H?cnC5v7HOIkzFl>X>h95boX4&>Te(SLEm=TX1D2IoodmyR)Uh-wm zA_w*;v3z}St{qk$KbzsqBWboQeOkUISZ(-4UCWJ&ekGfSmB-HgU7xj@u6;1V$=sFO|aTAv$?(*w>~ke!^-34Yb?jXS0f)&<(GZ$1GhS?aX8`6B1tOI z>Ui~wQwnPwUaV-@n!*0H |GgI{E4u-SkS$ zJ9Po?vb?n#0HWH5;;zlaQI~nvenV3Ed~3RvJX7nTTt}Gi!KLD`@KM$Tc_4nT3itEk z520$}t$KeUIZ!iU>&^aT{z_zCr-@bN{K$pIYEL {|_a#d+=h-X#>v#n38HcTQ%lZi<) zhm~d9un*g!7wM*abBQ|rsdn8D)jF5Ms0|<1M$BU6FpBbvpYoFAY0FeN_LEAlt`*+b zRb?1!4bkS;s>-E)hgFC1FXNfx7U#)yRjS&HQ=ZBVtMIi(A@x<0!uEd4IG`==>rARO z>w Va>wzKS~As5Gzb>s2%dFlA?R&Vwp*XOyd zq(%^LWLZ~Ry)IXP&L~Ett{FRg8f+ofl^QgQ)ydhhI>`!-`CV>nsYLrs+BdJiRBL?} zYD?zz8ToaAPkpS_*S^YPK-DUCmbJAi4#1<51uUo>%VS}cuk3iBy3KKmSL(lKgC7Rv zwz6kcwN-dCTES(<=!Lj-uC`X&_C)@zRe@9ELtoS~QB`JD0~>-#U8mnAlVx>p57a8H z!YkL>Q7uHR*ka%?wMf*qKx@k5%TY(Zn0PE5KeNL9hox^ZRO;LfR5sB!zRK`G+KUfZ zmEr?wZ=TKtaTe`$ec^Mt8tN)g88vlXU6ADF0~|CJDfS67udmQ)wNS1(-C?dt-(Sc_ zZ07QsECeg^Rc&&Lp_{tL#S#5zZ`m)x>JaPMz9Dw>a)(vfxKf)|5tVC-a<$i1#m63F zMhy^&FRril8jPvYVjm`1H^#fwYS*i>!8gUm+Hsfs$evzlGzsoq>$s7&*P%DnaJ&5* zKS!kF%5%6@jYaJz+HBf|t?E7l)O%--xK+cTGiLRgA&eiXC#r9M6KV+O t%1>sfZj!2kCMr1R6&^y_x89L>_dOz)|FEy#bs zD%T<8<;-2OTkHuTW4xo6dq-X5etq@{yvVbYGitL!U2RHkZ-`med{(ea#XdOih@0dJ zZ2x-X?5rfj?BR2@%_Z2GS+&N?!asGX7|nK{Tr=5y_SMIlersVqnA>RlG_q{SwVUqd zW<|4+G3Q;@6zIWH-qR~m)zxqQTy~5-WOeKLxoE+r)%nN{2-9=3sm{@^u!r)u%HEby zY_$t@xJD_J^~e!#fDwlrQ(kw`7vybwm)SW`=Pz@T?IiG>9@nWYc}tO2a$IgsV6TAr z`l+{IyTh#aIEE+NH}*r?hTOif$$gF$>35g7Fmjub#e9wTiMHppyj#?St_@|MSm82A z#Bbzbh!?#&i1=w)8R-kXz@D*baiCiw_>Z^zAVh}j0E-s78vETF?NPcD>;$x+!`=O> zE)jl8%i=Y0@hJGW>>x>@^~t%r0dwq)*%|iTz(1@_eyqlLqpSaBIyO-MKgJ% md zqg!z=Fce1{!K}lYTt9n2Cm+l8Im+rz)0K9{>+KM$+6;9$U9UshmzLoJRAJeu>K9h@ zE344%C6w75Xmf5}8`-%@6~67=?52^-8McddUS3AOvq!p89PL&;zP)aZ>t?&De5I1k zsw2z1#bOV`?)oixQ{<3X9ebvAVbA1k=?*?7t9Z~K_s#k*R+Y!zEZ?z|j>^=tOz&5% zJ(|ed +=hJrfq^;e5B4)kS{TMb6(NBYr&62p?t45SEwA;gBDvL@PtR?2N8% FZLHNwz(VzQP t?Vzmv z_!();1Fmkznz9AyX=&cJYhJiJT!-YgoBaV-+il8D@04DLV0DI*^>6D&JdxXNiZ_u$ zC|f6o=e)~jCcAU09SXmW&x>`3>ePI=@`+K<^^T#Y7^k~T+BKm(yI++imw)?+@Yu^+ zw_{kIVXlf{gcUzE*ZF*?CvY9g>*9ngJNXLhl+IJ;L)(5@R>@e?PiyDPzmQoWhA 7EI)R}&h(HX8H2`A9AI3MIq> zT$lB?T Uq+QS)fi@MWYohvdZep_if z5LMRtcMbUDAv#yA0y>^DZX<+D1$ZsJUz?0|nPluZn=4O!JGAmRbSU%MReNjnp6}Ez zGUZ&lv%rPZ8t2;ZpVM>S1}>-i;Q0HsET=8C|0>Xr#NH}4N6WraG-oRg@GO ^Y|Y=s{c>IIETG{rq<|b*E76L4( +6U34+o6d<_dQ|E7kF-p5JUU^<-yeV_i(6`adzd3BTOg*ly(_KG %qRgO7E@f2%6@7nM(4)t}~wP6uYt - - diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCall.vcxproj.filters b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCall.vcxproj.filters deleted file mode 100644 index c334e18d..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCall.vcxproj.filters +++ /dev/null @@ -1,441 +0,0 @@ - -- -- -Debug -Win32 -- -Debug -x64 -- -Release -Win32 -- -Release -x64 -- -{26AF88DC-1933-4A1B-9991-21DF11DCE388} -AgoraVideoCall -MFCProj -- - -Application -true -v120_xp -Unicode -Static -- -Application -true -v120 -Unicode -Static -- -Application -false -v120_xp -true -Unicode -Static -- -Application -false -v120_xp -true -Unicode -Static -- - -- -- - -- - -- - -- - - -true -$(VC_IncludePath);$(WindowsSDK_IncludePath);../../../sdk/include;../sdk/include;../../sdk/include -$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);../../../sdk/lib;../sdk/lib;../../sdk/lib -- -true -$(VC_IncludePath);$(WindowsSDK_IncludePath);../../../sdk/include;../sdk/include;../../sdk/include -$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);../../../sdk/lib;../sdk/lib;../../sdk/lib -$(SolutionDir)\$(Configuration)\ -$(Configuration)\ -- -false -$(VC_ExecutablePath_x86);$(WindowsSdk_71A_ExecutablePath);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH); -- $(VC_IncludePath);$(WindowsSdk_71A_IncludePath);$(MSBuild_ExecutablePath);$(VC_LibraryPath_x86); -$(VC_IncludePath);$(WindowsSdk_71A_IncludePath);../../../sdk/include;../sdk/include;../../sdk/include -$(VC_LibraryPath_x86);$(WindowsSdk_71A_LibraryPath_x86);../../../sdk/lib;../sdk/lib;../../sdk/lib -- -false -$(VC_IncludePath);$(WindowsSdk_71A_IncludePath);../../../sdk/include;../sdk/include;../../sdk/include -$(VC_LibraryPath_x64);$(WindowsSdk_71A_LibraryPath_x64);../../../sdk/lib;../sdk/lib;../../sdk/lib -$(SolutionDir)\$(Configuration)\ -$(Configuration)\ -- -- - -Use -Level3 -Disabled -WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) -true -Windows -true - -- -false -true -_DEBUG;%(PreprocessorDefinitions) -- -0x0409 -_DEBUG;%(PreprocessorDefinitions) -$(IntDir);%(AdditionalIncludeDirectories) -- -if exist ..\sdk (copy ..\sdk\dll\*.dll ..\Debug\) else if exist ..\..\..\sdk (copy ..\..\..\sdk\dll\*.dll ..\Debug\) -- -- - -Use -Level3 -Disabled -WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) -true -Windows -true - -- -false -_DEBUG;%(PreprocessorDefinitions) -- -0x0409 -_DEBUG;%(PreprocessorDefinitions) -$(IntDir);%(AdditionalIncludeDirectories) -- -if exist ..\sdk (copy ..\sdk\dll\*.dll ..\Debug\) else if exist ..\..\..\sdk (copy ..\..\..\sdk\dll\*.dll ..\Debug\) -- -- - -Level3 -Use -MaxSpeed -true -true -WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) -true -Windows -true -true -true - -- -false -true -NDEBUG;%(PreprocessorDefinitions) -- -0x0409 -NDEBUG;%(PreprocessorDefinitions) -$(IntDir);%(AdditionalIncludeDirectories) -- -if exist ..\sdk (copy ..\sdk\dll\*.dll ..\Release\) else if exist ..\..\..\sdk (copy ..\..\..\sdk\dll\*.dll ..\Release\) -- -- - -Level3 -Use -MaxSpeed -true -true -WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) -true -Windows -true -true -true - -- -false -NDEBUG;%(PreprocessorDefinitions) -- -0x0409 -NDEBUG;%(PreprocessorDefinitions) -$(IntDir);%(AdditionalIncludeDirectories) -- -if exist ..\sdk (copy ..\sdk\dll\*.dll ..\Release\) else if exist ..\..\..\sdk (copy ..\..\..\sdk\dll\*.dll ..\Release\) -- -- - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - -Create -Create -Create -Create -- - - -- - -- - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - -- -{898289d0-0d57-4b8e-97ae-013114f85de9} -- -{de1d9363-5455-4448-8d69-d22be47f5a82} -- - -- -- -- - \ No newline at end of file diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCall.vcxproj.user b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCall.vcxproj.user deleted file mode 100644 index ef5ff2a1..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCall.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - -- -- -{037bfcf0-7fcd-4fbe-b0a1-0bbdbe0866d4} -- -{dd6bd31f-57a0-4970-9870-4cbe6ead6530} -- -{22427098-c248-4e25-8c81-dd62508cf969} -- -{f8fa6769-043b-462c-8c2f-587906eee318} -- -{0f1c5e51-801f-4f53-a0af-3cec416b9702} -- -{2c600536-0ba8-4ae7-af61-78ffa247aed6} -- -{3d18d002-94ff-47be-ac37-9421b990e85a} -- -{075d76ad-44ba-49b2-8b94-0d123ad2bbb8} -- -{72981e3b-6e49-43b0-b4e1-fdeb7568d012} -- -{6c1a4b26-8ded-4c5d-a541-a9ed38a22ee8} -- -{67DA6AB6-F800-4c08-8B7A-83BB121AAD01} -rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms -- -- - -- -Headers -- -Headers -- -Headers -- -UI\Language -- -UI\Ctrl -- -UI\Ctrl -- -UI\Ctrl -- -UI\Dialog -- -UI\Dialog -- -Headers -- -UI\Dialog -- -UI\Ctrl -- -UI\Ctrl -- -UI\Dialog -- -AgoraObject -- -UI\Dialog -- -AgoraObject -- -AgoraObject -- -AgoraObject -- -AgoraObject -- -AgoraObject -- -AgoraObject\Config -- -UI\Wnd -- -UI\Wnd -- -UI\Dialog -- -UI\Ctrl -- -UI\Dialog -- -AgoraObject\Filter -- -App -- -UI\Dialog -- -UI\Dialog -- -UI\Dialog -- -- -Headers -- -UI\Language -- -UI\Ctrl -- -UI\Ctrl -- -UI\Ctrl -- -UI\Dialog -- -UI\Dialog -- -UI\Dialog -- -UI\Ctrl -- -UI\Ctrl -- -UI\Dialog -- -AgoraObject -- -AgoraObject -- -UI\Dialog -- -AgoraObject -- -AgoraObject -- -AgoraObject -- -AgoraObject -- -AgoraObject\Config -- -UI\Wnd -- -UI\Wnd -- -UI\Dialog -- -UI\Ctrl -- -UI\Dialog -- -AgoraObject\Filter -- -App -- -UI\Dialog -- -UI\Dialog -- -UI\Dialog -- -- -Resources -- -- -Resources -- -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -Resources -- -- -Resources -- \ No newline at end of file diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCallDlg.cpp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCallDlg.cpp deleted file mode 100644 index 177dfd67..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCallDlg.cpp +++ /dev/null @@ -1,362 +0,0 @@ - -// AgoraVideoCallDlg.cpp : implementation file -// - -#include "stdafx.h" -#include "OpenVideoCall.h" -#include "OpenVideoCallDlg.h" -#include "afxdialogex.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#endif - - -// CAgoraVideoCallDlg dialog - - - -COpenVideoCallDlg::COpenVideoCallDlg(CWnd* pParent /*=NULL*/) - : CDialogEx(COpenVideoCallDlg::IDD, pParent) -{ - m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); - m_nVideoSolution = 0; - - m_lpAgoraObject = NULL; - m_lpRtcEngine = NULL; - - m_nLastmileQuality = 0; -} - -void COpenVideoCallDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialogEx::DoDataExchange(pDX); - DDX_Control(pDX, IDC_BTNMIN, m_btnMin); - DDX_Control(pDX, IDC_BTNCLOSE, m_btnClose); - - DDX_Control(pDX, IDC_LINKAGORA, m_linkAgora); -} - -BEGIN_MESSAGE_MAP(COpenVideoCallDlg, CDialogEx) - ON_WM_SYSCOMMAND() - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - ON_WM_NCHITTEST() - ON_MESSAGE(WM_GOBACK, &COpenVideoCallDlg::OnBackPage) - ON_MESSAGE(WM_GONEXT, &COpenVideoCallDlg::OnNextPage) - ON_MESSAGE(WM_JOINCHANNEL, &COpenVideoCallDlg::OnJoinChannel) - ON_MESSAGE(WM_LEAVECHANNEL, &COpenVideoCallDlg::OnLeaveChannel) - - ON_BN_CLICKED(IDC_BTNMIN, &COpenVideoCallDlg::OnBnClickedBtnmin) - ON_BN_CLICKED(IDC_BTNCLOSE, &COpenVideoCallDlg::OnBnClickedBtnclose) - - ON_MESSAGE(WM_MSGID(EID_LASTMILE_QUALITY), &COpenVideoCallDlg::OnLastmileQuality) - -END_MESSAGE_MAP() - - -// CAgoraVideoCallDlg message handlers -BOOL COpenVideoCallDlg::PreTranslateMessage(MSG* pMsg) -{ - if (pMsg->message == WM_KEYDOWN){ - switch (pMsg->wParam){ - case VK_ESCAPE: - case VK_RETURN: - return FALSE; - } - } - - return CDialogEx::PreTranslateMessage(pMsg); -} - -BOOL COpenVideoCallDlg::OnInitDialog() -{ - CDialogEx::OnInitDialog(); - - // Add "About..." menu item to system menu. - - // IDM_ABOUTBOX must be in the system command range. - ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); - ASSERT(IDM_ABOUTBOX < 0xF000); - - CMenu* pSysMenu = GetSystemMenu(FALSE); - if (pSysMenu != NULL) - { - BOOL bNameValid; - CString strAboutMenu; - bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); - ASSERT(bNameValid); - if (!strAboutMenu.IsEmpty()) - { - pSysMenu->AppendMenu(MF_SEPARATOR); - pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); - } - } - - // Set the icon for this dialog. The framework does this automatically - // when the application's main window is not a dialog - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon - - // TODO: Add extra initialization here - m_ftTitle.CreateFont(16, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); - m_ftLink.CreateFont(16, 0, 0, 0, FW_NORMAL, FALSE, TRUE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); - m_ftDes.CreateFont(15, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); - m_ftPhone.CreateFont(15, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); - - CString strAppID = CAgoraObject::LoadAppID(); - - if (_tcslen(strAppID) == 0) { - MessageBox(_T("Please define your own APP_ID in source code"), _T("information"), MB_OK | MB_ICONINFORMATION); - ::PostQuitMessage(0); - } - - m_lpAgoraObject = CAgoraObject::GetAgoraObject(strAppID); - m_lpRtcEngine = CAgoraObject::GetEngine(); - m_lpAgoraObject->EnableVideo(TRUE); - m_lpAgoraObject->SetLogFilePath(NULL); - m_lpAgoraObject->EnableNetworkTest(TRUE); - m_lpAgoraObject->SetMsgHandlerWnd(GetSafeHwnd()); - - SetBackgroundColor(RGB(0xFF, 0xFF, 0xFF)); - InitCtrls(); - InitChildDialog(); - - return TRUE; // return TRUE unless you set the focus to a control -} - -void COpenVideoCallDlg::InitCtrls() -{ - CRect ClientRect; - CBitmap bmpNetQuality; - - MoveWindow(0, 0, 720, 600, 1); - GetClientRect(&ClientRect); - - bmpNetQuality.LoadBitmap(IDB_NETWORK_QUALITY); - - m_imgNetQuality.Create(32, 32, ILC_COLOR24 | ILC_MASK, 6, 1); - m_imgNetQuality.Add(&bmpNetQuality, RGB(0xFF, 0, 0xFF)); - - m_btnMin.MoveWindow(ClientRect.Width() - 46, 1, 22, 22, TRUE); - m_btnClose.MoveWindow(ClientRect.Width() - 23, 1, 22, 22, TRUE); - m_linkAgora.MoveWindow(ClientRect.Width() / 2 - 110, ClientRect.Height()-55, 80, 20, TRUE); - - m_btnMin.SetBackImage(IDB_BTNMIN, RGB(0xFF, 0, 0xFF)); - m_btnClose.SetBackImage(IDB_BTNCLOSE, RGB(0xFF, 0, 0xFF)); - - m_linkAgora.SetFont(&m_ftLink); - m_linkAgora.SetURL(_T("http://www.agora.io")); - m_linkAgora.SetWindowText(LANG_STR("IDS_LOGO_AGORAWEB")); - CMFCButton::EnableWindowsTheming(FALSE); -} - -void COpenVideoCallDlg::InitChildDialog() -{ - CString str; - - m_dlgEnterChannel.Create(CEnterChannelDlg::IDD, this); - m_dlgSetup.Create(CSetupDlg::IDD, this); - m_dlgVideo.Create(CVideoDlg::IDD, this); - - m_dlgEnterChannel.MoveWindow(110, 70, 500, 450, TRUE); - m_dlgSetup.MoveWindow(110, 70, 500, 450, TRUE); - - m_dlgEnterChannel.ShowWindow(SW_SHOW); - m_lpCurDialog = &m_dlgEnterChannel; - - m_dlgEnterChannel.SetVideoString(m_dlgSetup.GetVideoSolutionDes()); - -// str.Format(_T("%d*%d,%dfps,%dKbps"), m_nVideoWidth, m_nVideoHeight, m_nFrameRate, m_nMaxRate); -// m_dlgEnterChannel.SetVideoString(str); -} - -void COpenVideoCallDlg::OnSysCommand(UINT nID, LPARAM lParam) -{ - CDialogEx::OnSysCommand(nID, lParam); -} - -// If you add a minimize button to your dialog, you will need the code below -// to draw the icon. For MFC applications using the document/view model, -// this is automatically done for you by the framework. - -void COpenVideoCallDlg::OnPaint() -{ - CPaintDC dc(this); // device context for painting - - if (IsIconic()) - { - SendMessage(WM_ICONERASEBKGND, reinterpret_cast- (dc.GetSafeHdc()), 0); - - // Center icon in client rectangle - int cxIcon = GetSystemMetrics(SM_CXICON); - int cyIcon = GetSystemMetrics(SM_CYICON); - CRect rect; - GetClientRect(&rect); - int x = (rect.Width() - cxIcon + 1) / 2; - int y = (rect.Height() - cyIcon + 1) / 2; - - // Draw the icon - dc.DrawIcon(x, y, m_hIcon); - } - else - { - DrawClient(&dc); -// CDialogEx::OnPaint(); - } -} - -// The system calls this function to obtain the cursor to display while the user drags -// the minimized window. -HCURSOR COpenVideoCallDlg::OnQueryDragIcon() -{ - return static_cast (m_hIcon); -} - - - -LRESULT COpenVideoCallDlg::OnNcHitTest(CPoint point) -{ - // TODO: ڴϢ/Ĭֵ - LRESULT lResult = CDialogEx::OnNcHitTest(point); - if (lResult == HTCLIENT && ::GetAsyncKeyState(MK_LBUTTON) < 0) - lResult = HTCAPTION; - - return lResult; -} - -void COpenVideoCallDlg::DrawClient(CDC *lpDC) -{ - CRect rcText; - CRect rcClient; - LPCTSTR lpString = NULL; - CFont* defFont = lpDC->SelectObject(&m_ftTitle); - - m_imgNetQuality.Draw(lpDC, m_nLastmileQuality, CPoint(16, 40), ILD_NORMAL); - - GetClientRect(&rcClient); - lpDC->FillSolidRect(0, 0, 720, 24, RGB(0, 161, 230)); - lpDC->SetBkColor(RGB(0x00, 0x9E, 0xEB)); - lpDC->SetTextColor(RGB(0xFF, 0xFF, 0xFF)); - lpString = LANG_STR("IDS_TITLE"); - lpDC->TextOut(rcClient.Width()/2 - 80, 3, lpString, _tcslen(lpString)); - - lpDC->SelectObject(&m_ftDes); - lpDC->SetTextColor(RGB(0x91, 0x96, 0xA0)); - lpDC->SetBkColor(RGB(0xFF, 0xFF, 0xFF)); - lpString = LANG_STR("IDS_CONTACT"); - lpDC->TextOut(rcClient.Width() / 2-50, rcClient.Height() - 55, lpString, _tcslen(lpString)); - - lpDC->SelectObject(&m_ftPhone); - lpDC->SetTextColor(RGB(0x44, 0x45, 0x46)); - lpString = LANG_STR("IDS_PHONENUMBER"); - lpDC->TextOut(rcClient.Width() / 2 + 45, rcClient.Height() - 55, lpString, _tcslen(lpString)); - - lpDC->SelectObject(&m_ftDes); - lpDC->SetTextColor(RGB(0x91, 0x96, 0xA0)); - lpDC->SetBkColor(RGB(0xFF, 0xFF, 0xFF)); - lpString = AVC_VER;// _T("v1.3"); - CString strVersion = CAgoraObject::GetSDKVersionEx(); - - rcText.SetRect(0, rcClient.Height() - 30, rcClient.Width(), rcClient.Height() - 5); - lpDC->DrawText(strVersion, _tcslen(strVersion), &rcText, DT_CENTER | DT_SINGLELINE); - lpDC->SelectObject(defFont); -} - -void COpenVideoCallDlg::OnBnClickedBtnmin() -{ - // TODO: ڴӿؼ֪ͨ - ShowWindow(SW_MINIMIZE); -} - - -void COpenVideoCallDlg::OnBnClickedBtnclose() -{ - // TODO: ڴӿؼ֪ͨ - CDialogEx::OnCancel(); -} - -LRESULT COpenVideoCallDlg::OnBackPage(WPARAM wParam, LPARAM lParam) -{ - if (m_lpCurDialog == &m_dlgSetup) { - m_lpCurDialog->ShowWindow(SW_HIDE); - m_lpCurDialog = &m_dlgEnterChannel; - } - - CString str; - - m_dlgSetup.GetVideoSolution(); - m_dlgEnterChannel.SetVideoString(m_dlgSetup.GetVideoSolutionDes()); - - m_lpCurDialog->ShowWindow(SW_SHOW); - - return 0; -} - -LRESULT COpenVideoCallDlg::OnNextPage(WPARAM wParam, LPARAM lParam) -{ - m_lpCurDialog->ShowWindow(SW_HIDE); - if (m_lpCurDialog == &m_dlgEnterChannel) - m_lpCurDialog = &m_dlgSetup; - - m_lpCurDialog->ShowWindow(SW_SHOW); - - return 0; -} - -LRESULT COpenVideoCallDlg::OnJoinChannel(WPARAM wParam, LPARAM lParam) -{ - IRtcEngine *lpRtcEngine = CAgoraObject::GetEngine(); - CAgoraObject *lpAgoraObject = CAgoraObject::GetAgoraObject(); - - CString strChannelName = m_dlgEnterChannel.GetChannelName(); - if (strChannelName.GetLength() == 0) - return 0; - - m_dlgVideo.MoveWindow(0, 0, 960, 720, 1); - m_dlgVideo.ShowWindow(SW_SHOW); - m_dlgVideo.CenterWindow(); - - VideoCanvas vc; - - vc.uid = 0; - vc.view = m_dlgVideo.GetLocalVideoWnd(); - vc.renderMode = RENDER_MODE_TYPE::RENDER_MODE_FIT; - - //cancel setVideoProfile bitrate since version 2.1.0 - m_nVideoSolution = m_dlgSetup.GetVideoSolution(); - lpRtcEngine->setVideoProfile((VIDEO_PROFILE_TYPE)m_nVideoSolution, m_dlgSetup.IsWHSwap()); - lpAgoraObject->EnableVideo(TRUE); - - m_dlgVideo.SetWindowText(strChannelName); - lpRtcEngine->setupLocalVideo(vc); - lpRtcEngine->startPreview(); - - lpAgoraObject->JoinChannel(strChannelName,0, strlen(APP_TOKEN) > 0 ? APP_TOKEN:NULL); - lpAgoraObject->SetMsgHandlerWnd(m_dlgVideo.GetSafeHwnd()); - - return 0; -} - -LRESULT COpenVideoCallDlg::OnLeaveChannel(WPARAM wParam, LPARAM lParam) -{ - CAgoraObject *lpAgoraObject = CAgoraObject::GetAgoraObject(); - - lpAgoraObject->LeaveCahnnel(); - m_dlgEnterChannel.CleanEncryptionSecret(); - - return 0; -} - -LRESULT COpenVideoCallDlg::OnLastmileQuality(WPARAM wParam, LPARAM lParam) -{ - LPAGE_LASTMILE_QUALITY lpData = (LPAGE_LASTMILE_QUALITY)wParam; - - if (m_nLastmileQuality != lpData->quality) { - m_nLastmileQuality = lpData->quality; - InvalidateRect(CRect(16, 40, 48, 72), TRUE); - } - - delete lpData; - return 0; -} \ No newline at end of file diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCallDlg.h b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCallDlg.h deleted file mode 100644 index 60a018af..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/OpenVideoCallDlg.h +++ /dev/null @@ -1,82 +0,0 @@ - -// AgoraVideoCallDlg.h : header file -// - -#pragma once - -#include "AGHyperlink.h" -#include "EnterChannelDlg.h" -#include "SetupDlg.h" -#include "VideoDlg.h" - -// CAgoraVideoCallDlg dialog -class COpenVideoCallDlg : public CDialogEx -{ -// Construction -public: - COpenVideoCallDlg(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - enum { IDD = IDD_OPENVIDEOCALL_DIALOG }; - - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - - -// Implementation -protected: - HICON m_hIcon; - - // Generated message map functions - virtual BOOL PreTranslateMessage(MSG* pMsg); - virtual BOOL OnInitDialog(); - afx_msg void OnSysCommand(UINT nID, LPARAM lParam); - afx_msg void OnPaint(); - afx_msg HCURSOR OnQueryDragIcon(); - afx_msg LRESULT OnNcHitTest(CPoint point); - - afx_msg void OnBnClickedBtnmin(); - afx_msg void OnBnClickedBtnclose(); - - afx_msg LRESULT OnBackPage(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnNextPage(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnJoinChannel(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnLeaveChannel(WPARAM wParam, LPARAM lParam); - - afx_msg LRESULT OnLastmileQuality(WPARAM wParam, LPARAM lParam); - - - DECLARE_MESSAGE_MAP() - -protected: - void InitCtrls(); - void DrawClient(CDC *lpDC); - void InitChildDialog(); - -private: - CAGButton m_btnMin; - CAGButton m_btnClose; - - CAGHyperLink m_linkAgora; - - CDialogEx *m_lpCurDialog; - CEnterChannelDlg m_dlgEnterChannel; - CSetupDlg m_dlgSetup; - - CFont m_ftTitle; - CFont m_ftLink; - CFont m_ftDes; - CFont m_ftPhone; - CImageList m_imgNetQuality; - -private: - CVideoDlg m_dlgVideo; - CAgoraObject *m_lpAgoraObject; - IRtcEngine *m_lpRtcEngine; - -private: // data - int m_nCodecType; - int m_nVideoSolution; - - int m_nLastmileQuality; -}; diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/SetupDlg.cpp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/SetupDlg.cpp deleted file mode 100644 index e7867d0e..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/SetupDlg.cpp +++ /dev/null @@ -1,277 +0,0 @@ -// SetupDlg.cpp : ʵļ -// - -#include "stdafx.h" -#include "OpenVideoCall.h" -#include "SetupDlg.h" -#include "afxdialogex.h" - - -// CSetupDlg Ի - -IMPLEMENT_DYNAMIC(CSetupDlg, CDialogEx) - -CSetupDlg::CSetupDlg(CWnd* pParent /*=NULL*/) - : CDialogEx(CSetupDlg::IDD, pParent) -{ - -} - -CSetupDlg::~CSetupDlg() -{ -} - -void CSetupDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialogEx::DoDataExchange(pDX); - DDX_Control(pDX, IDC_BTNCONFIRM_SETUP, m_btnConfirm); - DDX_Control(pDX, IDC_BTNCANCEL_SETUP, m_btnCancel); - DDX_Control(pDX, IDC_CKSAVESETTING_SETUP, m_ckSaveSettings); - DDX_Control(pDX, IDC_CKSWPWH_SETUP, m_ckSwapWH); -} - - -BEGIN_MESSAGE_MAP(CSetupDlg, CDialogEx) - ON_WM_PAINT() - ON_BN_CLICKED(IDC_BTNCONFIRM_SETUP, &CSetupDlg::OnBnClickedBtnconfirmSetup) - ON_BN_CLICKED(IDC_BTNCANCEL_SETUP, &CSetupDlg::OnBnClickedBtncancelSetup) -// ON_CBN_SELCHANGE(IDC_CMBRES_SETUP, &CSetupDlg::OnCbnSelchangeCmbresSetup) -// ON_CBN_SELCHANGE(IDC_CMBCODEC_SETUP, &CSetupDlg::OnCbnSelchangeCmbresSetup) - - ON_WM_HSCROLL() - ON_WM_LBUTTONDBLCLK() - -END_MESSAGE_MAP() - - -// CSetupDlg Ϣ - - -BOOL CSetupDlg::OnInitDialog() -{ - CDialogEx::OnInitDialog(); - - // TODO: ڴӶijʼ - m_ftHead.CreateFont(15, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); - m_ftDes.CreateFont(15, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); - m_ftBtn.CreateFont(16, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial")); - m_penFrame.CreatePen(PS_SOLID, 1, RGB(0xD8, 0xD8, 0xD8)); - - m_cbxVideoProfile.Create(WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, CRect(0, 0, 300, 40), this, IDC_CMBVDOPRF_SETUP); - SetBackgroundColor(RGB(0xFF, 0xFF, 0xFF), TRUE); - InitData(); - InitCtrls(); - - if (m_agConfig.IsAutoSaveEnabled()) - m_ckSaveSettings.SetCheck(TRUE); - else - m_ckSaveSettings.SetCheck(FALSE); - - return TRUE; // return TRUE unless you set the focus to a control - // 쳣: OCX ҳӦ FALSE -} - - -void CSetupDlg::InitCtrls() -{ - CRect ClientRect; - - MoveWindow(0, 0, 320, 450, 1); - GetClientRect(&ClientRect); - - int nResolutionIndex = 0; - CString str; - - m_cbxVideoProfile.MoveWindow(210, 125, 200, 22, TRUE); - m_cbxVideoProfile.SetFont(&m_ftDes); - m_cbxVideoProfile.SetButtonImage(IDB_CMBBTN, 12, 12, RGB(0xFF, 0x00, 0xFF)); - m_cbxVideoProfile.SetFaceColor(RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF)); - m_cbxVideoProfile.SetListMaxHeight(600); - - m_ckSwapWH.MoveWindow(75, 160, 20, 20, TRUE); - m_ckSaveSettings.MoveWindow(185, ClientRect.Height() - 120, 20, 20, TRUE); - - m_btnCancel.MoveWindow(ClientRect.Width() / 2 - 93, ClientRect.Height() - 58, 174, 36, TRUE); - m_btnConfirm.MoveWindow(ClientRect.Width() / 2 + 93, ClientRect.Height() - 58, 174, 36, TRUE); - - for (int nIndex = 0; nIndex < 31; nIndex++) { - m_cbxVideoProfile.InsertString(nIndex, m_szProfileDes[nIndex]); - m_cbxVideoProfile.SetItemData(nIndex, (DWORD_PTR)m_nProfileValue[nIndex]); - } - - m_btnCancel.SetBorderColor(RGB(0xD8, 0xD8, 0xD8), RGB(0x00, 0xA0, 0xE9), RGB(0x00, 0xA0, 0xE9), RGB(0xCC, 0xCC, 0xCC)); - m_btnCancel.SetBackColor(RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF)); - m_btnCancel.SetTextColor(RGB(0x55, 0x58, 0x5A), RGB(0x00, 0xA0, 0xE9), RGB(0x00, 0xA0, 0xE9), RGB(0xCC, 0xCC, 0xCC)); - - m_btnConfirm.SetBackColor(RGB(0, 160, 239), RGB(0, 160, 239), RGB(0, 160, 239), RGB(192, 192, 192)); - m_btnConfirm.SetFont(&m_ftBtn); - m_btnConfirm.SetTextColor(RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xC8, 0x64), RGB(0xFF, 0xC8, 0x64), RGB(0xCC, 0xCC, 0xCC)); - m_btnConfirm.SetWindowText(LANG_STR("IDS_SET_BTCONFIRM")); - - if (m_agConfig.IsAutoSaveEnabled()) - nResolutionIndex = m_agConfig.GetSolution(); - else - nResolutionIndex = 15; - - m_cbxVideoProfile.SetCurSel(nResolutionIndex); -} - -void CSetupDlg::InitData() -{ - m_szProfileDes[0] = _T("160x120 15fps"); //65kbps - m_nProfileValue[0] = 0; - m_szProfileDes[1] = _T("120x120 15fps"); //50kbps - m_nProfileValue[1] = 2; - - m_szProfileDes[2] = _T("320x180 15fps"); //140kbps - m_nProfileValue[2] = 10; - m_szProfileDes[3] = _T("180x180 15fps"); //100kbps - m_nProfileValue[3] = 12; - m_szProfileDes[4] = _T("240x180 15fps"); //120kbps - m_nProfileValue[4] = 13; - - m_szProfileDes[5] = _T("320x240 15fps"); //200kbps - m_nProfileValue[5] = 20; - m_szProfileDes[6] = _T("240x240 15fps"); //140kbps - m_nProfileValue[6] = 22; - m_szProfileDes[7] = _T("424x240 15fps"); //220kbps - m_nProfileValue[7] = 23; - - m_szProfileDes[8] = _T("640x360 15fps"); //400kbps - m_nProfileValue[8] = 30; - m_szProfileDes[9] = _T("360x360 15fps"); //260kbps - m_nProfileValue[9] = 32; - m_szProfileDes[10] = _T("640x360 30fps"); //600kbps - m_nProfileValue[10] = 33; - m_szProfileDes[11] = _T("360x360 30fps"); //400kbps - m_nProfileValue[11] = 35; - m_szProfileDes[12] = _T("480x360 15fps"); //320kbps - m_nProfileValue[12] = 36; - m_szProfileDes[13] = _T("480x360 30fps"); //490kbps - m_nProfileValue[13] = 37; - m_szProfileDes[14] = _T("640x360 15fps"); //800kbps - m_nProfileValue[14] = 38; - - m_szProfileDes[15] = _T("640x480 15fps"); //500kbps - m_nProfileValue[15] = 40; - m_szProfileDes[16] = _T("480x480 15fps"); //400kbps - m_nProfileValue[16] = 42; - m_szProfileDes[17] = _T("640x480 30fps"); //750kbps - m_nProfileValue[17] = 43; - m_szProfileDes[18] = _T("480x480 30fps"); //600kbps - m_nProfileValue[18] = 44; - m_szProfileDes[19] = _T("848x480 15fps"); //610kbps - m_nProfileValue[19] = 47; - m_szProfileDes[20] = _T("848x480 30fps"); //930kbps - m_nProfileValue[20] = 48; - - m_szProfileDes[21] = _T("1280x720 15fps"); //1130kbps - m_nProfileValue[21] = 50; - m_szProfileDes[22] = _T("1280x720 30fps"); //1710kbps - m_nProfileValue[22] = 52; - m_szProfileDes[23] = _T("960x720 15fps"); //910kbps - m_nProfileValue[23] = 54; - m_szProfileDes[24] = _T("960x720 30fps"); //1380kbps - m_nProfileValue[24] = 55; - - m_szProfileDes[25] = _T("1920x1080 15fps"); //2080kbps - m_nProfileValue[25] = 60; - m_szProfileDes[26] = _T("1920x1080 30fps"); //3150kbps - m_nProfileValue[26] = 62; - m_szProfileDes[27] = _T("1920x1080 60fps"); //4780kbps - m_nProfileValue[27] = 64; - m_szProfileDes[28] = _T("2560x1440 30fps"); //4850kbps - m_nProfileValue[28] = 66; - m_szProfileDes[29] = _T("3560x1440 60fps"); //7350kbps - m_nProfileValue[29] = 67; - - m_szProfileDes[30] = _T("3840x2160 30fps"); //8190kbps - m_nProfileValue[30] = 70; - m_szProfileDes[31] = _T("3840x2160 60fps"); //13500kbps - m_nProfileValue[31] = 72; -} - -void CSetupDlg::DrawClient(CDC *lpDC) -{ - CRect rcText; - CRect rcClient; - LPCTSTR lpString = NULL; - - GetClientRect(&rcClient); - - CFont* defFont = lpDC->SelectObject(&m_ftHead); - - lpDC->SelectObject(&m_penFrame); - rcText.SetRect(rcClient.Width() / 2 - 188, 120, rcClient.Width() / 2 + 172, 152); - lpDC->RoundRect(&rcText, CPoint(32, 32)); - - lpDC->SetBkColor(RGB(0xFF, 0xFF, 0xFF)); - lpDC->SetTextColor(RGB(0xD8, 0xD8, 0xD8)); - lpString = LANG_STR("IDS_SET_RESOLUTION"); - lpDC->TextOut(75, 128, lpString, _tcslen(lpString)); - - lpDC->SetTextColor(RGB(0x44, 0x45, 0x46)); - lpString = LANG_STR("IDS_SET_SWAPWH"); - lpDC->TextOut(100, 160, lpString, _tcslen(lpString)); - - lpString = LANG_STR("IDS_SET_SAVESETTING"); - lpDC->TextOut(205, rcClient.Height() - 118, lpString, _tcslen(lpString)); - - lpDC->SelectObject(defFont); -} - -void CSetupDlg::OnBnClickedBtnconfirmSetup() -{ - // TODO: ڴӿؼ֪ͨ - GetParent()->SendMessage(WM_GOBACK, 0, 0); - - if (m_ckSaveSettings.GetCheck() == TRUE) { - m_agConfig.EnableAutoSave(TRUE); - m_agConfig.SetSolution(m_cbxVideoProfile.GetCurSel()); - } - else - m_agConfig.EnableAutoSave(FALSE); -} - -void CSetupDlg::OnBnClickedBtncancelSetup() -{ - GetParent()->SendMessage(WM_GOBACK, 0, 0); -} - -void CSetupDlg::OnPaint() -{ - CPaintDC dc(this); // device context for painting - - DrawClient(&dc); -} - -int CSetupDlg::GetVideoSolution() -{ - int nIndex = m_cbxVideoProfile.GetCurSel(); - - return (int)m_cbxVideoProfile.GetItemData(nIndex); -} - -void CSetupDlg::SetVideoSolution(int nIndex) -{ - m_cbxVideoProfile.SetCurSel(nIndex); -} - -CString CSetupDlg::GetVideoSolutionDes() -{ - int nIndex = m_cbxVideoProfile.GetCurSel(); - if (nIndex == -1) - nIndex = 0; - - return (CString)m_szProfileDes[nIndex]; -} - -void CSetupDlg::SetWHSwap(BOOL bSwap) -{ - m_ckSwapWH.SetCheck(bSwap); -} - -BOOL CSetupDlg::IsWHSwap() -{ - return (BOOL)m_ckSwapWH.GetCheck(); -} \ No newline at end of file diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/SetupDlg.h b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/SetupDlg.h deleted file mode 100644 index 05fc8a96..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/SetupDlg.h +++ /dev/null @@ -1,71 +0,0 @@ -#pragma once -#include "AGButton.h" -#include "AGComboBox.h" -#include "AGSliderCtrl.h" -#include "afxwin.h" - -#include "AGConfig.h" -// CSetupDlg Ի - -class CSetupDlg : public CDialogEx -{ - - DECLARE_DYNAMIC(CSetupDlg) - -public: - CSetupDlg(CWnd* pParent = NULL); // 캯 - virtual ~CSetupDlg(); - - void SetVideoSolution(int nIndex); - int GetVideoSolution(); - CString GetVideoSolutionDes(); - - void SetWHSwap(BOOL bSwap); - BOOL IsWHSwap(); - -// Ի - enum { IDD = IDD_SETUP_DIALOG }; - - typedef struct _AGVIDEO_PARAM - { - int nWidth; - int nHeight; - int nMinKPB; - int nMaxKPB; - - } AGNET_RATE_RANGE; - -protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ - virtual BOOL OnInitDialog(); - - afx_msg void OnPaint(); - afx_msg void OnBnClickedBtnconfirmSetup(); - afx_msg void OnBnClickedBtncancelSetup(); - DECLARE_MESSAGE_MAP() - -protected: - void InitCtrls(); - void InitData(); - void DrawClient(CDC *lpDC); - -private: - CAGButton m_btnCancel; - CAGButton m_btnConfirm; - CButton m_ckSwapWH; - CButton m_ckSaveSettings; - - CAGComboBox m_cbxVideoProfile; - - CFont m_ftHead; // title - CFont m_ftDes; // text in ctrl - CFont m_ftBtn; // button - CPen m_penFrame; - - LPTSTR m_szProfileDes[64]; - int m_nProfileValue[64]; - AGNET_RATE_RANGE m_agRateRange[13]; - -private: - CAGConfig m_agConfig; -}; diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/VideoDlg.cpp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/VideoDlg.cpp deleted file mode 100644 index 031284a8..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/VideoDlg.cpp +++ /dev/null @@ -1,1230 +0,0 @@ -// VideoDlg.cpp -// - -#include "stdafx.h" -#include "OpenVideoCall.h" -#include "VideoDlg.h" -#include "afxdialogex.h" -#include "AGEventDef.h" -#include "video_preprocessing_plugin.h" - -// CVideoDlg - -IMPLEMENT_DYNAMIC(CVideoDlg, CDialogEx) - -CVideoDlg::CVideoDlg(CWnd* pParent /*=NULL*/) - : CDialogEx(CVideoDlg::IDD, pParent) -{ - m_brHead.CreateSolidBrush(RGB(0, 160, 239)); - SetBackgroundColor(RGB(0x26, 0x26, 0x26)); - m_bLastStat = FALSE; - m_nScreenMode = SCREEN_VIDEO1; - m_bFullScreen = FALSE; - m_lpBigShowed = NULL; - m_bFilter = FALSE; - m_bShowInfo = FALSE; -} - -CVideoDlg::~CVideoDlg() -{ - m_brHead.DeleteObject(); -} - -void CVideoDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialogEx::DoDataExchange(pDX); - - DDX_Control(pDX, IDC_BTNMIN_VIDEO, m_btnMin); - DDX_Control(pDX, IDC_BTNRSTO_VIDEO, m_btnRst); - DDX_Control(pDX, IDC_BTNCLOSE_VIDEO, m_btnClose); -} - - -BEGIN_MESSAGE_MAP(CVideoDlg, CDialogEx) - ON_WM_SIZE() - ON_WM_MOUSEMOVE() - ON_WM_PAINT() - ON_WM_NCHITTEST() - - ON_MESSAGE(WM_SHOWMODECHANGED, &CVideoDlg::OnShowModeChanged) - ON_MESSAGE(WM_SHOWBIG, &CVideoDlg::OnShowBig) - - ON_MESSAGE(WM_WINDOWSHARE, &CVideoDlg::OnWindowShareStart) - ON_MESSAGE(WM_DESKTOPSHARE, &CVideoDlg::OnDesktopShareStart) - - ON_MESSAGE(WM_MSGID(EID_JOINCHANNEL_SUCCESS), &CVideoDlg::OnEIDJoinChannelSuccess) - ON_MESSAGE(WM_MSGID(EID_REJOINCHANNEL_SUCCESS), &CVideoDlg::OnEIDReJoinChannelSuccess) - ON_MESSAGE(WM_MSGID(EID_FIRST_LOCAL_VIDEO_FRAME), &CVideoDlg::OnEIDFirstLocalFrame) - - ON_MESSAGE(WM_MSGID(EID_FIRST_REMOTE_VIDEO_DECODED), &CVideoDlg::OnEIDFirstRemoteFrameDecoded) - ON_MESSAGE(WM_MSGID(EID_USER_OFFLINE), &CVideoDlg::OnEIDUserOffline) - - ON_MESSAGE(WM_MSGID(EID_REMOTE_VIDEO_STAT), &CVideoDlg::OnRemoteVideoStat) - - ON_MESSAGE(WM_MSGID(EID_START_RCDSRV), &CVideoDlg::OnStartRecordingService) - ON_MESSAGE(WM_MSGID(EID_STOP_RCDSRV), &CVideoDlg::OnStopRecordingService) - - ON_MESSAGE(WM_MSGID(EID_STREAM_MESSAGE), &CVideoDlg::OnStreamMessage) - - - ON_BN_CLICKED(IDC_BTNMIN_VIDEO, &CVideoDlg::OnBnClickedBtnmin) - ON_BN_CLICKED(IDC_BTNCLOSE_VIDEO, &CVideoDlg::OnBnClickedBtnclose) - ON_BN_CLICKED(IDC_BTNRSTO_VIDEO, &CVideoDlg::OnBnClickedBtnrest) - ON_BN_CLICKED(IDC_BTNENDCALL_VIDEO, &CVideoDlg::OnBnClickedBtnclose) - - ON_BN_CLICKED(IDC_BTNMESSAGE_VIDEO, &CVideoDlg::OnBnClickedBtnmessage) - - ON_BN_CLICKED(IDC_BTNSCRCAP_VIDEO, &CVideoDlg::OnBnClickedBtnScreenCapture) - ON_BN_CLICKED(IDC_BTNMORE_VIDEO, &CVideoDlg::OnBnClickedBtnMore) - ON_BN_CLICKED(IDC_BTNMODE_VIDEO, &CVideoDlg::OnBnClickedBtnmode) - ON_BN_CLICKED(IDC_BTNAUDIO_VIDEO, &CVideoDlg::OnBnClickedBtnaudio) - - ON_BN_CLICKED(ID_IDR_VIDEOINFO, &CVideoDlg::OnBnClickedBtntip) - ON_BN_CLICKED(ID_IDR_DEVICE, &CVideoDlg::OnBnClickedBtnsetup) - ON_BN_CLICKED(ID_IDR_FILTER, &CVideoDlg::OnBnClickedBtnfilter) - -// ON_BN_CLICKED(IDC_BTNWHITEBOARD_VIDEO, &CVideoDlg::OnBnCliekedBtnWhiteBoard) -// ON_BN_CLICKED(IDC_BTNCLOSEWB_VIDEO, &CVideoDlg::OnBnCliekedBtnCloseWhiteBoard) - - ON_BN_CLICKED(IDC_BTNSCR_VIDEO, &CVideoDlg::OnBnClickedBtnfullscr) - - ON_BN_CLICKED(ID_SCRSHARE_DESKTOPSHARE, &CVideoDlg::OnBnClickedScreenshare) - ON_BN_CLICKED(ID_SCRSHARE_WINDOWSHARE, &CVideoDlg::OnBnClickedWindowshare) - -// ON_BN_CLICKED(ID_WHITEBOARD_HOSTMODE, &CVideoDlg::OnBnClickedHostMode) -// ON_BN_CLICKED(ID_WHITEBOARD_GUESTMODE, &CVideoDlg::OnBnClickedGuestMode) - ON_WM_SHOWWINDOW() - ON_WM_MOVE() -END_MESSAGE_MAP() - - -// CVideoDlg - - -void CVideoDlg::OnSize(UINT nType, int cx, int cy) -{ - CDialogEx::OnSize(nType, cx, cy); - - if (m_btnMin.GetSafeHwnd() != NULL) - m_btnMin.MoveWindow(cx - 72, 0, 24, 24, TRUE); - if (m_btnRst.GetSafeHwnd() != NULL) - m_btnRst.MoveWindow(cx - 48, 0, 24, 24, TRUE); - if (m_btnClose.GetSafeHwnd() != NULL) - m_btnClose.MoveWindow(cx - 24, 0, 24, 24, TRUE); - - GetClientRect(&m_rcVideoArea); - m_rcVideoArea.top += 24; - m_rcVideoArea.bottom -= 72; - - m_rcChildVideoArea.top = m_rcVideoArea.top + 10; - m_rcChildVideoArea.bottom = m_rcChildVideoArea.top + 144; - m_rcChildVideoArea.right = m_rcVideoArea.right - 14; - m_rcChildVideoArea.left = m_rcChildVideoArea.right - 192; - - if (::IsWindow(m_dlgChat.GetSafeHwnd()) && m_dlgChat.IsWindowVisible()) { - CRect rcChatArea; - - rcChatArea.CopyRect(&m_rcVideoArea); - rcChatArea.top = rcChatArea.bottom - 150; - ClientToScreen(&rcChatArea); - m_dlgChat.MoveWindow(&rcChatArea); - } - - if (m_wndLocal.GetSafeHwnd() == NULL || m_wndVideo[0].GetSafeHwnd() == NULL) - return; - - switch (m_nScreenMode) - { - case SCREEN_VIDEO1: - AdjustSizeVideo1(cx, cy); - AdjustButtonsNormal(cx, cy); - break; - case SCREEN_VIDEO4: - AdjustSizeVideo4(cx, cy); - AdjustButtonsNormal(cx, cy); - break; - case SCREEN_VIDEOMULTI: - AdjustSizeVideoMulti(cx, cy); - AdjustButtonsNormal(cx, cy); - break; - default: - break; - } - - Invalidate(TRUE); -} - -void CVideoDlg::ShowButtonsNormal() -{ - CRect rcClient; - int nShowMode = SW_HIDE; - - if (!m_bFullScreen) - nShowMode = SW_SHOW; - - m_btnMessage.ShowWindow(nShowMode); - m_btnMode.ShowWindow(nShowMode); - m_btnMore.ShowWindow(nShowMode); - - m_btnAudio.SetBackImage(IDB_BTNMAUDIO_VIDEO, RGB(0x26, 0x26, 0x26)); - m_btnAudio.ShowWindow(nShowMode); - m_btnEndCall.SetBackImage(IDB_BTNENDCALL_VIDEO, RGB(0x26, 0x26, 0x26)); - m_btnEndCall.ShowWindow(nShowMode); - m_btnScrCap.ShowWindow(nShowMode); - m_btnShow.ShowWindow(nShowMode); - - GetClientRect(&rcClient); - AdjustButtonsNormal(rcClient.Width(), rcClient.Height()); -} - - -void CVideoDlg::AdjustButtonsNormal(int cx, int cy) -{ -// if (m_btnSetup.GetSafeHwnd() != NULL) -// m_btnSetup.MoveWindow(30, cy - 48, 24, 24, TRUE); - - if(m_btnMessage.GetSafeHwnd() != NULL) - m_btnMessage.MoveWindow(cx / 2 - 312, cy - 60, 48, 48, TRUE); - if (m_btnMode.GetSafeHwnd() != NULL) - m_btnMode.MoveWindow(cx / 2 - 216, cy - 60, 48, 48, TRUE); - if (m_btnAudio.GetSafeHwnd() != NULL) - m_btnAudio.MoveWindow(cx / 2 - 120, cy - 60, 48, 48, TRUE); - if (m_btnEndCall.GetSafeHwnd() != NULL) - m_btnEndCall.MoveWindow(cx / 2 - 24, cy - 60, 48, 48, TRUE); - - if (m_btnScrCap.GetSafeHwnd() != NULL) - m_btnScrCap.MoveWindow(cx / 2 + 72, cy - 60, 48, 48, TRUE); - if (m_btnMore.GetSafeHwnd() != NULL) - m_btnMore.MoveWindow(cx / 2 + 264, cy - 60, 48, 48, TRUE); - - if (m_btnShow.GetSafeHwnd() != NULL) - m_btnShow.MoveWindow(cx - 72, cy - 48, 48, 48, TRUE); -} - -void CVideoDlg::AdjustSizeVideo1(int cx, int cy) -{ - if (m_listWndInfo.GetCount() == 0) - m_wndLocal.MoveWindow(&m_rcVideoArea, FALSE); - else { - m_wndVideo[0].MoveWindow(&m_rcVideoArea, FALSE); - m_wndLocal.MoveWindow(&m_rcChildVideoArea, FALSE); - } -} - -void CVideoDlg::AdjustSizeVideo4(int cx, int cy) -{ - m_wndVideo[0].MoveWindow(0, m_rcVideoArea.top, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - m_wndVideo[1].MoveWindow(m_rcVideoArea.Width() / 2, m_rcVideoArea.top, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - m_wndVideo[2].MoveWindow(0, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - m_wndVideo[3].MoveWindow(m_rcVideoArea.Width() / 2, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - - if (m_listWndInfo.GetCount() == 2) - m_wndLocal.MoveWindow(0, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - else - m_wndLocal.MoveWindow(m_rcVideoArea.Width() / 2, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); -} - -void CVideoDlg::AdjustSizeVideoMulti(int cx, int cy) -{ - int nLocalIndex = 0; - - m_lpBigShowed->MoveWindow(&m_rcVideoArea, TRUE); - - for (int nIndex = 0; nIndex < 4; nIndex++) { - int nXPos = (m_rcVideoArea.Width() / 2) - 402 + (204 * nLocalIndex); - int nYPos = m_rcVideoArea.top + 16; - - if (!m_wndVideo[nIndex].IsBigShow()) { - if (m_wndVideo[nIndex].GetUID() != 0) { - m_wndVideo[nIndex].MoveWindow(nXPos, nYPos, 192, 144, TRUE); - nLocalIndex++; - } - } - else{ - m_wndLocal.MoveWindow(nXPos, nYPos, 192, 144, TRUE); - nLocalIndex++; - } - } -} - -void CVideoDlg::OnMouseMove(UINT nFlags, CPoint point) -{ - CDialogEx::OnMouseMove(nFlags, point); -} - -BOOL CVideoDlg::NeedShowSizeBox(CPoint point) -{ - CRect rcClient; - - GetClientRect(&rcClient); - - rcClient.left += 5; - rcClient.right -= 5; - rcClient.top += 5; - rcClient.bottom -= 5; - - if (rcClient.PtInRect(point) || IsZoomed()) - return FALSE; - - return TRUE; -} - -void CVideoDlg::EnableSize(BOOL bEnable) -{ - LONG lStyle = ::GetWindowLong(GetSafeHwnd(), GWL_STYLE); - - if (bEnable) - ::SetWindowLong(GetSafeHwnd(), GWL_STYLE, lStyle | WS_SIZEBOX); - else - ::SetWindowLong(GetSafeHwnd(), GWL_STYLE, lStyle&(~WS_SIZEBOX)); - - CRect rcClient; - - if (bEnable) - GetWindowRect(&rcClient); - else - GetClientRect(&rcClient); - - int cx = rcClient.Width(); - int cy = rcClient.Height(); - - if (m_bLastStat != bEnable) { - m_bLastStat = bEnable; - if (m_btnMin.GetSafeHwnd() != NULL) - m_btnMin.MoveWindow(cx - 72, 0, 24, 24, TRUE); - if (m_btnRst.GetSafeHwnd() != NULL) - m_btnRst.MoveWindow(cx - 48, 0, 24, 24, TRUE); - if (m_btnClose.GetSafeHwnd() != NULL) - m_btnClose.MoveWindow(cx - 24, 0, 24, 24, TRUE); - -// if (m_btnTip.GetSafeHwnd() != NULL) -// m_btnTip.MoveWindow(cx / 2 - 372, cy - 84, 72, 72, TRUE); - - if (m_btnScrCap.GetSafeHwnd() != NULL) - m_btnScrCap.MoveWindow(48, cy - 84, 48, 48, TRUE); - -// if (m_btnSetup.GetSafeHwnd() != NULL) -// m_btnSetup.MoveWindow(cx / 2 - 216, cy - 84, 72, 72, TRUE); - if (m_btnMode.GetSafeHwnd() != NULL) - m_btnMode.MoveWindow(cx / 2 - 96, cy - 84, 48, 48, TRUE); - if (m_btnAudio.GetSafeHwnd() != NULL) - m_btnAudio.MoveWindow(cx / 2 + 24, cy - 84, 48, 48, TRUE); - if (m_btnShow.GetSafeHwnd() != NULL) - m_btnShow.MoveWindow(cx - 72, cy - 84, 48, 48, TRUE); - if (m_btnEndCall.GetSafeHwnd() != NULL) - m_btnEndCall.MoveWindow(cx - 120, cy - 84, 48, 48, TRUE); - - Invalidate(FALSE); - } -} - -void CVideoDlg::OnPaint() -{ - CPaintDC dc(this); // device context for painting - //CDialogEx::OnPaint() - DrawHead(&dc); -} - - -LRESULT CVideoDlg::OnNcHitTest(CPoint point) -{ - LRESULT lResult = CDialogEx::OnNcHitTest(point); - if (lResult == HTCLIENT && ::GetAsyncKeyState(MK_LBUTTON) < 0) - lResult = HTCAPTION; - - return lResult; -} - -void CVideoDlg::OnBnClickedBtnmin() -{ - ShowWindow(SW_MINIMIZE); -} - -void CVideoDlg::OnBnClickedBtnclose() -{ - GetParent()->SendMessage(WM_LEAVECHANNEL, 0, 0); - - m_listWndInfo.RemoveAll(); - m_dlgChat.ShowWindow(SW_HIDE); - m_dlgDevice.ShowWindow(SW_HIDE); - - // unmute local video - CAgoraObject::GetAgoraObject()->MuteLocalVideo(FALSE); - m_btnMode.SetBackImage(IDB_BTNAUDIO_VIDEO); - - // unmute local audio - CAgoraObject::GetAgoraObject()->MuteLocalAudio(FALSE); - m_btnAudio.SwitchButtonStatus(CAGButton::AGBTN_NORMAL); - - CAgoraObject::GetAgoraObject()->EnableScreenCapture(NULL, 0, NULL, FALSE); - m_btnScrCap.SwitchButtonStatus(CAGButton::AGBTN_NORMAL); - - m_dlgChat.ShowWindow(SW_HIDE); - m_dlgChat.ClearHistory(); - m_btnMessage.SwitchButtonStatus(CAGButton::AGBTN_NORMAL); - - CDialogEx::OnOK(); -} - -void CVideoDlg::OnBnClickedBtnrest() -{ - if (IsZoomed()) { - m_btnRst.SetBackImage(IDB_BTNMAX, RGB(0xFF, 0x00, 0xFF)); - ShowWindow(SW_RESTORE); - } - else{ - m_btnRst.SetBackImage(IDB_BTNRESTORE, RGB(0xFF, 0x00, 0xFF)); - ShowWindow(SW_MAXIMIZE); - } - - CRect rcClient; - - GetClientRect(&rcClient); - m_rcVideoArea.CopyRect(&rcClient); - m_rcVideoArea.top += 24; - m_rcVideoArea.bottom -= 72; - - m_rcChildVideoArea.top = m_rcVideoArea.top + 16; - m_rcChildVideoArea.bottom = m_rcChildVideoArea.top + 144; - m_rcChildVideoArea.left = m_rcVideoArea.right - 212; - m_rcChildVideoArea.right = m_rcVideoArea.right - 20; - - int cx = rcClient.Width(); - int cy = rcClient.Height(); - - switch (m_nScreenMode) - { - case SCREEN_VIDEO1: - AdjustSizeVideo1(cx, cy); - AdjustButtonsNormal(cx, cy); - break; - case SCREEN_VIDEO4: - AdjustSizeVideo4(cx, cy); - AdjustButtonsNormal(cx, cy); - break; - case SCREEN_VIDEOMULTI: - AdjustSizeVideoMulti(cx, cy); - AdjustButtonsNormal(cx, cy); - break; - default: - break; - } - - Invalidate(TRUE); -} - - -void CVideoDlg::OnBnClickedBtnfullscr() -{ - int nShowMode = 0; - - if (m_bFullScreen) { - m_bFullScreen = FALSE; - nShowMode = SW_SHOW; - ShowWindow(SW_RESTORE); - - GetClientRect(&m_rcVideoArea); - m_rcVideoArea.top += 24; - m_rcVideoArea.bottom -= 72; - } - else{ - m_bFullScreen = TRUE; - nShowMode = SW_HIDE; - ShowWindow(SW_MAXIMIZE); - - GetClientRect(&m_rcVideoArea); - } - - m_btnMin.ShowWindow(nShowMode); - m_btnRst.ShowWindow(nShowMode); - m_btnClose.ShowWindow(nShowMode); - - m_btnMessage.ShowWindow(nShowMode); - m_btnMode.ShowWindow(nShowMode); - m_btnAudio.ShowWindow(nShowMode); - m_btnEndCall.ShowWindow(nShowMode); - m_btnScrCap.ShowWindow(nShowMode); - m_btnMore.ShowWindow(nShowMode); - - m_btnShow.ShowWindow(nShowMode); - - switch (m_nScreenMode) - { - case SCREEN_VIDEO1: - ShowVideo1(); - break; - case SCREEN_VIDEO4: - ShowVideo4(); - break; - case SCREEN_VIDEOMULTI: - ShowMulti(); - break; - default: - break; - } - - Invalidate(TRUE); -} - -void CVideoDlg::OnBnClickedScreenshare() -{ - m_dlgDesktopCapture.SaveScreen(NULL); - m_dlgDesktopCapture.ShowWindow(SW_MAXIMIZE); -} - -void CVideoDlg::OnBnClickedWindowshare() -{ - m_dlgScreenCapture.RefreashWndInfo(); - m_dlgScreenCapture.SaveScreen(NULL); - - m_dlgScreenCapture.ShowWindow(SW_MAXIMIZE); -} - -void CVideoDlg::ShowControlButton(BOOL bShow) -{ - int nShowMode = 0; - if (bShow) - nShowMode = SW_SHOW; - else - nShowMode = SW_HIDE; - - m_btnScrCap.ShowWindow(nShowMode); - m_btnMessage.ShowWindow(nShowMode); - m_btnMode.ShowWindow(nShowMode); - m_btnMore.ShowWindow(nShowMode); - m_btnAudio.ShowWindow(nShowMode); - m_btnShow.ShowWindow(nShowMode); - m_btnEndCall.ShowWindow(nShowMode); -} - -void CVideoDlg::OnBnClickedBtntip() -{ - for (int nIndex = 0; nIndex < 4; nIndex++) - m_wndVideo[nIndex].ShowVideoInfo(!m_bShowInfo); - - m_bShowInfo = !m_bShowInfo; -} - -void CVideoDlg::OnBnClickedBtnScreenCapture() -{ - CAgoraObject *lpAgora = CAgoraObject::GetAgoraObject(); - - if (lpAgora->IsScreenCaptureEnabled()) { - lpAgora->EnableScreenCapture(NULL, 0, NULL, FALSE); - m_btnScrCap.SwitchButtonStatus(CAGButton::AGBTN_NORMAL); - CAgoraObject::GetAgoraObject()->EnableLocalRender(TRUE); - } - else - CreateScreenShareMenu(); - - Invalidate(); -} - -void CVideoDlg::OnBnClickedBtnMore() -{ - CreateMoreMenu(); -} - -void CVideoDlg::CreateScreenShareMenu() -{ - CRect rcButton; - CMenu Menu; - MENUITEMINFO mii; - - Menu.LoadMenu(IDR_MENU_SCRSHARE); - - CMenu *pMenuPopup = Menu.GetSubMenu(0); - - mii.cbSize = sizeof(MENUITEMINFO); - mii.fMask = MIIM_STRING; - - mii.dwTypeData = const_cast LANG_STR("IDS_VIDEO_SCRSHARE"); - mii.cch = _tcslen(LANG_STR("IDS_VIDEO_SCRSHARE")) + 1; - pMenuPopup->SetMenuItemInfo(0, &mii, FALSE); - - mii.dwTypeData = const_cast LANG_STR("IDS_VIDEO_WNDSHARE"); - mii.cch = _tcslen(LANG_STR("IDS_VIDEO_WNDSHARE")) + 1; - pMenuPopup->SetMenuItemInfo(1, &mii, FALSE); - m_btnScrCap.GetWindowRect(&rcButton); - - int x = rcButton.left - 60; - int y = rcButton.top - 50; - - pMenuPopup->TrackPopupMenu(TPM_RIGHTBUTTON, x, y, this); - pMenuPopup->DestroyMenu(); -} - - -void CVideoDlg::CreateMoreMenu() -{ - CRect rcButton; - CMenu Menu; - MENUITEMINFO mii; - UINT nFlag = 0; - - Menu.LoadMenu(IDR_MENU_MORE); - - CMenu *pMenuPopup = Menu.GetSubMenu(0); - - mii.cbSize = sizeof(MENUITEMINFO); - mii.fMask = MIIM_STRING; - - mii.dwTypeData = const_cast LANG_STR("IDS_VIDEO_MOREINFO"); - mii.cch = _tcslen(LANG_STR("IDS_VIDEO_MOREINFO")) + 1; - pMenuPopup->SetMenuItemInfo(0, &mii, FALSE); - pMenuPopup->SetMenuItemBitmaps(ID_IDR_VIDEOINFO, MF_BYCOMMAND, &m_bitMenuInfo, &m_bitMenuInfo); - if (m_bShowInfo) - nFlag = MF_BYCOMMAND | MF_CHECKED; - else - nFlag = MF_BYCOMMAND | MF_UNCHECKED; - pMenuPopup->CheckMenuItem(ID_IDR_VIDEOINFO, nFlag); - - mii.dwTypeData = const_cast LANG_STR("IDS_VIDEO_MOREDEVICE"); - mii.cch = _tcslen(LANG_STR("IDS_VIDEO_MOREDEVICE")) + 1; - pMenuPopup->SetMenuItemInfo(1, &mii, FALSE); - pMenuPopup->SetMenuItemBitmaps(ID_IDR_DEVICE, MF_BYCOMMAND, &m_bitMenuDevice, &m_bitMenuDevice); - - mii.dwTypeData = const_cast LANG_STR("IDS_VIDEO_MOREFILTER"); - mii.cch = _tcslen(LANG_STR("IDS_VIDEO_MOREFILTER")) + 1; - pMenuPopup->SetMenuItemInfo(2, &mii, FALSE); - pMenuPopup->SetMenuItemBitmaps(ID_IDR_FILTER, MF_BYCOMMAND, &m_bitMenuFilter, &m_bitMenuFilter); - if (m_bFilter) - nFlag = MF_BYCOMMAND | MF_CHECKED; - else - nFlag = MF_BYCOMMAND | MF_UNCHECKED; - pMenuPopup->CheckMenuItem(ID_IDR_FILTER, nFlag); - - - m_btnMore.GetWindowRect(&rcButton); - - int x = rcButton.left - 60; - int y = rcButton.top - 75; - - pMenuPopup->TrackPopupMenu(TPM_RIGHTBUTTON, x, y, this); - pMenuPopup->DestroyMenu(); -} - -void CVideoDlg::OnBnClickedBtnsetup() -{ - m_dlgDevice.ShowWindow(SW_SHOW); - m_dlgDevice.CenterWindow(); -} - -void CVideoDlg::OnBnClickedBtnfilter() -{ - IRtcEngine *lpEngine = CAgoraObject::GetEngine(); - - if (!m_bFilter){ - load_preprocessing_plugin(lpEngine); - } - else{ - unload_preprocessing_plugin(lpEngine); - } - - m_bFilter = !m_bFilter; -} - -void CVideoDlg::OnBnClickedBtnmessage() -{ - BOOL bIsShowing = m_dlgChat.IsWindowVisible(); - CRect rcChatArea; - - rcChatArea.CopyRect(&m_rcVideoArea); - rcChatArea.top = rcChatArea.bottom - 150; - ClientToScreen(&rcChatArea); - - if (bIsShowing) { - m_dlgChat.ShowWindow(SW_HIDE); - m_btnMessage.SwitchButtonStatus(CAGButton::AGBTN_NORMAL); - } - else { - m_dlgChat.ShowWindow(SW_SHOW); - m_dlgChat.MoveWindow(&rcChatArea, TRUE); - m_btnMessage.SwitchButtonStatus(CAGButton::AGBTN_PUSH); - } -} - -void CVideoDlg::OnBnClickedBtnmode() -{ - CAgoraObject *lpAgora = CAgoraObject::GetAgoraObject(); - IRtcEngine *lpRtcEngine = CAgoraObject::GetEngine(); - - if (!lpAgora->IsLocalVideoMuted()) { - lpAgora->MuteLocalVideo(TRUE); - m_btnMode.SetBackImage(IDB_BTNVIDEO_VIDEO); - - CAgoraObject::GetAgoraObject()->EnableLocalRender(FALSE); - m_wndLocal.SetBackImage(IDB_BACKGROUND_VIDEO, 96, 96); - m_wndLocal.ShowBackground(TRUE); - } - else { - lpAgora->EnableVideo(TRUE); - lpAgora->MuteLocalVideo(FALSE); - CAgoraObject::GetAgoraObject()->EnableLocalRender(TRUE); - m_btnMode.SetBackImage(IDB_BTNAUDIO_VIDEO); - m_wndLocal.ShowBackground(FALSE); - } - - m_wndLocal.Invalidate(TRUE); - m_wndLocal.UpdateWindow(); - - Invalidate(TRUE); - UpdateWindow(); -} - -void CVideoDlg::OnBnClickedBtnaudio() -{ - CAgoraObject *lpAgora = CAgoraObject::GetAgoraObject(); - - if (lpAgora->IsLocalAudioMuted()) { - lpAgora->MuteLocalAudio(FALSE); - m_btnAudio.SwitchButtonStatus(CAGButton::AGBTN_NORMAL); - } - else { - lpAgora->MuteLocalAudio(TRUE); - m_btnAudio.SwitchButtonStatus(CAGButton::AGBTN_PUSH); - } -} - -LRESULT CVideoDlg::OnEIDJoinChannelSuccess(WPARAM wParam, LPARAM lParam) -{ - LPAGE_JOINCHANNEL_SUCCESS lpData = (LPAGE_JOINCHANNEL_SUCCESS)wParam; - - m_listWndInfo.RemoveAll(); - CAgoraObject::GetAgoraObject()->SetSelfUID(lpData->uid); - - delete lpData; - return 0; -} - -LRESULT CVideoDlg::OnEIDReJoinChannelSuccess(WPARAM wParam, LPARAM lParam) -{ - LPAGE_REJOINCHANNEL_SUCCESS lpData = (LPAGE_REJOINCHANNEL_SUCCESS)wParam; - - m_listWndInfo.RemoveAll(); - delete lpData; - - return 0; -} - -LRESULT CVideoDlg::OnEIDFirstLocalFrame(WPARAM wParam, LPARAM lParam) -{ - LPAGE_FIRST_LOCAL_VIDEO_FRAME lpData = (LPAGE_FIRST_LOCAL_VIDEO_FRAME)wParam; - - if (m_listWndInfo.GetCount() == 0) - ShowVideo1(); - - delete lpData; - - return 0; -} - -LRESULT CVideoDlg::OnEIDFirstRemoteFrameDecoded(WPARAM wParam, LPARAM lParam) -{ - LPAGE_FIRST_REMOTE_VIDEO_DECODED lpData = (LPAGE_FIRST_REMOTE_VIDEO_DECODED)wParam; - BOOL bFound = FALSE; - - POSITION pos = m_listWndInfo.GetHeadPosition(); - while (pos != NULL) { - AGVIDEO_WNDINFO &agvWndInfo = m_listWndInfo.GetNext(pos); - if (agvWndInfo.nUID == lpData->uid) { - bFound = TRUE; - break; - } - } - - if (!bFound) { - AGVIDEO_WNDINFO agvWndInfo; - memset(&agvWndInfo, 0, sizeof(AGVIDEO_WNDINFO)); - agvWndInfo.nUID = lpData->uid; - agvWndInfo.nWidth = lpData->width; - agvWndInfo.nHeight = lpData->height; - - m_listWndInfo.AddTail(agvWndInfo); - } - - RebindVideoWnd(); - - delete lpData; - - return 0; -} - -LRESULT CVideoDlg::OnEIDUserJoined(WPARAM wParam, LPARAM lParam) -{ - CString str; - LPAGE_USER_JOINED lpData = (LPAGE_USER_JOINED)wParam; - - str.Format(_T("%d joined the channel"), lpData->uid); - MessageBox(str); - return 0; -} - -LRESULT CVideoDlg::OnEIDUserOffline(WPARAM wParam, LPARAM lParam) -{ - LPAGE_USER_OFFLINE lpData = (LPAGE_USER_OFFLINE)wParam; - - POSITION pos = m_listWndInfo.GetHeadPosition(); - while (pos != NULL){ - if (m_listWndInfo.GetAt(pos).nUID == lpData->uid) { - m_listWndInfo.RemoveAt(pos); - RebindVideoWnd(); - break; - } - - m_listWndInfo.GetNext(pos); - } - - delete lpData; - - return 0; -} - -LRESULT CVideoDlg::OnEIDConnectionLost(WPARAM wParam, LPARAM lParam) -{ - return 0; -} - -LRESULT CVideoDlg::OnEIDVideoDeviceChanged(WPARAM wParam, LPARAM lParam) -{ - return 0; -} - -LRESULT CVideoDlg::OnRemoteVideoStat(WPARAM wParam, LPARAM lParam) -{ - LPAGE_REMOTE_VIDEO_STAT lpData = (LPAGE_REMOTE_VIDEO_STAT)wParam; - - POSITION posNext = m_listWndInfo.GetHeadPosition(); - - while (posNext != NULL) { - AGVIDEO_WNDINFO &rWndInfo = m_listWndInfo.GetNext(posNext); - - if (rWndInfo.nUID == lpData->uid) { - rWndInfo.nFramerate = lpData->rendererOutputFrameRate; - rWndInfo.nBitrate = lpData->receivedBitrate; - rWndInfo.nWidth = lpData->width; - rWndInfo.nHeight = lpData->height; - m_wndVideo[rWndInfo.nIndex].SetFrameRateInfo(rWndInfo.nFramerate); - m_wndVideo[rWndInfo.nIndex].SetBitrateInfo(rWndInfo.nBitrate); - m_wndVideo[rWndInfo.nIndex].SetVideoResolution(rWndInfo.nWidth, rWndInfo.nHeight); - break; - } - } - - delete lpData; - - return 0; -} - -LRESULT CVideoDlg::OnStartRecordingService(WPARAM wParam, LPARAM lParam) -{ - - return 0; -} - -LRESULT CVideoDlg::OnStopRecordingService(WPARAM wParam, LPARAM lParam) -{ - return 0; -} - -LRESULT CVideoDlg::OnStreamMessage(WPARAM wParam, LPARAM lParam) -{ - LPAGE_STREAM_MESSAGE lpData = (LPAGE_STREAM_MESSAGE)wParam; - TCHAR szMessage[256]; - - int nUTF8Len = lpData->length; - - memset(szMessage, 0, 256 * sizeof(TCHAR)); -#ifdef UNICODE - ::MultiByteToWideChar(CP_UTF8, 0, lpData->data, lpData->length, szMessage, 256); -#else - _tcscpy_s(szMessage, 256, lpData->data); -#endif - - m_dlgChat.AddChatMessage(lpData->uid, szMessage); - - delete[] lpData->data; - delete lpData; - - return 0; -} - -void CVideoDlg::DrawHead(CDC *pDC) -{ - CRect rcTitle; - CString strTitle; - - if (m_bFullScreen) - return; - - GetWindowText(strTitle); - GetClientRect(&rcTitle); - CBrush *lpDefaultBrush = pDC->SelectObject(&m_brHead); - - rcTitle.bottom = 24; - pDC->FillRect(&rcTitle, &m_brHead); - - pDC->SetBkMode(TRANSPARENT); - pDC->SetTextColor(RGB(0xFF, 0xFF, 0xFF)); - pDC->DrawText(strTitle, &rcTitle, DT_SINGLELINE | DT_VCENTER | DT_CENTER); - pDC->SelectObject(lpDefaultBrush); -} - -void CVideoDlg::InitCtrls() -{ - CRect rcClient; - int nScreenWidth = ::GetSystemMetrics(SM_CXSCREEN); - int nScreenHeight = ::GetSystemMetrics(SM_CYSCREEN); - - GetClientRect(&rcClient); - - m_btnMessage.Create(NULL, WS_VISIBLE | WS_CHILD, CRect(0, 0, 1, 1), this, IDC_BTNMESSAGE_VIDEO); - m_btnMode.Create(NULL, WS_VISIBLE | WS_CHILD, CRect(0, 0, 1, 1), this, IDC_BTNMODE_VIDEO); - m_btnAudio.Create(NULL, WS_VISIBLE | WS_CHILD, CRect(0, 0, 1, 1), this, IDC_BTNAUDIO_VIDEO); - m_btnEndCall.Create(NULL, WS_VISIBLE | WS_CHILD, CRect(0, 0, 1, 1), this, IDC_BTNENDCALL_VIDEO); - m_btnScrCap.Create(NULL, WS_VISIBLE | WS_CHILD, CRect(0, 0, 1, 1), this, IDC_BTNSCRCAP_VIDEO); - m_btnMore.Create(NULL, WS_VISIBLE | WS_CHILD, CRect(0, 0, 1, 1), this, IDC_BTNMORE_VIDEO); - - m_btnShow.Create(NULL, WS_VISIBLE | WS_CHILD, CRect(0, 0, 1, 1), this, IDC_BTNSCR_VIDEO); - - for (int nIndex = 0; nIndex < 4; nIndex++){ - m_wndVideo[nIndex].Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(0, 0, 1, 1), this, IDC_BASEWND_VIDEO + nIndex); - m_wndVideo[nIndex].SetBackImage(IDB_BACKGROUND_VIDEO, 96, 96, RGB(0x44, 0x44, 0x44)); - m_wndVideo[nIndex].SetFaceColor(RGB(0x58, 0x58, 0x58)); - } - - m_wndLocal.Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(0, 0, 1, 1), this, IDC_BASEWND_VIDEO + 4); - m_wndLocal.SetBackImage(IDB_BACKGROUND_VIDEO, 96, 96, RGB(0x44, 0x44, 0x44)); - m_wndLocal.SetFaceColor(RGB(0x58, 0x58, 0x58)); - m_wndLocal.SetUID(0); - - m_btnMin.MoveWindow(rcClient.Width() - 72, 1, 22, 22, TRUE); - m_btnRst.MoveWindow(rcClient.Width() - 48, 1, 22, 22, TRUE); - m_btnClose.MoveWindow(rcClient.Width() - 24, 1, 22, 22, TRUE); - - m_btnMessage.MoveWindow(rcClient.Width() / 2 - 144, rcClient.Height() - 84, 48, 48, TRUE); - m_btnMode.MoveWindow(rcClient.Width() / 2 - 24, rcClient.Height() - 84, 48, 48, TRUE); - m_btnAudio.MoveWindow(rcClient.Width() / 2 + 24, rcClient.Height() - 84, 48, 48, TRUE); - m_btnShow.MoveWindow(rcClient.Width() - 72, rcClient.Height() - 84, 48, 48, TRUE); - m_btnMore.MoveWindow(rcClient.Width() / 2 + 264, rcClient.Height() - 84, 48, 48, TRUE); - m_btnEndCall.MoveWindow(rcClient.Width() - 120, rcClient.Height() - 84, 48, 48, TRUE); - - m_wndVideo[0].MoveWindow(0, 24, rcClient.Width(), rcClient.Height() - 96, TRUE); - - m_btnMin.SetBackImage(IDB_BTNMIN, RGB(0xFF, 0x00, 0xFF)); - m_btnRst.SetBackImage(IDB_BTNMAX, RGB(0xFF, 0x00, 0xFF)); - m_btnClose.SetBackImage(IDB_BTNCLOSE, RGB(0xFF, 0x00, 0xFF)); - - m_btnScrCap.SetBackColor(RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26)); - m_btnScrCap.EnableFrameEffect(FALSE); - m_btnScrCap.SetBackImage(IDB_BTNSCRCAP_VIDEO, RGB(0x26, 0x26, 0x26)); - - m_btnMessage.SetBackColor(RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26)); - m_btnMessage.EnableFrameEffect(FALSE); - m_btnMessage.SetBackImage(IDB_BTNMSG_VIDEO, RGB(0x26, 0x26, 0x26)); - - m_btnMode.SetBackColor(RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26)); - m_btnMode.EnableFrameEffect(FALSE); - m_btnMode.SetBackImage(IDB_BTNAUDIO_VIDEO, RGB(0x26, 0x26, 0x26)); - - m_btnAudio.SetBackColor(RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26)); - m_btnAudio.EnableFrameEffect(FALSE); - m_btnAudio.SetBackImage(IDB_BTNMAUDIO_VIDEO, RGB(0x26, 0x26, 0x26)); - - m_btnShow.SetBackColor(RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26)); - m_btnShow.EnableFrameEffect(FALSE); - m_btnShow.SetBackImage(IDB_BTNFULLSCR_VIDEO, RGB(0x26, 0x26, 0x26)); - - m_btnEndCall.SetBackColor(RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26)); - m_btnEndCall.EnableFrameEffect(FALSE); - m_btnEndCall.SetBackImage(IDB_BTNENDCALL_VIDEO, RGB(0x26, 0x26, 0x26)); - - m_btnMore.SetBackColor(RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26), RGB(0x26, 0x26, 0x26)); - m_btnMore.EnableFrameEffect(FALSE); - m_btnMore.SetBackImage(IDB_BTNMORE_VIDEO, RGB(0x26, 0x26, 0x26)); -} - -void CVideoDlg::ShowVideo1() -{ - m_wndLocal.ShowWindow(SW_HIDE); - m_wndLocal.SetBigShowFlag(FALSE); - for (int nIndex = 0; nIndex < 4; nIndex++) { - m_wndVideo[nIndex].ShowWindow(SW_HIDE); - m_wndVideo[nIndex].SetBigShowFlag(FALSE); - } - - if (m_listWndInfo.GetCount() == 0) { - m_wndLocal.MoveWindow(&m_rcVideoArea, FALSE); - m_wndLocal.SetParent(this); - m_wndLocal.SetBigShowFlag(TRUE); - m_wndLocal.ShowWindow(SW_SHOW); - } - else { - m_wndVideo[0].MoveWindow(&m_rcVideoArea, FALSE); - m_wndVideo[0].ShowWindow(SW_SHOW); - m_wndVideo[0].SetBigShowFlag(TRUE); - m_wndVideo[0].SetParent(this); - - m_wndLocal.MoveWindow(&m_rcChildVideoArea, FALSE); - m_wndLocal.SetParent(&m_wndVideo[0]); - m_wndLocal.ShowWindow(SW_SHOW); - m_wndLocal.SetParent(&m_wndVideo[0]); - } - - m_nScreenMode = SCREEN_VIDEO1; - - ShowButtonsNormal(); -} - -void CVideoDlg::ShowVideo4() -{ - m_wndLocal.ShowWindow(SW_HIDE); - m_wndLocal.SetBigShowFlag(FALSE); - for (int nIndex = 0; nIndex < 4; nIndex++) { - m_wndVideo[nIndex].ShowWindow(SW_SHOW); - m_wndVideo[nIndex].SetBigShowFlag(FALSE); - m_wndVideo[nIndex].SetParent(this); - } - - m_wndVideo[0].MoveWindow(0, m_rcVideoArea.top, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - m_wndVideo[1].MoveWindow(m_rcVideoArea.Width() / 2, m_rcVideoArea.top, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - m_wndVideo[2].MoveWindow(0, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - m_wndVideo[3].MoveWindow(m_rcVideoArea.Width() / 2, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - - CRect rcLocal; - int nRemoteCount = m_listWndInfo.GetCount(); - - if (nRemoteCount == 2) - m_wndLocal.MoveWindow(0, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - else - m_wndLocal.MoveWindow(m_rcVideoArea.Width() / 2, m_rcVideoArea.top + m_rcVideoArea.Height() / 2, m_rcVideoArea.Width() / 2, m_rcVideoArea.Height() / 2, FALSE); - - m_wndVideo[nRemoteCount].ShowWindow(SW_HIDE); - m_wndLocal.SetParent(this); - m_wndLocal.ShowWindow(SW_SHOW); - - m_nScreenMode = SCREEN_VIDEO4; - - ShowButtonsNormal(); - -} - -void CVideoDlg::ShowMulti() -{ - int nLocalIndex = 0; - - m_wndLocal.ShowWindow(TRUE); - m_wndLocal.SetBigShowFlag(FALSE); - for (int nIndex = 0; nIndex < 4; nIndex++) { - m_wndVideo[nIndex].ShowWindow(SW_HIDE); - m_wndVideo[nIndex].SetBigShowFlag(FALSE); - } - - if (m_lpBigShowed == NULL) - m_lpBigShowed = &m_wndVideo[0]; - - m_lpBigShowed->ShowWindow(SW_SHOW); - m_lpBigShowed->MoveWindow(&m_rcVideoArea, TRUE); - m_lpBigShowed->SetParent(this); - m_lpBigShowed->SetBigShowFlag(TRUE); - - for (int nIndex = 0; nIndex < 4; nIndex++) { - int nXPos = (m_rcVideoArea.Width() / 2) - 402 + (204 * nLocalIndex); - int nYPos = m_rcVideoArea.top + 16; - - if (!m_wndVideo[nIndex].IsBigShow()) { - if (m_wndVideo[nIndex].GetUID() != 0) { - m_wndVideo[nIndex].MoveWindow(nXPos, nYPos, 192, 144, TRUE); - m_wndVideo[nIndex].ShowWindow(SW_SHOW); - m_wndVideo[nIndex].SetParent(m_lpBigShowed); - nLocalIndex++; - } - } - else{ - m_wndLocal.MoveWindow(nXPos, nYPos, 192, 144, TRUE); - m_wndLocal.ShowWindow(SW_SHOW); - m_wndLocal.SetParent(m_lpBigShowed); - nLocalIndex++; - } - } - - m_nScreenMode = SCREEN_VIDEOMULTI; - - ShowButtonsNormal(); -} - -BOOL CVideoDlg::OnInitDialog() -{ - CDialogEx::OnInitDialog(); - - m_dlgDevice.Create(CDeviceDlg::IDD, this); - m_dlgDevice.EnableDeviceTest(FALSE); - - m_dlgScreenCapture.Create(CAGScreenCaptureDlg::IDD, this); - m_dlgDesktopCapture.Create(CAGDesktopCaptureDlg::IDD, this); - m_dlgChat.Create(CChatDlg::IDD, this); - InitCtrls(); - - m_bitMenuInfo.LoadBitmap(IDB_MENU_INFO); - m_bitMenuDevice.LoadBitmap(IDB_MENU_DEVICE); - m_bitMenuFilter.LoadBitmap(IDB_MENU_FILTER); - - return TRUE; // return TRUE unless you set the focus to a control -} - - -HWND CVideoDlg::GetRemoteVideoWnd(int nIndex) -{ - if (nIndex < 0 || nIndex > 3) - return NULL; - - return m_wndVideo[nIndex].GetSafeHwnd(); -} - - -void CVideoDlg::RebindVideoWnd() -{ - if (m_wndVideo[0].GetSafeHwnd() == NULL || m_wndLocal.GetSafeHwnd() == NULL) - return; - - VideoCanvas canvas; - - canvas.renderMode = RENDER_MODE_FIT; - - POSITION pos = m_listWndInfo.GetHeadPosition(); - for (int nIndex = 0; nIndex < 4; nIndex++) { - if (pos != NULL) { - AGVIDEO_WNDINFO &agvWndInfo = m_listWndInfo.GetNext(pos); - canvas.uid = agvWndInfo.nUID; - canvas.view = m_wndVideo[nIndex].GetSafeHwnd(); - agvWndInfo.nIndex = nIndex; - - CAgoraObject::GetEngine()->setupRemoteVideo(canvas); - m_wndVideo[nIndex].SetUID(canvas.uid); - m_wndVideo[nIndex].SetVideoResolution(agvWndInfo.nWidth, agvWndInfo.nHeight); - m_wndVideo[nIndex].SetFrameRateInfo(agvWndInfo.nFramerate); - m_wndVideo[nIndex].SetBitrateInfo(agvWndInfo.nBitrate); - } - else - m_wndVideo[nIndex].SetUID(0); - } - - if (m_nScreenMode != SCREEN_VIDEOMULTI) { - if (m_listWndInfo.GetCount() <= 1) - ShowVideo1(); - else if (m_listWndInfo.GetCount() > 1 && m_listWndInfo.GetCount() < 4) - ShowVideo4(); - else - ShowMulti(); - } - else - ShowMulti(); -} - -BOOL CVideoDlg::PreTranslateMessage(MSG* pMsg) -{ - if (pMsg->message == WM_KEYDOWN){ - switch (pMsg->wParam){ - case VK_RETURN: - return FALSE; - case VK_ESCAPE: - if (m_bFullScreen) - OnBnClickedBtnfullscr(); - - return FALSE; - } - } - - return CDialogEx::PreTranslateMessage(pMsg); -} - -LRESULT CVideoDlg::OnShowModeChanged(WPARAM wParam, LPARAM lParam) -{ - if (m_nScreenMode == SCREEN_VIDEOMULTI) { - if (m_listWndInfo.GetCount() <= 1) - ShowVideo1(); - else if (m_listWndInfo.GetCount() > 1 && m_listWndInfo.GetCount() < 4) - ShowVideo4(); - } - else { - m_lpBigShowed = (CAGVideoWnd *)wParam; - ShowMulti(); - } - - return 0; -} - -LRESULT CVideoDlg::OnShowBig(WPARAM wParam, LPARAM lParam) -{ - CRect rcNextBig; - CRect rcCurBig; - - if (m_nScreenMode != SCREEN_VIDEOMULTI) - return 0; - - CAGVideoWnd *lpNextBigWnd = (CAGVideoWnd *)wParam; - if (lpNextBigWnd == m_lpBigShowed) - return 0; - - ShowMulti(); - m_lpBigShowed = lpNextBigWnd; - - return 0; -} - -LRESULT CVideoDlg::OnWindowShareStart(WPARAM wParam, LPARAM lParam) -{ - HWND hShareWnd = (HWND)wParam; - if (hShareWnd == GetSafeHwnd()) { - CAgoraObject::GetAgoraObject()->EnableLocalRender(FALSE); - m_wndLocal.Invalidate(TRUE); - } - - CAgoraObject::GetAgoraObject()->EnableScreenCapture((HWND)wParam, 15, NULL, TRUE); - m_btnScrCap.SwitchButtonStatus(CAGButton::AGBTN_PUSH); - - return 0; -} - -LRESULT CVideoDlg::OnDesktopShareStart(WPARAM wParam, LPARAM lParam) -{ - LPDESKTOP_SHARE_PARAM lpDesktopShareParam = (LPDESKTOP_SHARE_PARAM)(wParam); - CRect rcRegion; - - CAgoraObject::GetAgoraObject()->EnableVideo(); - - rcRegion.left = lpDesktopShareParam->nX; - rcRegion.top = lpDesktopShareParam->nY; - rcRegion.right = rcRegion.left + lpDesktopShareParam->nWidth; - rcRegion.bottom = rcRegion.top + lpDesktopShareParam->nHeight; - - CAgoraObject::GetAgoraObject()->EnableScreenCapture(NULL, lpDesktopShareParam->nFPS, &rcRegion, TRUE); - // Sleep(1000); - // CAgoraObject::GetAgoraObject()->SetVideoProfileEx(lpDesktopShareParam->nWidth, lpDesktopShareParam->nHeight, lpDesktopShareParam->nFPS, lpDesktopShareParam->nBitrate); - - m_btnScrCap.SwitchButtonStatus(CAGButton::AGBTN_PUSH); - - return 0; -} - -void CVideoDlg::OnShowWindow(BOOL bShow, UINT nStatus) -{ - CDialogEx::OnShowWindow(bShow, nStatus); - - if (bShow && GetSafeHwnd() != NULL) - RebindVideoWnd(); -} - - -void CVideoDlg::OnMove(int x, int y) -{ - CDialogEx::OnMove(x, y); - - CRect rcChatBox; - - rcChatBox.SetRect(x, y + m_rcVideoArea.Height() - 126, x + m_rcVideoArea.Width(), y + m_rcVideoArea.Height() + 24); - - if (::IsWindow(m_dlgChat.GetSafeHwnd()) && m_dlgChat.IsWindowVisible()){ - m_dlgChat.MoveWindow(&rcChatBox); - } -} diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/VideoDlg.h b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/VideoDlg.h deleted file mode 100644 index ccf65a27..00000000 --- a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/VideoDlg.h +++ /dev/null @@ -1,180 +0,0 @@ -#pragma once -#include "AGButton.h" -#include "AGVideoWnd.h" -#include "DeviceDlg.h" -#include "AGScreenCaptureDlg.h" -#include "AGDesktopCaptureDlg.h" -#include "ChatDlg.h" - -// CVideoDlg Ի - -class CVideoDlg : public CDialogEx -{ - DECLARE_DYNAMIC(CVideoDlg) - -public: - CVideoDlg(CWnd* pParent = NULL); // 캯 - virtual ~CVideoDlg(); - -// Ի - enum { IDD = IDD_VIDEO_DIALOG }; - - enum { - SCREEN_VIDEO1 = 0, // - SCREEN_VIDEO4, // 4 - SCREEN_VIDEOMULTI, // 14С -// SCREEN_WHITEBOARD // װ - }; - -// enum { -// WHITEBOARD_HOST = 0, -// WHITEBOARD_GUEST -// }; - - HWND GetRemoteVideoWnd(int nIndex); - HWND GetLocalVideoWnd() { return m_wndLocal.GetSafeHwnd(); }; - - void RebindVideoWnd(); - - void ShowControlButton(BOOL bShow = TRUE); - -protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧ - virtual BOOL OnInitDialog(); - virtual BOOL PreTranslateMessage(MSG* pMsg); - - afx_msg void OnMouseMove(UINT nFlags, CPoint point); - afx_msg void OnSize(UINT nType, int cx, int cy); - afx_msg void OnPaint(); - afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); - afx_msg void OnMove(int x, int y); - - afx_msg LRESULT OnNcHitTest(CPoint point); - afx_msg LRESULT OnShowModeChanged(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnShowBig(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnWindowShareStart(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnDesktopShareStart(WPARAM wParam, LPARAM lParam); - - afx_msg void OnBnClickedBtnmin(); - afx_msg void OnBnClickedBtnclose(); - afx_msg void OnBnClickedBtnrest(); - - afx_msg void OnBnClickedBtnmessage(); - afx_msg void OnBnClickedBtnmode(); - afx_msg void OnBnClickedBtnaudio(); - afx_msg void OnBnClickedBtnScreenCapture(); - afx_msg void OnBnCliekedBtnWhiteBoard(); - afx_msg void OnBnCliekedBtnCloseWhiteBoard(); - afx_msg void OnBnClickedBtnMore(); - - afx_msg void OnBnClickedBtntip(); - afx_msg void OnBnClickedBtnsetup(); - afx_msg void OnBnClickedBtnfilter(); - - afx_msg void OnBnClickedBtnfullscr(); - - afx_msg void OnBnClickedScreenshare(); - afx_msg void OnBnClickedWindowshare(); - - afx_msg void OnBnClickedHostMode(); - afx_msg void OnBnClickedGuestMode(); - // ڴĻصϢ - afx_msg LRESULT OnEIDJoinChannelSuccess(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnEIDReJoinChannelSuccess(WPARAM wParam, LPARAM lParam); - - afx_msg LRESULT OnEIDFirstLocalFrame(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnEIDFirstRemoteFrameDecoded(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnEIDUserJoined(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnEIDUserOffline(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnEIDConnectionLost(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnEIDVideoDeviceChanged(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnRemoteVideoStat(WPARAM wParam, LPARAM lParam); - - afx_msg LRESULT OnStartRecordingService(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnStopRecordingService(WPARAM wParam, LPARAM lParam); - afx_msg LRESULT OnApiCallExecuted(WPARAM wParam, LPARAM lParam); - - afx_msg LRESULT OnStreamMessage(WPARAM wParam, LPARAM lParam); - - DECLARE_MESSAGE_MAP() - -protected: - BOOL NeedShowSizeBox(CPoint point); - void EnableSize(BOOL bEnable); - void CreateScreenShareMenu(); - void CreateMoreMenu(); - - void DrawHead(CDC *pDC); - - void InitCtrls(); - - void ShowVideo1(); - void ShowVideo4(); - void ShowMulti(); - - void ShowButtonsNormal(); - - void AdjustButtonsNormal(int cx, int cy); - void AdjustSizeVideo1(int cx, int cy); - void AdjustSizeVideo4(int cx, int cy); - void AdjustSizeVideoMulti(int cx, int cy); - -private: - CBrush m_brHead; - - CAGButton m_btnMin; - CAGButton m_btnRst; - CAGButton m_btnClose; - - CAGButton m_btnMessage; - CAGButton m_btnMode; - CAGButton m_btnAudio; - CAGButton m_btnEndCall; - CAGButton m_btnScrCap; - CAGButton m_btnMore; - - CAGButton m_btnShow; - - BOOL m_bLastStat; - UINT m_nScreenMode; - UINT m_nBigShowedUID; - - CAGVideoWnd m_wndLocal; - CAGVideoWnd m_wndVideo[4]; - CAGVideoWnd *m_lpBigShowed; - - CDeviceDlg m_dlgDevice; - CChatDlg m_dlgChat; - - CAGScreenCaptureDlg m_dlgScreenCapture; - CAGDesktopCaptureDlg m_dlgDesktopCapture; - - CRect m_rcVideoArea; - CRect m_rcChildVideoArea; - - CBitmap m_bitMenuInfo; - CBitmap m_bitMenuDevice; - CBitmap m_bitMenuFilter; - -private: // data - - typedef struct _AGVIDEO_WNDINFO - { - UINT nUID; - int nIndex; - - UINT nWidth; - UINT nHeight; - int nBitrate; - int nFramerate; - int nCodec; - - } AGVIDEO_WNDINFO, *PAGVIDEO_WNDINFO, *LPAGVIDEO_WNDINFO; - - CList m_listWndInfo; - - BOOL m_bRecording; - BOOL m_bFullScreen; - BOOL m_bFilter; - BOOL m_bShowInfo; -}; diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BACKGROUND_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BACKGROUND_VIDEO.bmp deleted file mode 100644 index b4b583b71fed9bf14a2f2ef7cf6c00c527506ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27704 zcmeI5+fL>-5XWh6d)KQzLZ6`ObyYwsfk40wLV`-LfMCm+3eX-nilqX?L7ZWqwLg){ ziX7XYV|$!@Xd|(5CiZydAJ2F^cE0^%@b?cruh(z<`zwEc{r~qv&o7jEdVb{j&p#D^ zuLS=2GyB!o*EcvgI5ILaK0ZD*H8nFcGdnvwKR>^)u<+saqQEUg9#Mg6RHg|HvkRN4 zLsT0c9-f$(c>n(W-w_whVFIhSfmMHh|Jc~r^z=02A_5gdQy9V)=5&$i9VhLESBz;S zhoy=XUC &C!|L&9Xv-wIK4 zdZc&n-Vxd6S2LzZ1V-#MKE=spU|^u-Hf4hmu@T;>T c_CO83L6ELJ*|w)l8uRxzP!Br^z`(tWfvkLm{DLG(I=&bGY`lF zo}Hbw44!X@WW&KmNAZqx8Od8)a|iw7$B%8p2ay~C+a965!^%J}IKh5@f8QR65XOdp zn~wU9Ar!L+-QVAD4?cT)du|*YPaR9wn0+gp;lsm28z4fAx}LcV7a$l-EIuG?i5Cj< zJY|TC;Uc@V y3Lt6|J!eG%nAn;S*x%jV I3Vpe7O0Yn|ail4d4oXh3UpFcl7J~~k1z2i|24-c7iwzs$cdA%rn`t%7R zkKE%Bo1%+yj|t0a78A{b5sDBxYSA@X9~~WSZf^Rh17=j#fPx`xW8$2SU8}rVz=E_R zbFISC($db(4q1?^t1I3(w_1gcw=|(4%}-8FVAZjHd<9^^1z~0JtYSFeI#B%J;Na`m zujl9I*c1q0To6}RS7SKGw*{QK*`D}L3l4?dU0z P6pya2uYoSP`}NcUa5!4* zSvgfTECtt5D@G#O#fTF1Hb(7=L)ykiLPVTxaDWY@c|4EOy*R s zV{yB?yV7zh{w&0@?EofB5FH;MD-}cwfD@DR@t2K} Cz)7;LW0Wd`^C{4lo5cW!C74mW zcp{!tVzg9wk}ryv*2tmwblUhRo=Co{s*40A$)2E5-{QM+ R ?&eqmeRTl}0(EP6UcjWd5-J63+ zup&MbT7s$lL99$@m3n%5ngj#~6Lvu2{Y;eufE3QB*o9AfK0$Ry+R&j|l1HR%Rd)#s z{(Zl<<6uCS>q#g%5giDKhPRORDox8aUjF4k4kzgK=r+qZmSR3o%@T&tRxqhmjeu zk6(R*RSHlPZm0aO+$^@XwuT|pRo`8oeKfWjtEwfTsF|yb4`sQ%9%7-$ok0yQg3lyS zRG9#R28+6lIUio_NTU$NC4q>5N676I0z1x!$9!L)p<%pb6h#^u2}vBjk$DoL`}+b0 zlH5dJ$d4}ycGv8qc^)|n#!8#km1U^{Lr7@3T9%nHP%AEClZbt^G6#t=iaS0|Q4nQ2 zF$GF2Kpbl{tclzXj!Sx ~{DZs?gy85@aM1S9}fCzWprJ*%q$N%7%kI^ydcU@eBz%f5H<^xN)4lz|1Mc0TL z69kqOuT^H*(sElvys))ZEgT$`S@vd5hNzjSV*$bHuF4&n#yldklp*Wb5fD`YVf>R_ zF^c=Q#lT742LF7JQZ2H80Ep3uxADOW!HB-(_R$>Z(J5WG78wmaydt}_8RBiaprdA; zu%^5JE$)%g&RLP buGrTBCj e(;%|NbrfIfF)FwST8a-tctnL}|9`8Vp8o*qkI`ZP diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNAUDIO_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNAUDIO_VIDEO.bmp deleted file mode 100644 index bcf55f4bc8d610ddb215a17c9938c8358a703a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27702 zcmeI5Ym8OZ6~_;W#>5Xz`=M#m^aE{bff0GkFeA_5Eif=3pde^au_#gy Tk~)_Ut+PoPGAa_uOes?#Xaj zXYIAuUUS#~uC?~#+!;_=Ha%#(%6M(hznA&fg@0{=@AJw<`_XU7KVbyHPcy%Yi;KsN z8#j0E+!ZTUY}vA9=gytKX}ln~g-H_vh-I!jn;zF)ciq&fQyKcmkt65Mox61D(tjE+ z2yS80gaBgMXwSS)`}XaJ^e_3v-95KF();L>Cx$bOwTzl=c z-Me=mJa}+rW#vsb-85msgj*Xg2yS80gaBgMX!q{ZwQJYOlP9lVzy3Mz3t_r+>C(k} zkPHO7b?Y{N{`?nTeDRY{KKa_?LJVQL&@qEyyhV$OI*hF-ty fzv{ej&x7aYn?iETD^Mp zM<0D8sQK!vuRP%MwHBiz-BIH4t9ywMN$#E4 cyWDwy$@jAGAKb+?p_-|vg|}%6LK!@@BHr0AJo@gRsVF5{8M`s z!gLWJp#)Vizqc>DUAuOD`}WNmIVOxyf+`gHj%~^H>eXw*h7DPPCAJd^QELt5#pvC; z_lXlH+^ER36@{qv8r~A>*sT>Zu@uXqvx05jwg)2JhaD+nCT0?m;h^S-6j4?5g zJB`BZ0`=IjWB2UY6N`f!8c>UJuXn@{qS8wx?AQQ9Ey|6dyvUwqT_o&WJlMTq`**WL zj@b((r~-|sMY)#|hS2rbUr#-pJ78=Ls71LkR5E${?YAE|a3BYaBy>eNLnPaASz^wd zIiG#@neF @uEO3l+4d79mw4 nkNoL3>Q~U zGqX;8wq-&kj%LuvNj)>`)Mr~JRN`m`jhocVY)jQV>8C9ljcueBV$jQFPK*DUS*JeR zii3^GXVAz=J&QAOF3vZfp m#| z(4mmX;&3X9gxR5vp+l?F>@Q^J`m}msfC*{#7fgq?K8*pUJ?t;2;B%nZ-}Pxp%F-eR znD(&0ke%z(>V*N?9`-l0-rGtGKNz65S&2n@Z>#l@BO_vf4vFk<%HCGiE6llIi9vxb z2Iy^8_Ba2B!AB5?0eYL2Epi78S`Av5A&_Q^+yNW5(e+NKLoD|u%n*CnB3HpjmCZ(R za+yB&Wbm&o5&THu?3hwWV}{tn7P%vgv>LQ9L+o)M$$0e9M_XrJh8bcHrz{-afByOB zPn|mD5J;;DGsGTFS%4q4F?ty@Cb9K_;K;K4;)kIz05ilM_mPZ>ii*~mmth9>aLUUO zd}zAkjyonzniMIsZ{NO1zR6s>c5Ua*ooj1rO=cX8F`V*pN0^5net6NMMUf!!S!sOr z)mKYOO3t4@AE`kz32~T#F%+(Ho+oZsea@)h{>o_lytOHsZ^G~JBSELO!SU5j$=a*H z4`yHtg{vd@(8T%`OKOoaoEnSdo6H+;ypiP;j{lj=I2vP+jPs`Off)c;wQ7|uR$g8{ zW5x`dFC3Pa$$eE-RdnZgTb!85#~2O@Y9~e#O!fi5E3dp_w+ B*BP={{h<0G}j?F&q?B$t%8cp43kP;NYSN01WCJJa$_IU-0wK>fj$w1~30ob?@CF zAqh$qjWN8Fao!YuSy>qX7&&sJEruid_wR4>HHX}XyXnpcM>8D+#w5 1)(jdZeOq4zfFA9F-z^P8rMyTr zt)3j_)18uuCVtLt4A$MPh#j*d#PmQIfEgIWSyP8YX%hT&?AXyxb1X`LjkviRO qE?l@!Gc~~~98K6m6oMEwY?y9} zBQS>J${{C)Zc(dnP*TF^AmQ`RKi2|+ADXsr->#XO*tKgHO+b{y1VJ#@O>u-eJN<|% zemFF!T^S-CsBA()x1T5^ytBC(27({3v0-X6Q+MAqO?8|$ET9617~3O4MhjyAW?&4* zmECS7e>DQ31IYy>m^n-EL+cGU++ZsiGGqu%ysNkjg15+)32`unk64^Hg}-FU62XtW zlCx&bnnhOHy?eLD4^4<^J%lwl+)D1-v15mTFmZDYV>t01=S|_07Wvim#m8jRrcGp} z4?g%nt*s9Bw7|ajsrK_~C~iYMDp^V>t1y@WV0GsNxxB?aU_pfB}BUSu5{U zS?TXpfyNJf#I%N9?Uf|AlKW1t4+Ml~HZ;p 9;^rF0@X& ?I(xoIXh{z(!928@4Zlo(U6P%E|G=AcU($dnyhYw3HX5xqu248#aH3&vLbm$Po zv17-y+DHOpcxVF0sWZ$m_yH#*F9DC^wabr!U2~h@F}*^`SI-E3yF?Ln_Xpc&DdOPb zSo~lBW?)RBPZ1z_X`I9ntlsDhMI1nE=+L23JOeEzad0AwD2+M@#^T8v(}R(;6fh3( zND~ietX#QLG{6DF1OW&J+PHBetq(r cBh!^8Ed@**ax@ *#oQ)Zi1AY?ompGcG9u|VYfcs(sE(JFBBS~Lg zZ@&3v3L6MM_>r*DOrQKE{$;7>p@$v<1MX|)%$ZVPQv)C=__^=C`zUO O$IqA1YM|Xu1SK z7$z=*NSy1DzY^C@kP?>z|0Fj)lx>ZUfE_NkvuU+ ZfOC~g}0@WBbwy74{zkW93!-x?h2qtm(p;{L3kX!^dLiFp`4_Cr5Yiv`k zrg3rN{9QX&6NG&x?5rHJ!>F-DF{V#|P)oxH3{=h#6h-sq&4XZ~q?JSxKJ$0m%WuB< zCKL8GYu1psHI_JB%~FpDQ%l1?d-g1YLQoXd)YL$nK7HEOW^#Py?;%HX`}^f;!oKX* zp!Aw%ERE}>mU={(S{m5=@d;HqLr@g0ouY_izlx1N{_}V3TuqR>nXoenC0l7M;XCH( zB15SIA20wI2#O-9py;TTL=w#36W0$T9W6{Eq~HhhSY6SQc;~LW?&8xet&~rs4`_4k zNDG^U&-$V1-w;iO3@W%t-|xTwzHWW{?YG&*Baulf Xej~5_7lr0nD`0QVp{teNBA7U>F zE7Zgk3 4oFxgADSuH#Bzn1opYLs9}pFiF>n3% zFC6X`{D2Melr2V-20!ExDSq6${L-CD2`Gk~=zj}-SWbNAnP(!qP~Q?HX%Zk+S64@h znM{nKkaO>!+FsTi@WZcv;lc&YF$vNu2@Z|`>CBlkW^0HBZ=U<7rk6uB_+dHm h4rkok~mj!7_EC&9rHAd$|@)<_z8w&3lJEz_qC znktA? IKm-7laxRN7PlC!#CbVS;yyo?=y$gO{$d#+E=HMs zJCRA*ixf`=Ki9fvNG7B?fNY*q4Xk#D>=jU}algj!3`TRWoqR`c=H(6sK z>y8YK0VaN^^a{`K0HJTn^E>#C)!M89kYh)NHo+q_M=b2L(mEW5w(TiAKd7^q{rn(r z7jysCIVT?iTjBX-ovK ~PGfe_0hiATIb-p}#2@cjubG1EMY|HgfPf<$cQwrn@# zhzif{48(ADrZ73IV);B(kxE`;AciwXx9P(7x7hDVh*S9fsL&e{x-EQvROk({Z-G!= zqY%nHzkEz=;}MU%Mj@1Ye)*W#1B43SUuVO{ RTa2u)_m(~KUqiD}EW zheRgd$Wi$IO#96d4&`*}GcpvSHf}^WpY7Vzzfr32{k?it9!YS}g|#@hUmUGW>RFsg zWoZ#5s6wG*xWpzN;AL?pl|Y0NRE54*C(!^~fOR1WM4WGDqe?v{U- M*K(a;7DGLtj_}~XIgz1tZlFeU)L!gDfpJKitaWtpA*xx6la9o+Q zg*-IDb2nTN+`^;@0mR}oq|4{X83zR!n&ZlxE##pIp1a|K;8vYsF8uu_=ihJQfDH$J K0A*YWSIm`h&wEh>IIBkZ`7bd7lOOm!+ajnsX)-!vEWA|f_oXD{T39vv^j6h z>V&r&*S(Vd@;maM4EYfK`zmBkv5uwyt>P>AkeiU=*3`x#9A*Rt&`i;YpxI&pgHxbA z&2G{TLyU5hTD6SOw3xJq0jd`;a<&~Iq IDsG?2OR*|5J z(*D$+nn2Yc0g(#I{7|WC)h4YfAw@z7B%y>DLXy5BS`v{E9K-Z8bIkbeot- )pj_ zXEb*1 (kxC!yBKTm^wAP=k?u> z{cZ0PpK(*5N+VqmKvs_Q(s}CY>e||~sqTZlea~k4&t^Bgnj3tbn*voD>4E^V(q)&! z!9Y#T9j$Gdj>J$`a%(a*l}zt+?$i`j8tH T`(SgHi1#>U3J zzNsyf$M+uic;6vA^o9SYRy23}HOrvm-Imn|UTX@LF#0a_9{i#IRHe*x;e1C7I~j zl -C%WRt RHOIyCFCEwVbZ*Xr4RB5CO0>~b~YzB6OM72jS9sg6^JzK^mP74wSMy;Nl z)t0hali@dH5W^z82tm~HpHg3L=dOL%1Ps%=?7?w6z0OW#!f(hRhDCT0f~esC^{73G z&Q00%zY{Q|`rc~py!4HRH@><${Dur-ScDfLh>ALDFkMS)I+b2T4yb5pUjmH4Cg?YC zf*6)X6s2bn6+BLOPg8U2(CD*^$k}Lh^@d}nD6U`}*tm!y1R^$k>|zv6P0iE!KZy15 zC)wd}%oN2HjGj9}AYzM+7T)H#<+Ufo`uLM?wOot>8$S( $Ce{ZA zO|6T5CI~P=?J#;MLLg$ppM{Sik?0$nI0bk{w^-@EGLfUg2_c9=AYu{j8!)6Hk?0k- zvunTIzo|^*sBl6EqCg{J5gszUubVhQ+|HW*w;MVx`B7173qmsePSk{0g!={zX=rL{ zOQv@Kp01QLB?Vz4dOJc8g+Rn2JY@L7?o@hseDWN&-Y{adrz-#+0TQAR=sL7>3{g0y zsg~*6w)fy|Y|ZSG%2fb70whGqbcS$-FlkWO*WNLd8@Pb2nSH)qA3jw@#1f(wr?Y_z z3{g0ysn*=wnd+X!)*W3@XR9bcVn#!t>(FKy!lZ%H=Yq$vGGValKq^&6tP3G4B80H4 z%vs|*Dux`@5g}IOM}&|A9(Q@w(fwvbV3b6LSdkwQLN0h5D-#AsK}D%Fh;<>9j{+fP z7V$ip{;GgSK!|YhLZK5GGmChh;jL8xj{phbK!|}tCo*Oh@jNYERRND64dD)i1}=n7 zWXvq$d0MLj9swJ|#S57yG9p`vd8*`jR1YRzh~W(3G?A^uJXP{MelNsuhH#q5R$`ti zc^=hGi5FrxLpV)jD=|-%Jdf(B#0xQ8P&m!XT2@ F2M5 Tbr_M zEuz2!$K(8$^9Ah4E}v@L+LUE$5d~CzIA6ey?DDC`txZ|B7EwUe$332KcKM>4zEYI3 zwTJ?qKAdmL*;d&*%*#O U&Y+F(W< zg+Uz`G;rQ?iTENp+bVm9c{x~OP A=ecA zknyEjv-V{aKn;{3*A)EJV8hw(cGMQxjz$^MmB9~5g9iH^IBcCeXPrH3y>Q$*@>JAF zo2VFKSYU)5A%-DP05wpCbY%=j(x3q|KR#y9&)c7VYG1x$zj)dnn=%o5av*~k78vi| zwGrZV`3oq38Yn}$GKM2*(14jIkGy~P?!DW$7cRZ^*)NWN#HOEt*z1A}Vpw4O{O&!3 zcwPPi3ZMqckgg1V%-cR|*X3ttoqKXJKQtUQ(k3c~7#870hzc03EE_>6L&m!^arBss zd*YXtdcFLz_4pGedT;^(Wa@ F$^#V&rpEJ?Jc RVwHt{e7+Jz9q z5GVkCP==Q#FdV7New%tN^IxbB-YNh4KXz9(kcBP?v x~v&g zt Of;0&HmxdX&3JYqW zjQi@1ll^Wm?#YuH7M$wF@jw>3{MU;o1L+wW1;7u=@ZJrEBm3QNQ?KR52imiDs*mgo zWTDG{-FQEco`FyRHBiQV_2x3!@0vl?>h<>u{Ev(^w(T92MlI9j*XP=Glm9^h@PjhE zcZ1 V3zvhR^v)>w*^&3d!8-O6YwLDv&AKH=gxjII zb;{||E}YMFzGC=!^pJh8!1p`W`28#Pf$!KuTb3LVZigz3bZHmt2=M^vFO-Cz?X&OR zyQjOL-~9I0&fRm#%u<3PZigz3bounTj}R4OTDc_r^sMp2A-`$N@ffX2Iz2vwDvfmc zFN6f)O~p@?`3wIrHEW$ZrGa9pN_fm2bioL_!N1W}()@+F_aC ?3#kqFt3 z8EIiIgWU`sZ~lrBKa1&;z1IGN*7Gj}!K6q##IV3<1`oX@#m{2s%zzU%U!7A;5mJU2 z78q5i6fKt&KZ~t7D<^FJ>y V@L-3(bjXRXKv^{31R-_2VZ#Kh@BpRSBNG^HYxC c9ItAAe;EkH-%p6YpWvZID@eks;rj{Thb#Vmi#&&*-|_cb zf}V`m9)CZ|dlW?r@%N*OJ{Gmng;4zcI`xqhlpP4g->)lpBzlF3EdG9`{!o-U6PbLG zBmRD-@>B|ngwwJjBQu$=WR(4Nh5wW9_nP0)FzhzND6a>yRR5p(ey<>jMLqjM@%O_E z{#_MT*qjkZg!TE*LHzyj!pGy(*q!EpBmVmZ{wE_X{40z9enHT~@!C0N<)mJcJ=}L~ z h}a#=q9s-`}sO zsPJ}k>$}gcZjWW@zvm-4$D?e%jjFK6Z`1zP^Hj0)Ib?i;FHik7s6Pii?Z={hXej zT2wB@?d|PYEavZL>stpLaQ*fuCzk)NzaJNyGhJ_QZ(d%WzaJ-@+1c6Z>S}){tR!|W zp BGuvk^DIM04LIaIy-7UX~1#vNdpdkG@mr!;79XG1CEo= z#Kc50nPe)`(DAdmxmj0N7s&~WHJ@J}=H7{4kLpMB>F(|>EG&%bN5>DE$;rt`MU_o2 zQtE|&x3;$G>+2)klIDZv>7(4*L^MR251O8yo}!|nNcSUrNUO22F}a+Ynu>%-xR6%s z>+5m}qK1YB|63A199U0=UzW?K4|D3GAQC>LRaaM+Tt-D?fB>heswy6jkB^Vrh$<^9 zJ%5@30-WaNW?b2bIKrBmnmqj&Ai!y=xK?@l#*^V(LBtVOU+x=428gLS9OwZ={zoc( z4xz#?GWSo (Qh#&(8;21wOH8mR>8xlo3J3F3;AOi>B7(dnV8^3&UiRc-K zl3oWHeGZ`_rxlfl`eR3tCnA7|6LU)xXB!a>q|t|emzS3Z{M6RgQlbUX>gsB^2Q!-} zxfv^Xq0gZ>Q=%n`etdAn#}6?R=yL*yT3cIv{5aQ8c?c?^XmoV6q@={T#z#qUrv89v zZEY=$Gf}pnI8%Q>^z-MhB;JqEMT-X`P@D-WqNt;zBR@YsFdONTv>F;3$^?$tuCcLk zWo0E3IL6Nh$?HEnxRMDR;|D}UPKIzaNkD zy1|kLy4Ahtr4|Uz0+I&mbTIw`x##&A}VNjw3XJ7Ry@u- z4}JQI@6U&}(i+lgcX!uDM0GOD1_uX^kB<)z54DxnkXFyWJS*4c4@6Wav+R?$*EdG9 z{`@*yTWJk3LxW@=`qEt|5{Zw_hqiKRKt$vSB2G6nz*$&WFiNMDR)UDg5k$01AOg F6Q_o>0*fG`Wdad!{{H5FXih7w1d%z>3?*a`88}9xO;Tw9Vh()+gqB<2ph;z= z^#B2jAfmApI4Je{R2qPQMG*0rFK|$%veJ4v^bHUqiolVe((6Ms(ice}i4bC?r+6YW zeUVTSK`#!`@I+?%BB3Ngh?SlSAQCtTdU3c0M0PDoj}Kc=)%W)H1d9=PNfN%ho~3pC zedIEV(&K|$5ZSdz5a}JmH5`c4W5FUqxRstA7#N@+XU^w-%UMAdEF$O~!! UL6~~(@Evx*HN JQ)AT&(DAS z@yDl3nKFO={MD;hZ``=?kEsKKQyRGh18nhSyYy($qQ&UZqZ#^x4?Z|~^5o^qm;aYK zAULIwOEAFZB0YYercImnd8F-2&v#n=TIc;Mx*pxo?Od(=KyXSUmtcS`zHFBs&6_vx z(4j-GUcLJF?>}_t&=Dg>{33Nga7rVWV1Ug !-*i5`t=r{Y-6KD+!AuuA zS`QL~F)uH#OP4N#1`T@B`hb}(bc`{K1uHikld^T|R%_riV5B466P&e{En6;JxbWJw zYYH_tZ{D Z gsF&6V8JWL}fl}!v_=|uD*qw`t7YQZv0VQ)qQmpBKlKxAIx-7 zKtc$j0)B7X<|a*=bnDj5896455P~QK+K%nxd-&mpmn~c71eU-~2t=%JD659fojV^s zd^j8xajzl}u~x(Tm>zm4Z^y!}YWA@w7uJ3^8Z+r|MMrIp5QtdcP*x3C)WL%Xn;6KP zMxdLa9x`Oe=FOV}agf0U#3J14ju=ctdWo1FKfn-+aAPPdvQuGeWp?U!bhxno`) A~!i}M#$)}%wy0*491B^s;ML0u5>v5Z7^5n^1 zef5=p>XT|gI78eXE&BgKMFnTKOP_`JsjIx#gh57h<-N+CA)Fzi^|;M}3H8r=vMu&j znwgE5{)8@DLWr473Mb)mEFr|qDxY;}%L8>4jWPmE8h6$Ru}Z!rgzf@(6clYBglEaB z rwlV-S(a2mj8DdsU@W6}&4@{|$Ts+cEbdG1ViHh`q85W|Ip(?qseig|)i#Bf33 zG%M@GS6e1jf@lU!yQpVno%m|Ygh~+2ph1gzwc3&~Px5ZdkH$tS7GlubVNQepSy?B( z+6sb=+0LM87xg4(f~Gjz?F`-E)}&5I&IC x*?6BJ=tlD I-gDpHwdtFd $PosdT5A_9Ud}{OUr#>l8m0Cmr zQy=OJZd0FBFBH)FP~UW`ZT0BUqm}RI*|Vnus8B$cS+PaBwiOFGl>gfL4*Yd2A&MCV zv`M7CscKtsGt9;LqGe<6r?{=*p~C%F>MDZ*T@=t|R_dE>#)k?xp{D1c(E(H_pv$b3 z$Q@>!F4VGrnL0YA4n@=GCJi+dq> Ed3Zzj(=|hR!VaDmgK8>!agRLwail)&`8fqwgVr|I)8|?F0 zzka<5lE+eq+2TN>hSG;!7O`gh^UpuObm@}WMeT1fTO4TAQ2MaT0{qCrs2zTemx&`w z8-Qd;N5RLkyPu7rQ2;fRKC!lBfQ=_ohY1p8q|Fuw8a2>|U0!kLn!RD2I(4e7tfV73 zz~#%AKax6Du3Q;cl!qT>crMteqxV|a%=@@;<9LY9oH+yYjT<+P969py)N%ay@mO-q zvFL~zC_~_?_Vd_Q)honvy+pU>;?VCUV9vcG_RkVUZRF?gv&H$ 0E1@|BTttuUCKlQnGG8@;3J5DNJ|zL7DBMH zn?8Mdq=X;_lwqTwIgd8oPhdX!f Pe*H*MI->|>*eEESSDeUs z&+DS?&m>@um5Fr|W&G2ziRkd4Bzm GhTqgPiIJxR2M%PS0StDixVV`3 z=b_XAL1R%-QKW<*29$AIdCi$K2eja|SbDEpw@%>!i$o@ec7iLnA_&T`*VG0x9-h5> z_Y&^%YhJ&8{o=)o>gws!r_q!4sZ*zZ^UXJ&E;gqq!(LPAylNWz-AYKy=Bc7pV==U& z_;k7W_aAQAoP!I*^kK4nOtJXyJMjz=3ZMqcxP>b`M})iF3Z`cG@Zky%SR@`a+VLhq z2nlaz6~=buAZrlbj-3H2*ud@Ew_}mUj2W|N(IUFco;@2>Pn rGq7Gz*6A@;?#;55JCaeKp85$ArqSR5|f360XF1Y zfDpF=niVs&TFQYX92#tCyN5KQ42!7{sHDAwodGIp2?k)G0nD~-+Xf660F4d7qd_Qh zlvYAeBgzoN*vzcSgPp-Lt0fqK0X7UxF&*8Y_wCz =Gz5W4~) zo^fbw2p$avWsXA7;=hD4ym=Een?dc&5$2AoEVzhs2zo)wv}w~eZQ6u)Cg$W4P@gel zMv#P{c9h}G8=ILmd3NmBp^}8hjvXV;!72iqHEY&fy?PZFKX2YVm|1KxsM*VgMj76_ zk@#WvyET5+j29|N__x_I&UwDKgiYD=;y>l0e}VYza0weyi`C=f;HUB))Ib^L-9L}v zEyTyJ<(Z0X#GU-$zri!l)MB3Z1$K0z|Q!=@(}Pa`>aWU4Sq^l9&m-_QIQV} z%0T%+64C;G9Q>D_edWAn&6 51g5=-@%5$4<-oMV4pc4%+z#T{1CUe l?jrkecNoE&SYWmG5t?`pt{Z!+Jr53O;4^`1nsc9a6 z&1p%fU5Ih_Z)h;!uu#Cn52pmuFwC7hR~6_rb0p!se?x--hlLxxgPyi+IVF&W;r;jD zR|R^_97#Cu-_ZEMVHG^k06&}(NW-wT^j3jhGlviv?%&X0z`Qf#CVo@_9R{qBF3@ZK za6;|hU<-%y{xKl2WXTeu9R(rat@1*VP)W;>`Tj8=@$ttW6YVGnv9eHkp-8BtWypO0 z7?9Zgnk>XC6GT!`<%L3^lJ-(k`^UfoKAq~Mf)M_T({PZ4T-E!>5a>{=GBHq5QBhr8 zZMMXvQ2;g6{wR!?+x}Gr16 V_JJ?p$}138K8UsYhBmimtc;$I70wrwCG!TqZm z444{hkv?@G2$skLsQKb&CabWxP)W;=0$LdeDxPU=!d+`b0aKsc{&^3^%>DD+C?5IT z`#Tz(x%YQGXz`q4d{pFYK4Q7|2Q_|j?+ J#XfE3=uVvObX~}W8 8uI$CQS-@2?A*Db zU zaqDSy!?R>57D8;K+w!Y~Bg@h^av&Dr{t?4la^IgBet)=1IGy;441tJ^96Bunk3izz zD22edPnOm#_x-*4Rs<0&>d6Zwl3GLvq7WD~mQ6b^@RFQK#1J6_QJ(MBvC+Z9ll%T~ z&kgaPlAWf$;9Mi4Bi#|=m+aQU5|a9Yu8~>RxilLc=^nlgjineMq`;B;`vu`Qjrt}f z@>rWaV5W;MjE2jPdlf)ZB4?KcJA8ENID~)=X1XMZWK-w7+}}?zZ$~iAE-$LLm=v}v zv%`~@CV20L1A B}1{U(Z` M>?HJ;v}`8n{}R@r^Z)<= diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMAX.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMAX.bmp deleted file mode 100644 index 67d9c69f6aad84accd6963832edb0307bed751e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5862 zcmeH|!3}^Q3`Oe_#u1#r0la&600(poCvgp|zyW9=jWu5U1W*e6w2vzDa`xoQ#Qn%^ z<#wAo8n`Fg sRU(A_w7H)vjL&4uKUofJ6G#ARqpm5Anw;9%+VD-tD)ZT|xMr m8!Db>H&?!+94Qp+QP>qqw~MhNii`=?g8&GC00@A9CvX8_8>;vK diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMIN.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMIN.bmp deleted file mode 100644 index 75ec49c88fce5dbe8ce54e9f56f98fc3f471a945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5862 zcmeI!!3}^Q429vkgmDBXZ~*V#9l!w{!%1ADJ_+Zh3B-#(fhIs`;Om8TyGJW+QJgh) zjdy9VNzv@A`(;vto6`|M009ILKmY**5a=o3VN3i!kIRFexoU7+TbT^u8$Qa={)+Yt Z9UKxBPgR6G2q1s}0tg_000KV{cmPX9L)ZWS diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMORE_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMORE_VIDEO.bmp deleted file mode 100644 index 3d66409df0d263e7c1cd5e61a2f05917eba0f8b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27704 zcmeI5yGvz99LG)CbgA+e#20SVXjF7r2rDYA;0r+$5N)(bVWHS8TWl9t*hWEYEUW~T z)ih!i^A8BNHg;lTC1McVe7FO{I5TJNoX0(9Aameeelx$PXTEpNJbq{Vb-e$NrrPxj z-z|Lp=F`dNo2DQ5Zfg1#{`cRBPpyKlAJbpm-QBaZv+L{YpFVxs-QC^a-~Up(AShA^ z3jxH^+s>lV(b2K8vV!aL^YiQL>$|(Ve`^;6MJiz-fLIpm>2*Sjr@g(szrTNYczAq# zd}d~5Zf@?k+66(8N>~UWmi})|q0!aVwY0RfwYBw^_k}Pjot>R2+<1%j^z>|OY@D5) zJv=;o^|%m27!?$~oum*9EuOZvw%4y;Pfkw$?tLMQ3W_QIY!6ZH3|-36(UCWBUI?Oy zdV#I>>eZ{ypFiK<-wV_{KR lqW!^0PV$W*`xrZDK$Bnd(-EiLcgzrVe`^#P1q1|yilV1g^J>d@k8Zf<__ z=1pegs4&6^rZDJrBWyy0gM-`K+nK Mc;vfeDvlzEEh^vl~ULoC%2{6oJ+~wQG3oV|$zCOmo z`2k~Ez%0gX_aL!uVPWCq ZoEI7m4l-#@gE2 9^JjFD}F#yl!)R2p}V;WU76(3nSsjY{Lr@hb~09!9ne8uKKf z2zN=tX=c`i&$d*kB+)pvPU@K&7e3okp^`-7)H LxYq6ui^GL15@tghuC>)^I?0lsTq-7Ut@YBO z#lzxoA&Z3BP={-6b(;N!Y)xO376GV`W`99#(DG>l2ss}17qT^dQCb8b?+^Q%nfJDe z!Vdw+ZC3gsxwln5a)d_$kX>SE@vy&HVdo 7uAjAu|pW*{-jFD$b%5KE@6mx$g)t|u_~G{!i* #B kmw0E9s>p~b_%)!nRRatVe+!7>rz_C+ux3RZ;~(=Wk<77vMnWg^7w zi(o3Bd8vpZ7;;U`cC4y~U_y(BTvK -X_N3-VY>gx3L^ycQq zWIa7S{ZqRjOfD)YqHeOx8iENe9yV~@Z7R5IOplF?F&;35$(?^!yC6(1Dk!3EvdkKS z;iU<)9krSdA3pq4yI2X?+}u>TU Q7tAa!E($J$1|ft|5nPO@idLFnLW{>|!*q0Xlr2Rr# pI qkt{-ZcQHylWTxw0VG{FS5en>EJ|H1)@xPKwL8Y{v6 zMchBN;wSE(S^=X~vRK3xe9YglLMY~MXlT)jB7Xz?#QZTUeq#QZ1{kd<^T%TTs)?VN zzp9}{E2{acbU~HR!U%vc #REi-{pw+6HBW5<%B zVmMv+j0}UAP4eij=O GX)AdHGU z*vD!%e 2dK!v#T+N_ravvUNC3P5%L}mWCGq diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMSG_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNMSG_VIDEO.bmp deleted file mode 100644 index 7da4eb107c5cc0d06f31117bca56a6c716b20d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27704 zcmeI5TWl8B5yzLR5mNHfR;pT6ec&a<7z2i2V;f^*uEyNNrCgk-ATGf!Mj*gITbiUo zD&itADBMyN8=E#E7#zDut++@a^28&3pl?BuBG*uO0z`!%{p~mAc>R5QnX|iJq)OlF z eG8%D)lLPx*G7@6rFGx8z@@fv;cKUy~+H zTCrk9YisM_!-w13+b>+W@I~gLK$S+iAb`wXb{vjz =_s(zLuWJ9O`pZvh{`FaHf1mrIK$S+iAb`wXb{vkeW5-rh zRLq_|d*Q-`%a<=-y?XV#nTrBd8tH-nvN+P!JQF8QT(@rBi4!OOroJGCrL?qEJ%|P2 z eXk@o_(vhAcGhd7%hfTlNJ|`S=LZ?>UY&&_tZZA`}D{UWDvswqk0ev z!s6oMY15`HS+e9k^#w63Fj@?wAmxT*QZ8S C!Mj#Ht_!Q3zB`NdOTy zdGFr60|NsZz=YEv1X0OnZRMi!yIq6GdDJ`M;f0?KbdDV8aH2n*BO!)GfP@f41^nFF z=Fy`^*Vfj?MvfOo2tgDAwPWYdO`SUR^y$;Fz!J!WK*Z(@rD~|IuD*NsZa6Azdl86O z)$ln)B_+jIj@HQRV^1FZ q~%<2v&qMM6@2SDR%DM`TY6w+^J8i1>p?w zdbH^Om(-Vi)9bETtUd$h-tfX8QTf~(vYa8DA)@toO@Rr`o%eKG^j4agjhOzFx|I-O zX4Aq+xEv*fm|0n~{&VT=fsPT00OPZqjX
AJ0FOXX10hzHyjmVF^cW~|A!B99 ztL5<`ih&{*GFBF`JP$wrdD_Ssa=8%>gcvAtA!B7p*Up4X3t!0aZ1d#vcwyr$GhB!} z4dC rkbos3RD#M38nmgG-InX~q`z$CqH%=yLJa!a%^CJTJL}YUTS2h#wlk>j zrk=x@pefFGJ3|k %B}j>fAYW}93-K= z3 ^7SvU!)+MWrZ42gmo%ov)32M=c9B&2%azyZUkDWD9Ag6`s__MAUh5se%J zt>6Drho25dyl9jmQBXO#LRM2#lZBIzs_mHo%2@5Z_U+pjf)?Md{rmUp@rg3znrdcN zXs%zs9)cF%u4~t>>E)vgxu)*ob#att@w(V*0Uklo=dCITp#W;247sLy{4_K)grLQ@ zYySNCdil6d`fYe`Z!ci>1xZLFEc$>N%8;(CoL`n0R&8I9gfw!0UcP*(9Ky|={>XKH zNE(d94~tR#L~H!an&9-GjfM~kpa#n5x8ZDOm=|A=gfzmU#}CTzE2gv$M~)l`!AVG$ z-j_xhGTxPwi%T4WlaMaGFO4!}yu0`z4K>Pn#w9ijlT|_EOQQg4pbQaS<@~ZK4#7!C zm)@5~86KKY;%D2oZ3ZL+8QI>>n>SBd@N>ANOe0+o7-ATeL!b-~O(^lx+1Y78f+0P1 z>J&eYw0xMkq)a1S5Ex=M^~xbohKDAYI5&qm3O^rj9KugcvFk-Im^|3BbFsrmKt&^6 z5EzWHsgD$n0;qv9`he-onKKPYI8JBb;|@p*eh!zEX`~ARLyW(zgec1J yLK7;z^EJoWq9&NIk|@p9WsyrA#mNid6SkobLNNy3RG#N z3V|VpQ8@(4@Z61yAF|)0@blryAxMA_=zI3KEwy6@;X#2ajdXeUXfQ?!M*-A88GR(e z>p6?pgkb?BoYM+CC{Pt^1A)O0j7t2Vj2=H*wrnwwz{r3TSz&pu=MR|+eITHbE@PT# zfiWNW;h@q$0wV)XT3TA9< @^E1*$aC1%V;fZ{(S4{rbh`*Wkyh0HYE=R_oV| z8#e?Yw%;%+@nf}qb?+L&k3dEF4P!KZ?AI?&aSbG_3NR||59^oSe =bk1x6))u mfz0;&@WqQ491$y#0~y4y=<$O+v^qch=FiTWItvp7F)SMV z#5+I4l3@Rp$bk%Ez3~xz+Qu(Pv>;-ufe>W2X(2J<7euL=o0~Ndf(&9kc%Y0CzqtR2 z7D9jrVhwnpi5 h+o8rpK_kOXU`sZgHS{l1o~rVW1!;2PdQKS>gr gPbJsQ_hn=e&3l|6ljR(f b;U(a*ql)70!d?-+*kuIg#5whg@8_YOUQ(s@tZk=Nm=ADZIRT^#0j^Ib~ zH%Q@#kw0c8J;g$j{IMADh-AU@mwcNT`D0e_h$K#)KV~dOiUpHD1`cf EZ|DgZt#g z4`l-AsemDd5QffDhHByYK^|26e|dh8`C@Zdczzi(Rd{|m+*k!YzYK)f^A_HpP ks%PVkwg0u z;Mu1BMkxe_ILy9kn8w2Ud(Eu~DzK^Na3+ lW5ke4^^ Lx6&ZbG fh>;M*P62 ^T1eV7Y>0 diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNNORSCR_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNNORSCR_VIDEO.bmp deleted file mode 100644 index 6e043f8732b310fdb3f4e563cac9aa4966a41ba9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6966 zcmbuD%S&WO6o=br0%0KQymf|&1mBO)cKeLu6V2G5_(G9^1cEO7141_02W)4|K!}rw zZ!q9%k%izYAXz0OnGA!A5RGqK34)4aJ}f+Qa@*^zd;8Me{JQGYx%YmYI#qS<-4DML zy1c^te#rL$-#7WDT>c{H|M?B`<=^F%nVDHsR5Ua+R9;?=PUeb6qibtxjg5`TIALt0 z@Xk+Py zJ6_QEcDk%>b*#CM8IilYwPXp?d`!yR{Q(=SA;IMwzjIPtBpZZ zQxidTczCGo-89qc*+{A&`u$;ARrt0sZYWJBsGdJgbsMYOnO0!ABGlW_(IJRTS9f=} zw!cAx2o8d1e0&^4m6esVv$Ll0hOxS 3ri zqTk|a6(8MhEK7%s;g*^C!41Qui)p11wYRquGemM%SC`=?mY#yl!{ib~V`F0iheprg zVnF86h&DDh1P+MA%u|qgm|PM?zs6q`I5c_=7lTAZ0tZB5W+TWCOfEsBh0SoWsjaQu z+1ZgO(n4%(M0H8VpO0Q55>~$Wa3c^gxn!bgVe=T;hU9!LB5h-%NzU8b+nS8gHe
lWb57v+;YK>=1dbnasm?ip`MALW zlnoQHaf9P`e!0Q%m48_B^eV66pyio81%6n{b zL76%sd7A9KD3; z;PJ(W1)Y740}FqbmX?Nxhdm!d3`p{_V7*Y+`T6 Z+J|3O0dy!4f#TKZNGLyyZDu z3|P?F=QyyKzp+?M%#sxGcsvmuE%Wp9zD`>!D=WfG$JNo%5oZDWhy3x2TS82WzrRh1 zRlR5LNAIyU!=9d=;^Ja^Ki9&cabaPBly2`wGtv6w |>FH^If4?t3nu+MGC!tS2dE1vC%|tYC $*P9o&{1q%(aHOsASuYYSTCgARi%9q^E-val zB#3-f9RKaEu=ZBFbxZ(R7 { Ata%|H;bfuYFnW@gh4A|fXl bIOZ-OB65;}WBh=K$Vmo{@dF|v$H4gyhX>9A diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNRESTORE.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNRESTORE.bmp deleted file mode 100644 index cd1ef0e24f086fbb908ad723e78ad2d1aa74ef24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5862 zcmeH|-3`Jp41~iHh!L280eI(~0T_@mn1nTg^P?hk=gQ?C>nM%j5`Xa>Qn}vV$I{2e z*0Vi#dzy48CtFK-&i(#nF16I0nLs9x31kA9z&{C8XN3P*9 z7dk aOJ4{X{kO^c0nZVu> F_yEt$dB6Yw diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNSCRCAP_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNSCRCAP_VIDEO.bmp deleted file mode 100644 index e217776fa475eedfed3e57f10f5a4ddadcacd810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27702 zcmeI5TWl4_8OIkX5mFwi=Amj;^?`?`fH7c o}x!hVOCR}RQDgvohLCI4hA&@HZP}L|>R2@^05El_4k^a^LbJlzI^3CoZ zr&V`#Y-VP^8$18=%{MdOtn22NwOE5!8NbKy^EZBq_!(h+kKbI}|KwZhM>Sa1kIb*) z;^HMsmTcLwW&i&DCr_U2?(Y8M;6;Hdjog9&GIQBcIL413zjp0fRA0Mx?arM$_wV2T zYVe{!l}2ts09h32<~(D@jF~fi^1E+Wo@}f7 5fByWYrlw`fmc2Q6QJ_jAw;+HligYp0q)C%ju3UNK$dNyZFNk3&Dk>5y zF(51{DcQDd+tsUApFDZ;wcvsbVpw1_P$MQSC>YyVU)u3r)fbm)?q9AA{XhmWEHH|d z7!Vc|6ik~oZQ;U&KM`LL!vdp$8UZN}9G7zO;zcoVh7iICdxE_-VZwy=_V!1Q9x2p3 zfBswmpRY9;jIbj_@Lv~^;7NYoT+x3%3!8hr#dkj*HSp1Q2fAL*oP8~G`W5?g_BEi7PX3m`1+}tb%&JaQvVNb*zjU797&6+hAE?gJ_h)5NLAPRw^F7YAa zA@A6+Ba_KU0254u5JbiAwWSSZx6Zym&b^+Ace}rzIWsbI$_oFS83{2g3P=b+l+XWL z+B|yn=$e|E$jEWR2qB0 +x1DcARHAh zwT1t?aBk_BJ@%Nz=#x49suKpW%BNpd!x_R+5pKsz3S4MzzbD%w_tNxiNcSgnTL>X~ zHYuD0%Mn6|o>gPkzc0LzIW-~{U_6Gi5r|dtg%BDB@F*xsAjHU$SI^^w9*RN-GDeoX zdLAdDP!u|lF|sJnbNAd2l15H8 kSap9z*0JdhFD<|*cJ!p2!fT|hVu z;PVvoIAP-~qb}fEMr5mEo g!vCsh2( zDD|AwGqX;7w&jG1Um2x-lX^AVvSXg)hpk*Rj!>}>N?(RKL;huEo%n3a4>rzrlzL9; zS)B3f;(WKGddQ<0tgtxa*Twm6M|G|}EY8>gb6 NHMrm`5%rCQ ;tpto7sA{WAdL g(%&EVv+p7#5*$%utYKi(CjB(ld7M+_`-Da+Qz}{2MZe zVG#<)3}p{n V+@Ic!p;Q=bLY+_N)dtwGKgV;QK$lA Czt zj)tG>*RSKgG;-Kkn=@yQuIhpje(c=oHaqwsY0wluJ?~l#rCA8gE3s+|vsDc(A$~9b zGcbm92+_-V0zrP=^sGxG_&>^Y} -Y~4{4}ABa3c#`JcbMZ+-S_t8V-Y z% FDU7di(Zm7TcW= zGQtnWaA<;#vvZgY@pI}Ic2x6^4h!VePqu#bmR 2!w?A!2ry_82N^&Yy9Gy z1@K@8IXIuXx;m B7Q7CxndfgESs{H2gF)G Xgn7~YPibkXCnM8v zrcoL~M)<*)$oK&v+qZA`gwXEYyN4e?AcTb`PYCt(^$kCMh;TaAdPC^<8@~bkfRNd< zXL~}3)uG7vi9CKOgsfY)&XqF67ku8ldC~9_XZ%tKIdI^>!-o%@D0=+(G0Wi5@DpeJ zQW5g|%dCGM8-k+#-win&T(-_@xk1TU+ZI0ojRQyoiP$L`9CDHA3hbhS9xy_u`8# zUAlxn)VC-YjbCx%XN?e6yg~JqD_1}fDTO45=vx$w#;-W>vz}p<{LuPooz=bBM$s21 zthZ{j;DJUsei6Vke#MEOH9{Dzh*9~D )d)ZM!^rE0F8sVx zZ?)9B!6U~{{PjZ@PVmxPu12ax_+bGs-M?@KORjRdf8iN#>qgvHx_|1zjH;&lry3*y z1wtvd;M4pKPY9*?8v)4Smdf7%KWYA$Cw|iWv0(h@{IN8DH5Wf={%SCIocXJ`Ao(oJ zbHO=&BL-lGzS8`8y #4&Ha-lZNkBCQXz)-VwIDse1BCup&hOA=>G?rD zilyfVg9oqN^Ml}rwWIX>G7w77F9(Ci@BA_lO5dNrpqaiuApk#Ym=an56~Bv}(DeN+ zeh-KC^!+UX4@cc1+aX#QY|4eAP-7rS-yaqHlyH~<9wWh90iM}qAw8Q{FNAO*c$8s4 zD6emkLO3d14 Cd z1iDlhRXM=R;!Glr2qB1ay;sM`7)6}EKRooIu{g~BLgaV6q<_EQ|Mu?}IHAQhD?9bV zWDgbmKn#n1v5!+){4%I!i<~Tr^zWy5K1>d?vqespg?tJIF)aGUKAvLZH E> zbY(I;IW)l`ATA12Y2+3Jkj2*}k-#BJ5(QCBx-uE>9GV#X^G#n-platZr+>dG@b5Qq Q_MA*Yl?*0%;7*$V0Q=TlSpWb4 diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNSETUP_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNSETUP_VIDEO.bmp deleted file mode 100644 index 557d3a5159bdbf6600b9c0aeb9476b856abf94f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6966 zcmeI0ze)o^5QignYODntZNx&-2v_6~#FXJk$_N%dMJiKYkuHU`jo}IlgXxpPm+%oR zd $#Jgj@IMm+{?Mr0rEM|G0 zmu2~442Li_L$7x_o%wwJWekT<9~aABXD8F)!N=n+4-R2$hF)*ATHS8<)))? SOXC>27|$!Fv1#$*f6jekH?uY972)` zf?$db1DoY?d1VZTkfnl?l;U*Qgv@NTmtUUp;1E6!o668&iVXvsq9`tm;SiGiJ!vwT zh~1&Pu(1 )@y( zSY)I4EEbEk@Ogb$51(GIX94=Y>3sRf*nGO5!+fZw{%#Q^4uP$b&QSmkrF0Mb_{jbq z)j6v8A?fI!sLoNv4@sxLM|F-Wen>j~J*sn5@k5gSzEOM-nNt7M=HuwY+I-N5c3-9Q z w$Nzu+jgO-bB?q6c@^SQ` 85V diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNTIP_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNTIP_VIDEO.bmp deleted file mode 100644 index fd7da2ef347d37157e99b821cb68c4d8f29bb284..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6966 zcmeI1ziU)M5XY0kMlgk-h*nyNMY=!&nh>}y$Q7wVJPYxfGyw|>5iF7v76}&V6hXl> zffVNa2U1x2H$*$NPRiu;!yB`=Z{N=Bgx83;ygO%SXU5y_n_s)>bf<5ORb!g(JA5AT zxyEO_`i5Zr^MrhuRpWMU%*@QJtgLKpZSCyre5?ipQ b?$Gtao^Vx%|`!6njd3E92n{gfprZ8E`Y2 #1O9kgwYH)J32a2fT^(&LwKZFryk$G z{`K{^hD^*y4B@)=XvW)IUS2k_`Ll?a_UilnzTq}CbgBu$sEmHZ8MU#oae8`ML&2ON zjLMnz=-=nPD?fC%iNO&XVN^!?XB2_#K_-@I#y-xVfkUofH1UChO5#O0Ll&IjaJXL$ zh$dR7BwmCwXyAN!dWolr4;)kyFTxq(jmI?6#E3aD9eWY97FHl5??HnI#bAnLqJ 4r#gL20w^{dqxw^V4b|5qv)J2AT zo83Fi?d@%mfzV`77a8(x);(ap>|Yic2u%ick !pL9AMk%5TaCZ+{L-o6%DPJB?u z2r+9^D-S-XV}yEbR4WfYsAGh;A8$6HJ@}x45dvRx3@1K_VT1tG9K-29h+%}5Msp0O z{~(4DTABotcK7@V1&~{dwej$>7hM77~$;D9v_TwdWZo@XeT}xvGFO^cfq!ZPqDrW zwnco3^(i}^VqU=zjs91yUHVt!6=(5B>PyS{I3ZcbMNBB0SEiuIk1)7voYGKZtu z^_`8=+wj ?9cCLfZMX7+=owX)(T>=hI?*InSrX z_=?Y`pk&-{Xki84f4`x{l1WzoCT{{BzxJ7-7W{J|oT(zW?8k1;j!&2;c~T7ioc( zcoAaB%~))Ta;9AbC60s`!m(~l|5f*^^26{e@~v^>!4d*Z_lx%h{ZHP{hdr`=UMpQ6 zjWK5j1_V=>MPz~z2ppA`hU83RT>W|H7=kHG&4*+4KvTA8X-LjA#+)5^Aeh1o6)gxG Y1Z9hshU83RT>W{c2f-9(sA!4$Zx9ZWng9R* diff --git a/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNVIDEO_VIDEO.bmp b/Group-Video/OpenVideoCall-Windows/OpenVideoCall/res/IDB_BTNVIDEO_VIDEO.bmp deleted file mode 100644 index 78e342585fe75e154d165b46485ef47580472109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27702 zcmeI5O-xls6vrQl#>7Qa7fqX{3pcHRf`E#Ed=$}CF<=n2N}G__q}s%V3yEp#!ktN@ zr5jSyg@~pW6s)326W!E=eG^vgs-~uC9#&Sy=tldyZ(x`=_ujel?wj{8c5e7MGjqPU z^XJUhx%X}FX*{0EU5)