From 40afd7232731e76fffdcca422bb8670ca8cc558e Mon Sep 17 00:00:00 2001
From: atraczyk <andreastraczyk@gmail.com>
Date: Thu, 29 Dec 2016 19:33:09 -0500
Subject: [PATCH] video: better video frame copying

- uses memcpy instead of nested for loops to copy video buffers,
  as no operations are done per pixel, this gives a reduced copy
  time.

Change-Id: I43567997313d6aa8c9a0f8a56ccf0b8e6bcf963a
Tuleap: #790
---
 AboutPage.xaml          |   7 +------
 Package.appxmanifest    |   2 +-
 RingD.cpp               |   1 +
 RingD.h                 |  11 +++++++++++
 VideoCaptureManager.cpp |  25 +++++++------------------
 VideoCaptureManager.h   |   2 +-
 VideoPage.xaml.cpp      |  14 +-------------
 WelcomePage.xaml        |   6 +++++-
 _language-fr.appx       | Bin 4193 -> 4191 bytes
 _scale-100.appx         | Bin 44052 -> 44057 bytes
 _scale-125.appx         | Bin 55399 -> 55403 bytes
 _scale-150.appx         | Bin 66478 -> 66479 bytes
 _scale-400.appx         | Bin 220119 -> 220120 bytes
 ring-client-uwp.sln     |   3 ---
 14 files changed, 28 insertions(+), 43 deletions(-)

diff --git a/AboutPage.xaml b/AboutPage.xaml
index 2d7b795..ad8fcf4 100644
--- a/AboutPage.xaml
+++ b/AboutPage.xaml
@@ -72,18 +72,13 @@
                                 VerticalScrollBarVisibility="Hidden">
                     <StackPanel MaxWidth="500"
                                 Width="310">
-                        <TextBlock  Text="Ring v1.1.15.0_x64"
+                        <TextBlock  Text="Ring version: 2016/12/29"
                                     TextWrapping="Wrap"
                                     TextAlignment="Justify"
                                      Margin="0,0,0,24"
                                     FontSize="12"
                                     FontWeight="Bold"
                                     HorizontalAlignment="Center"/>
-                        <TextBlock  Text="version: 2016/12/14"
-                                    TextWrapping="Wrap"
-                                    TextAlignment="Justify"
-                                    FontSize="12"
-                                    HorizontalAlignment="Center"/>
                         <TextBlock  Text="Release: Beta 2 - Gaston Miron"
                                     TextWrapping="Wrap"
                                     TextAlignment="Justify"
diff --git a/Package.appxmanifest b/Package.appxmanifest
index 59fedef..209ddd8 100644
--- a/Package.appxmanifest
+++ b/Package.appxmanifest
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" IgnorableNamespaces="uap uap3 mp">
-  <Identity Name="Savoir-faireLinux.GNURing" Publisher="CN=8121A5F7-3CA1-4CAA-92B2-4F595B011941" Version="1.1.15.0" />
+  <Identity Name="Savoir-faireLinux.GNURing" Publisher="CN=8121A5F7-3CA1-4CAA-92B2-4F595B011941" Version="1.1.20.0" />
   <mp:PhoneIdentity PhoneProductId="2385953f-9019-423d-aa82-d1bbacfa258b" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
   <Properties>
     <DisplayName>GNU Ring</DisplayName>
diff --git a/RingD.cpp b/RingD.cpp
index b337db9..477a27b 100644
--- a/RingD.cpp
+++ b/RingD.cpp
@@ -947,6 +947,7 @@ RingD::RingD()
     localFolder_ = Utils::toString(ApplicationData::Current->LocalFolder->Path);
     callIdsList_ = ref new Vector<String^>();
     currentCallId = nullptr;
+    WriteLine("XBOX: " + isOnXBox.ToString());
 }
 
 std::string
diff --git a/RingD.h b/RingD.h
index da5038f..822ec25 100644
--- a/RingD.h
+++ b/RingD.h
@@ -19,6 +19,7 @@
 #include <dring.h>
 
 #include "Ringtone.h"
+#include "Utils.h"
 
 using namespace concurrency;
 
@@ -89,6 +90,16 @@ public:
         }
     }
 
+    property bool isOnXBox
+    {
+        bool get()
+        {
+            auto dev = Utils::toString(Windows::System::Profile::AnalyticsInfo::VersionInfo->DeviceFamily);
+            std::transform(dev.begin(), dev.end(), dev.begin(), ::tolower);
+            return !dev.compare("windows.xbox");
+        }
+    }
+
     property bool isInBackground;
     property StartingStatus _startingStatus;
 
diff --git a/VideoCaptureManager.cpp b/VideoCaptureManager.cpp
index e0e961f..2e91f6e 100644
--- a/VideoCaptureManager.cpp
+++ b/VideoCaptureManager.cpp
@@ -22,6 +22,8 @@
 #include "SmartPanel.xaml.h"
 
 #include <MemoryBuffer.h>   // IMemoryBufferByteAccess
+#include <algorithm>
+#include <chrono>
 
 using namespace RingClientUWP;
 using namespace RingClientUWP::Views;
@@ -58,7 +60,7 @@ VideoCaptureManager::VideoCaptureManager():
 })
 {
     deviceList = ref new Vector<Device^>();
-    InitializeCopyFrameDispatcher();
+    InitializeCopyFrameDispatcher(30);
     captureTaskTokenSource = new cancellation_token_source();
 }
 
@@ -358,11 +360,11 @@ VideoCaptureManager::AddVideoDeviceAsync(uint8_t index)
 }
 
 void
-VideoCaptureManager::InitializeCopyFrameDispatcher()
+VideoCaptureManager::InitializeCopyFrameDispatcher(unsigned frameRate)
 {
     try {
         TimeSpan timeSpan;
-        timeSpan.Duration = static_cast<long long>(1e7) / 30; // framerate
+        timeSpan.Duration = static_cast<long long>(1e7) / frameRate;
 
         if (videoFrameCopyInvoker != nullptr)
             delete(videoFrameCopyInvoker);
@@ -437,23 +439,10 @@ VideoCaptureManager::CopyFrameAsync()
                         byte* data;
                         unsigned capacity;
                         byteAccess->GetBuffer(&data, &capacity);
-
                         auto desc = buffer->GetPlaneDescription(0);
-
                         byte* buf = (byte*)DRing::obtainFrame(capacity);
-
-                        if (buf) {
-                            for (int row = 0; row < desc.Height; row++) {
-                                for (int col = 0; col < desc.Width; col++) {
-                                    auto currPixel = desc.StartIndex + desc.Stride * row
-                                                     + BYTES_PER_PIXEL * col;
-                                    buf[currPixel + 0] = data[currPixel + 0];
-                                    buf[currPixel + 1] = data[currPixel + 1];
-                                    buf[currPixel + 2] = data[currPixel + 2];
-                                }
-                            }
-                        }
-
+                        if (buf)
+                            std::memcpy(buf, data, static_cast<size_t>(capacity));
                         DRing::releaseFrame((void*)buf);
                     }
                     delete reference;
diff --git a/VideoCaptureManager.h b/VideoCaptureManager.h
index 32bc635..0676014 100644
--- a/VideoCaptureManager.h
+++ b/VideoCaptureManager.h
@@ -94,7 +94,7 @@ internal:
     DispatcherTimer^ videoFrameCopyInvoker;
     task<void> CopyFrameAsync();
     void CopyFrame(Object^ sender, Object^ e);
-    void InitializeCopyFrameDispatcher();
+    void InitializeCopyFrameDispatcher(unsigned frameRate);
 
     event StartPreviewing^ startPreviewing;
     event StopPreviewing^ stopPreviewing;
diff --git a/VideoPage.xaml.cpp b/VideoPage.xaml.cpp
index 1ec2c97..d513ebc 100644
--- a/VideoPage.xaml.cpp
+++ b/VideoPage.xaml.cpp
@@ -361,20 +361,8 @@ VideoPage::WriteFrameAsSoftwareBitmapAsync(String^ id, uint8_t* buf, int width,
         byte* data;
         unsigned capacity;
         byteAccess->GetBuffer(&data, &capacity);
-
         auto desc = buffer->GetPlaneDescription(0);
-
-        for (int row = 0; row < desc.Height; row++)
-        {
-            for (int col = 0; col < desc.Width; col++)
-            {
-                auto currPixel = desc.StartIndex + desc.Stride * row + BYTES_PER_PIXEL * col;
-
-                data[currPixel + 0] = buf[currPixel + 0];
-                data[currPixel + 1] = buf[currPixel + 1];
-                data[currPixel + 2] = buf[currPixel + 2];
-            }
-        }
+        std::memcpy(data, buf, static_cast<size_t>(capacity));
     }
     delete reference;
     delete buffer;
diff --git a/WelcomePage.xaml b/WelcomePage.xaml
index ce28060..edb2b53 100644
--- a/WelcomePage.xaml
+++ b/WelcomePage.xaml
@@ -41,7 +41,7 @@
                        HorizontalAlignment="Center"
                        Margin="0 10 0 30"
                        Height="150"/>
-            <TextBlock Text="Ring is free software for universal communication wich respects the freedoms and privacy of its users."
+            <TextBlock Text="Ring is free software for universal communication which respects the freedoms and privacy of its users."
                            Foreground="#707370"
                            MaxWidth="500"
                            Width="310"
@@ -50,6 +50,10 @@
                            FontSize="12"
                            FontWeight="Bold"
                            HorizontalAlignment="Center"/>
+            <HyperlinkButton    Content="Privacy Policy"
+                                FontSize="12"
+                                NavigateUri="https://ring.cx/en/about/privacy-and-anonymity"
+                                HorizontalAlignment="Center"/>
             <Button x:Name="_aboutButton_"
                     Margin="0,48,0,0"
                     BorderThickness="0"
diff --git a/_language-fr.appx b/_language-fr.appx
index 031c4df266ce7edcf453f745c33e0964793301e5..e746d12fb16dffb904cd71b667db035b955953a2 100644
GIT binary patch
delta 2276
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

delta 2235
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
K>;Ggs0Yv}<4oM3D

diff --git a/_scale-100.appx b/_scale-100.appx
index f1a2d01666bb727d4c4de62593830d5c56639c78..e5105619d48fbbca8f50d68553f2cdf40df24ab3 100644
GIT binary patch
delta 2515
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

delta 2531
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
WHW0kK5+WAh&BhL5ZJPXJwITpQo83nM

diff --git a/_scale-125.appx b/_scale-125.appx
index ffc069be9977f05eb313024bfeaa5a2a4671cc11..14f6ca91f010d745c58dfe653887beacf706f54f 100644
GIT binary patch
delta 2396
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

delta 2315
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

diff --git a/_scale-150.appx b/_scale-150.appx
index db75963bfbffdbacb116598fcc2172b743cc5ea8..a0ae140e3579481032563623d5c1e1e88351af90 100644
GIT binary patch
delta 2364
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
AjsO4v

delta 2343
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
VIU^%jG{BpU9mMdN-p9<S2ml?^cSHaH

diff --git a/_scale-400.appx b/_scale-400.appx
index e6aa98e376ead9f5e7e0811b7d7f2648731b2226..1bfdeab51a14996f145c4c910104b4bfb4e7427e 100644
GIT binary patch
delta 2650
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
Xy9h3fgp}+7-fZk3nX>8IqL~!|pMLhw

delta 2648
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
Uh=i2v0p4uvAeqwX+oPEk0gl$(?f?J)

diff --git a/ring-client-uwp.sln b/ring-client-uwp.sln
index b3b09cb..181264f 100644
--- a/ring-client-uwp.sln
+++ b/ring-client-uwp.sln
@@ -4,9 +4,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-client-uwp", "ring-client-uwp.vcxproj", "{90928671-346F-42E4-934F-7A7A512A2D11}"
-	ProjectSection(ProjectDependencies) = postProject
-		{79F8DE42-595D-49D9-A66F-55244FD9DCC3} = {79F8DE42-595D-49D9-A66F-55244FD9DCC3}
-	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-daemon", "..\ring-daemon\MSVC\ring-daemon.vcxproj", "{79F8DE42-595D-49D9-A66F-55244FD9DCC3}"
 EndProject
-- 
GitLab