├── .gitignore ├── Assets ├── Materials.meta ├── Materials │ ├── CubeMat.mat │ └── CubeMat.mat.meta ├── Plugins.meta ├── Plugins │ ├── WSA.meta │ ├── WSA │ │ ├── TexturesUWP.dll │ │ └── TexturesUWP.dll.meta │ ├── WebRtcWrapper.meta │ └── WebRtcWrapper │ │ ├── WebRtc.meta │ │ ├── WebRtc │ │ ├── Org.WebRtc.dll │ │ ├── Org.WebRtc.dll.meta │ │ ├── Org.WebRtc.winmd │ │ └── Org.WebRtc.winmd.meta │ │ ├── WebRtcWrapper.dll │ │ ├── WebRtcWrapper.dll.mdb │ │ ├── WebRtcWrapper.dll.mdb.meta │ │ ├── WebRtcWrapper.dll.meta │ │ └── WebRtcWrapper.pdb.meta ├── Scenes.meta ├── Scenes │ ├── HLPluginPerfTest.unity │ ├── HLPluginPerfTest.unity.meta │ ├── HLPluginPerfTestThread.unity │ ├── HLPluginPerfTestThread.unity.meta │ ├── RenderTexture.unity │ ├── RenderTexture.unity.meta │ ├── RenderTextureHL.unity │ ├── RenderTextureHL.unity.meta │ ├── StereoSideBySideTexture.unity │ └── StereoSideBySideTexture.unity.meta ├── Scripts.meta └── Scripts │ ├── CameraControl.cs │ ├── CameraControl.cs.meta │ ├── ControlScript.cs │ ├── ControlScript.cs.meta │ ├── UIControls.cs │ └── UIControls.cs.meta ├── ExternalProjects ├── .gitignore ├── WebRTCPeerConnectionServerExe │ └── peerconnection_server.exe └── WebRtcIntegration │ ├── .gitignore │ ├── TexturesUWP │ ├── TexturesUWP.cpp │ ├── TexturesUWP.def │ ├── TexturesUWP.h │ ├── TexturesUWP.vcxproj │ ├── TexturesUWP.vcxproj.filters │ ├── UnityPluginAPI │ │ ├── IUnityEventQueue.h │ │ ├── IUnityGraphics.h │ │ ├── IUnityGraphicsD3D11.h │ │ ├── IUnityGraphicsD3D12.h │ │ ├── IUnityGraphicsD3D9.h │ │ ├── IUnityGraphicsMetal.h │ │ └── IUnityInterface.h │ ├── VideoDecoder.cpp │ ├── VideoDecoder.h │ ├── defs.h │ ├── dllmain.cpp │ ├── libyuv │ │ ├── basic_types.h │ │ ├── compare.h │ │ ├── compare_row.h │ │ ├── convert.h │ │ ├── convert_argb.h │ │ ├── convert_from.h │ │ ├── convert_from_argb.h │ │ ├── cpu_id.h │ │ ├── libs.zip │ │ ├── libs │ │ │ ├── Debug │ │ │ │ ├── libyuv_win10_x64.lib │ │ │ │ └── libyuv_win10_x86.lib │ │ │ └── Release │ │ │ │ ├── libyuv_win10_x64.lib │ │ │ │ └── libyuv_win10_x86.lib │ │ ├── libyuv.h │ │ ├── mjpeg_decoder.h │ │ ├── planar_functions.h │ │ ├── rotate.h │ │ ├── rotate_argb.h │ │ ├── rotate_row.h │ │ ├── row.h │ │ ├── scale.h │ │ ├── scale_argb.h │ │ ├── scale_row.h │ │ ├── version.h │ │ └── video_common.h │ ├── macros.h │ ├── pch.cpp │ ├── pch.h │ └── targetver.h │ ├── WebRtcIntegration.sln │ ├── WebRtcWrapper │ ├── Model │ │ ├── IceServer.cs │ │ └── Peer.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── WebRtcWrapper.rd.xml │ ├── Signalling │ │ ├── Conductor.cs │ │ └── Signalling.cs │ ├── Utilities │ │ ├── ActionCommand.cs │ │ ├── AppPerf.cs │ │ ├── BoolToVisConverter.cs │ │ ├── InvertedBooleanConverter.cs │ │ ├── NtpService.cs │ │ ├── NullToVisibleConverter.cs │ │ ├── SdpUtils.cs │ │ ├── ToggleImageConverter.cs │ │ ├── UI │ │ │ ├── ErrorControl.xaml │ │ │ └── ErrorControl.xaml.cs │ │ ├── ValidableBase.cs │ │ ├── ValidableIntegerString.cs │ │ ├── ValidableNonEmptyString.cs │ │ ├── VideoCaptureFormat.cs │ │ └── XmlSerializer.cs │ ├── WebRtcControl.cs │ ├── WebRtcWrapper.csproj │ └── project.json │ └── XamlTestApp │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ ├── LockScreenLogo.scale-200.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ └── Wide310x150Logo.scale-200.png │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml │ ├── XamlTestApp.csproj │ └── project.json ├── License.txt ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset ├── README.md └── UnityPackageManager └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | # =============== # 2 | # Unity generated # 3 | # =============== # 4 | [Tt]emp/ 5 | [Oo]bj/ 6 | [Bb]uild/ 7 | [Ll]ibrary/ 8 | sysinfo.txt 9 | *.stackdump 10 | 11 | # ===================================== # 12 | # Visual Studio / MonoDevelop generated # 13 | # ===================================== # 14 | [Ee]xported[Oo]bj/ 15 | .vs/ 16 | /*.userprefs 17 | /*.csproj 18 | /*.pidb 19 | /*.suo 20 | /*.sln* 21 | /*.user 22 | /*.unityproj 23 | /*.booproj 24 | /WindowsStoreApp/ 25 | /App/ 26 | /UWP/ 27 | /Assets/*.pfx* 28 | /ExternalProjects/*.pfx* 29 | 30 | 31 | # ============ # 32 | # OS generated # 33 | # ============ # 34 | .DS_Store* 35 | ._* 36 | .Spotlight-V100 37 | .Trashes 38 | Icon? 39 | ehthumbs.db 40 | [Tt]humbs.db 41 | 42 | # Unity3D generated meta files 43 | *.pidb.meta 44 | 45 | # Unity3D Generated File On Crash Reports 46 | sysinfo.txt 47 | 48 | HoloToolkit-Examples -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f8402b3966e61e499724f6089401761 3 | folderAsset: yes 4 | timeCreated: 1491520886 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/CubeMat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: CubeMat 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_CustomRenderQueue: -1 15 | stringTagMap: {} 16 | disabledShaderPasses: [] 17 | m_SavedProperties: 18 | serializedVersion: 3 19 | m_TexEnvs: 20 | - _BumpMap: 21 | m_Texture: {fileID: 0} 22 | m_Scale: {x: 1, y: 1} 23 | m_Offset: {x: 0, y: 0} 24 | - _DetailAlbedoMap: 25 | m_Texture: {fileID: 0} 26 | m_Scale: {x: 1, y: 1} 27 | m_Offset: {x: 0, y: 0} 28 | - _DetailMask: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | - _DetailNormalMap: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - _EmissionMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _MainTex: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _MetallicGlossMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _OcclusionMap: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _ParallaxMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | m_Floats: 57 | - _BumpScale: 1 58 | - _Cutoff: 0.5 59 | - _DetailNormalMapScale: 1 60 | - _DstBlend: 0 61 | - _GlossMapScale: 1 62 | - _Glossiness: 0.5 63 | - _GlossyReflections: 1 64 | - _Metallic: 0 65 | - _Mode: 0 66 | - _OcclusionStrength: 1 67 | - _Parallax: 0.02 68 | - _SmoothnessTextureChannel: 0 69 | - _SpecularHighlights: 1 70 | - _SrcBlend: 1 71 | - _UVSec: 0 72 | - _ZWrite: 1 73 | m_Colors: 74 | - _Color: {r: 0.49264705, g: 0.49264705, b: 0.49264705, a: 1} 75 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 76 | -------------------------------------------------------------------------------- /Assets/Materials/CubeMat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d689a31b93a2039419d936660accdfad 3 | timeCreated: 1491520746 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21603b86e817ac041b135dc73f16b40f 3 | folderAsset: yes 4 | timeCreated: 1491427551 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/WSA.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: abde8998a96acf14cb8b51661672ec93 3 | folderAsset: yes 4 | timeCreated: 1492729211 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/WSA/TexturesUWP.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/Assets/Plugins/WSA/TexturesUWP.dll -------------------------------------------------------------------------------- /Assets/Plugins/WSA/TexturesUWP.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c39586c7dbfa86c45b6e9ff8c648b4b3 3 | timeCreated: 1493885254 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXIntel: 1 24 | Exclude OSXIntel64: 1 25 | Exclude OSXUniversal: 1 26 | Exclude SamsungTV: 1 27 | Exclude Tizen: 1 28 | Exclude WebGL: 1 29 | Exclude Win: 1 30 | Exclude Win64: 1 31 | Exclude WindowsStoreApps: 0 32 | Exclude iOS: 1 33 | Exclude tvOS: 1 34 | data: 35 | first: 36 | '': Editor 37 | second: 38 | enabled: 0 39 | settings: 40 | CPU: AnyCPU 41 | OS: AnyOS 42 | data: 43 | first: 44 | Android: Android 45 | second: 46 | enabled: 0 47 | settings: 48 | CPU: ARMv7 49 | data: 50 | first: 51 | Any: 52 | second: 53 | enabled: 0 54 | settings: {} 55 | data: 56 | first: 57 | Editor: Editor 58 | second: 59 | enabled: 0 60 | settings: 61 | DefaultValueInitialized: true 62 | data: 63 | first: 64 | Facebook: Win 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: AnyCPU 69 | data: 70 | first: 71 | Facebook: Win64 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: AnyCPU 76 | data: 77 | first: 78 | Samsung TV: SamsungTV 79 | second: 80 | enabled: 0 81 | settings: 82 | STV_MODEL: STANDARD_15 83 | data: 84 | first: 85 | Standalone: Linux 86 | second: 87 | enabled: 0 88 | settings: 89 | CPU: x86 90 | data: 91 | first: 92 | Standalone: Linux64 93 | second: 94 | enabled: 0 95 | settings: 96 | CPU: x86_64 97 | data: 98 | first: 99 | Standalone: OSXIntel 100 | second: 101 | enabled: 0 102 | settings: 103 | CPU: AnyCPU 104 | data: 105 | first: 106 | Standalone: OSXIntel64 107 | second: 108 | enabled: 0 109 | settings: 110 | CPU: AnyCPU 111 | data: 112 | first: 113 | Standalone: Win 114 | second: 115 | enabled: 0 116 | settings: 117 | CPU: AnyCPU 118 | data: 119 | first: 120 | Standalone: Win64 121 | second: 122 | enabled: 0 123 | settings: 124 | CPU: AnyCPU 125 | data: 126 | first: 127 | Windows Store Apps: WindowsStoreApps 128 | second: 129 | enabled: 1 130 | settings: 131 | CPU: X86 132 | DontProcess: False 133 | PlaceholderPath: 134 | SDK: AnySDK 135 | ScriptingBackend: AnyScriptingBackend 136 | data: 137 | first: 138 | iPhone: iOS 139 | second: 140 | enabled: 0 141 | settings: 142 | CompileFlags: 143 | FrameworkDependencies: 144 | data: 145 | first: 146 | tvOS: tvOS 147 | second: 148 | enabled: 0 149 | settings: 150 | CompileFlags: 151 | FrameworkDependencies: 152 | userData: 153 | assetBundleName: 154 | assetBundleVariant: 155 | -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05620dd4557d0294ab8088b1882c5a6e 3 | folderAsset: yes 4 | timeCreated: 1491427551 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d2a200dc98a6ca347bca1ad14f136338 3 | folderAsset: yes 4 | timeCreated: 1491427551 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtc/Org.WebRtc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/Assets/Plugins/WebRtcWrapper/WebRtc/Org.WebRtc.dll -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtc/Org.WebRtc.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 57763667ccace3948a7b41babb1044c3 3 | timeCreated: 1491427554 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXIntel: 1 24 | Exclude OSXIntel64: 1 25 | Exclude OSXUniversal: 1 26 | Exclude SamsungTV: 1 27 | Exclude Tizen: 1 28 | Exclude WebGL: 1 29 | Exclude Win: 1 30 | Exclude Win64: 1 31 | Exclude WindowsStoreApps: 0 32 | Exclude iOS: 1 33 | Exclude tvOS: 1 34 | data: 35 | first: 36 | '': Editor 37 | second: 38 | enabled: 0 39 | settings: 40 | CPU: AnyCPU 41 | OS: AnyOS 42 | data: 43 | first: 44 | Android: Android 45 | second: 46 | enabled: 0 47 | settings: 48 | CPU: ARMv7 49 | data: 50 | first: 51 | Any: 52 | second: 53 | enabled: 0 54 | settings: {} 55 | data: 56 | first: 57 | Editor: Editor 58 | second: 59 | enabled: 0 60 | settings: 61 | DefaultValueInitialized: true 62 | data: 63 | first: 64 | Facebook: Win 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: AnyCPU 69 | data: 70 | first: 71 | Facebook: Win64 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: AnyCPU 76 | data: 77 | first: 78 | Samsung TV: SamsungTV 79 | second: 80 | enabled: 0 81 | settings: 82 | STV_MODEL: STANDARD_15 83 | data: 84 | first: 85 | Standalone: Linux 86 | second: 87 | enabled: 0 88 | settings: 89 | CPU: x86 90 | data: 91 | first: 92 | Standalone: Linux64 93 | second: 94 | enabled: 0 95 | settings: 96 | CPU: x86_64 97 | data: 98 | first: 99 | Standalone: LinuxUniversal 100 | second: 101 | enabled: 0 102 | settings: 103 | CPU: None 104 | data: 105 | first: 106 | Standalone: OSXIntel 107 | second: 108 | enabled: 0 109 | settings: 110 | CPU: AnyCPU 111 | data: 112 | first: 113 | Standalone: OSXIntel64 114 | second: 115 | enabled: 0 116 | settings: 117 | CPU: AnyCPU 118 | data: 119 | first: 120 | Standalone: OSXUniversal 121 | second: 122 | enabled: 0 123 | settings: 124 | CPU: None 125 | data: 126 | first: 127 | Standalone: Win 128 | second: 129 | enabled: 0 130 | settings: 131 | CPU: AnyCPU 132 | data: 133 | first: 134 | Standalone: Win64 135 | second: 136 | enabled: 0 137 | settings: 138 | CPU: AnyCPU 139 | data: 140 | first: 141 | Windows Store Apps: WindowsStoreApps 142 | second: 143 | enabled: 1 144 | settings: 145 | CPU: X86 146 | DontProcess: True 147 | PlaceholderPath: 148 | SDK: UWP 149 | ScriptingBackend: AnyScriptingBackend 150 | data: 151 | first: 152 | iPhone: iOS 153 | second: 154 | enabled: 0 155 | settings: 156 | CompileFlags: 157 | FrameworkDependencies: 158 | data: 159 | first: 160 | tvOS: tvOS 161 | second: 162 | enabled: 0 163 | settings: 164 | CompileFlags: 165 | FrameworkDependencies: 166 | userData: 167 | assetBundleName: 168 | assetBundleVariant: 169 | -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtc/Org.WebRtc.winmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/Assets/Plugins/WebRtcWrapper/WebRtc/Org.WebRtc.winmd -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtc/Org.WebRtc.winmd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 703f190d2c61df742bcda2954898cfe1 3 | timeCreated: 1491427552 4 | licenseType: Pro 5 | PluginImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | iconMap: {} 9 | executionOrder: {} 10 | isPreloaded: 0 11 | isOverridable: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXIntel: 1 24 | Exclude OSXIntel64: 1 25 | Exclude OSXUniversal: 1 26 | Exclude SamsungTV: 1 27 | Exclude Tizen: 1 28 | Exclude WebGL: 1 29 | Exclude Win: 1 30 | Exclude Win64: 1 31 | Exclude WindowsStoreApps: 0 32 | Exclude iOS: 1 33 | Exclude tvOS: 1 34 | - first: 35 | '': Editor 36 | second: 37 | enabled: 0 38 | settings: 39 | CPU: AnyCPU 40 | OS: AnyOS 41 | - first: 42 | Android: Android 43 | second: 44 | enabled: 0 45 | settings: 46 | CPU: ARMv7 47 | - first: 48 | Any: 49 | second: 50 | enabled: 0 51 | settings: {} 52 | - first: 53 | Editor: Editor 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | DefaultValueInitialized: true 59 | OS: AnyOS 60 | - first: 61 | Facebook: Win 62 | second: 63 | enabled: 0 64 | settings: 65 | CPU: AnyCPU 66 | - first: 67 | Facebook: Win64 68 | second: 69 | enabled: 0 70 | settings: 71 | CPU: AnyCPU 72 | - first: 73 | Samsung TV: SamsungTV 74 | second: 75 | enabled: 0 76 | settings: 77 | STV_MODEL: STANDARD_15 78 | - first: 79 | Standalone: Linux 80 | second: 81 | enabled: 0 82 | settings: 83 | CPU: x86 84 | - first: 85 | Standalone: Linux64 86 | second: 87 | enabled: 0 88 | settings: 89 | CPU: x86_64 90 | - first: 91 | Standalone: OSXIntel 92 | second: 93 | enabled: 0 94 | settings: 95 | CPU: AnyCPU 96 | - first: 97 | Standalone: OSXIntel64 98 | second: 99 | enabled: 0 100 | settings: 101 | CPU: AnyCPU 102 | - first: 103 | Standalone: OSXUniversal 104 | second: 105 | enabled: 0 106 | settings: 107 | CPU: AnyCPU 108 | - first: 109 | Standalone: Win 110 | second: 111 | enabled: 0 112 | settings: 113 | CPU: AnyCPU 114 | - first: 115 | Standalone: Win64 116 | second: 117 | enabled: 0 118 | settings: 119 | CPU: AnyCPU 120 | - first: 121 | Windows Store Apps: WindowsStoreApps 122 | second: 123 | enabled: 1 124 | settings: 125 | CPU: AnyCPU 126 | DontProcess: True 127 | PlaceholderPath: 128 | SDK: UWP 129 | ScriptingBackend: AnyScriptingBackend 130 | - first: 131 | XboxOne: XboxOne 132 | second: 133 | enabled: 1 134 | settings: {} 135 | - first: 136 | iPhone: iOS 137 | second: 138 | enabled: 0 139 | settings: 140 | CompileFlags: 141 | FrameworkDependencies: 142 | - first: 143 | tvOS: tvOS 144 | second: 145 | enabled: 0 146 | settings: 147 | CompileFlags: 148 | FrameworkDependencies: 149 | userData: 150 | assetBundleName: 151 | assetBundleVariant: 152 | -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtcWrapper.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/Assets/Plugins/WebRtcWrapper/WebRtcWrapper.dll -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtcWrapper.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/Assets/Plugins/WebRtcWrapper/WebRtcWrapper.dll.mdb -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtcWrapper.dll.mdb.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 262165630205c9d4ba215940b8544ad3 3 | timeCreated: 1518501796 4 | licenseType: Pro 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtcWrapper.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e366a9c732e131b439d81e4c56b138aa 3 | timeCreated: 1497029689 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXIntel: 1 24 | Exclude OSXIntel64: 1 25 | Exclude OSXUniversal: 1 26 | Exclude SamsungTV: 1 27 | Exclude Tizen: 1 28 | Exclude WebGL: 1 29 | Exclude Win: 1 30 | Exclude Win64: 1 31 | Exclude WindowsStoreApps: 0 32 | Exclude iOS: 1 33 | Exclude tvOS: 1 34 | data: 35 | first: 36 | '': Editor 37 | second: 38 | enabled: 0 39 | settings: 40 | CPU: AnyCPU 41 | OS: AnyOS 42 | data: 43 | first: 44 | Android: Android 45 | second: 46 | enabled: 0 47 | settings: 48 | CPU: ARMv7 49 | data: 50 | first: 51 | Any: 52 | second: 53 | enabled: 0 54 | settings: {} 55 | data: 56 | first: 57 | Editor: Editor 58 | second: 59 | enabled: 0 60 | settings: 61 | DefaultValueInitialized: true 62 | data: 63 | first: 64 | Facebook: Win 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: None 69 | data: 70 | first: 71 | Facebook: Win64 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | data: 77 | first: 78 | Samsung TV: SamsungTV 79 | second: 80 | enabled: 0 81 | settings: 82 | STV_MODEL: STANDARD_15 83 | data: 84 | first: 85 | Standalone: Linux 86 | second: 87 | enabled: 0 88 | settings: 89 | CPU: None 90 | data: 91 | first: 92 | Standalone: Linux64 93 | second: 94 | enabled: 0 95 | settings: 96 | CPU: None 97 | data: 98 | first: 99 | Standalone: LinuxUniversal 100 | second: 101 | enabled: 0 102 | settings: 103 | CPU: None 104 | data: 105 | first: 106 | Standalone: OSXIntel 107 | second: 108 | enabled: 0 109 | settings: 110 | CPU: None 111 | data: 112 | first: 113 | Standalone: OSXIntel64 114 | second: 115 | enabled: 0 116 | settings: 117 | CPU: None 118 | data: 119 | first: 120 | Standalone: OSXUniversal 121 | second: 122 | enabled: 0 123 | settings: 124 | CPU: None 125 | data: 126 | first: 127 | Standalone: Win 128 | second: 129 | enabled: 0 130 | settings: 131 | CPU: None 132 | data: 133 | first: 134 | Standalone: Win64 135 | second: 136 | enabled: 0 137 | settings: 138 | CPU: None 139 | data: 140 | first: 141 | Windows Store Apps: WindowsStoreApps 142 | second: 143 | enabled: 1 144 | settings: 145 | CPU: AnyCPU 146 | DontProcess: False 147 | PlaceholderPath: 148 | SDK: UWP 149 | ScriptingBackend: AnyScriptingBackend 150 | data: 151 | first: 152 | iPhone: iOS 153 | second: 154 | enabled: 0 155 | settings: 156 | CompileFlags: 157 | FrameworkDependencies: 158 | data: 159 | first: 160 | tvOS: tvOS 161 | second: 162 | enabled: 0 163 | settings: 164 | CompileFlags: 165 | FrameworkDependencies: 166 | userData: 167 | assetBundleName: 168 | assetBundleVariant: 169 | -------------------------------------------------------------------------------- /Assets/Plugins/WebRtcWrapper/WebRtcWrapper.pdb.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8a9565f14b2fe4042a0e2e1fc8292809 3 | timeCreated: 1518493687 4 | licenseType: Pro 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa575f33cd4a8a542a31955028df578f 3 | folderAsset: yes 4 | timeCreated: 1491520893 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scenes/HLPluginPerfTest.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed330a8a6e30d4d4294990c854f33643 3 | timeCreated: 1497073044 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/HLPluginPerfTestThread.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 377e5300db99a744fbcf91e292de2dda 3 | timeCreated: 1497078505 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/RenderTexture.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5425aa1f238ee674481b5c84bfa7e01c 3 | timeCreated: 1492122364 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/RenderTextureHL.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8dfb59eeb05b4c542bbbb7a08661c45e 3 | timeCreated: 1497041524 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/StereoSideBySideTexture.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a9dc3d97525f3d42851c4743227ba29 3 | timeCreated: 1495857693 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 16df857ddb9076e4ab7b5679b3fb83fd 3 | folderAsset: yes 4 | timeCreated: 1491449087 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts/CameraControl.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. See LICENSE in the project root for license information. 3 | // 4 | // Ritchie Lozada (rlozada@microsoft.com) 5 | 6 | using System.Collections; 7 | using System.Collections.Generic; 8 | using UnityEngine; 9 | 10 | public class CameraControl : MonoBehaviour 11 | { 12 | public float MoveRate = 1f; 13 | public float TurnRate = 90f; 14 | 15 | 16 | void Update() 17 | { 18 | var pitch = Input.GetAxis("Vertical"); 19 | var yaw = Input.GetAxis("Horizontal"); 20 | 21 | var mx = Input.GetAxis("MoveX"); 22 | var my = Input.GetAxis("MoveY"); 23 | var mz = Input.GetAxis("MoveZ"); 24 | 25 | var MouseX = Input.GetAxis("Mouse X"); 26 | var MouseY = Input.GetAxis("Mouse Y"); 27 | 28 | // Right Mouse Button 29 | if (Input.GetMouseButton(1)) 30 | { 31 | transform.Rotate(new Vector3(-MouseY, MouseX, 0f) * Time.deltaTime * TurnRate); 32 | } 33 | 34 | // Left Mouse Button 35 | if (Input.GetMouseButton(0)) 36 | { 37 | transform.Translate(new Vector3(MouseX, 0f, MouseY) * Time.deltaTime * MoveRate); 38 | } 39 | 40 | transform.Rotate(new Vector3(pitch, yaw, 0f) * Time.deltaTime * TurnRate); 41 | transform.Translate(new Vector3(mx, my, mz) * Time.deltaTime * MoveRate); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Assets/Scripts/CameraControl.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68016f231d2ae864da6f60df6012532e 3 | timeCreated: 1491521087 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Scripts/ControlScript.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f16859116aaf76641abff9890f3277fb 3 | timeCreated: 1491449261 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Scripts/UIControls.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. See LICENSE in the project root for license information. 3 | // 4 | // Ritchie Lozada (rlozada@microsoft.com) 5 | 6 | 7 | using System.Collections; 8 | using UnityEngine; 9 | 10 | public class UIControls : MonoBehaviour 11 | { 12 | public RectTransform panelMain; 13 | 14 | private IEnumerator panelCoRoutineControl; 15 | private float width; 16 | private float height; 17 | private float xPos; 18 | private float yPos; 19 | private bool isPanelOpen; 20 | private float moveSpeed; 21 | 22 | void Start() 23 | { 24 | width = panelMain.rect.width; 25 | height = panelMain.rect.height; 26 | moveSpeed = height * 3f; 27 | 28 | xPos = panelMain.rect.x; 29 | isPanelOpen = true; 30 | panelCoRoutineControl = panelCoRoutine(height, 1); 31 | } 32 | 33 | public void TogglePanel() 34 | { 35 | if (isPanelOpen) 36 | { 37 | ClosePanel(); 38 | } 39 | else 40 | { 41 | OpenPanel(); 42 | } 43 | isPanelOpen = !isPanelOpen; 44 | } 45 | 46 | 47 | public void OpenPanel() 48 | { 49 | StopCoroutine(panelCoRoutineControl); 50 | panelCoRoutineControl = panelCoRoutine(0, 1); 51 | StartCoroutine(panelCoRoutineControl); 52 | } 53 | 54 | public void ClosePanel() 55 | { 56 | StopCoroutine(panelCoRoutineControl); 57 | panelCoRoutineControl = panelCoRoutine(-height, -1); 58 | StartCoroutine(panelCoRoutineControl); 59 | } 60 | 61 | IEnumerator panelCoRoutine(float yTargetValue, int direction) 62 | { 63 | var targetY = yTargetValue; 64 | yPos = panelMain.anchoredPosition.y; 65 | 66 | while ( 67 | ((direction > 0) && (yPos < targetY)) || 68 | ((direction < 0) && (yPos > targetY)) 69 | ) 70 | { 71 | yPos += direction * moveSpeed * Time.deltaTime; 72 | panelMain.anchoredPosition = new Vector3(xPos, yPos); 73 | yield return null; 74 | } 75 | panelMain.anchoredPosition = new Vector3(xPos, yTargetValue); 76 | yield return null; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /Assets/Scripts/UIControls.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2124036feabe014194bc905ba3ad785 3 | timeCreated: 1493933908 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /ExternalProjects/.gitignore: -------------------------------------------------------------------------------- 1 | !WebRTCPeerConnectionServerExe/* -------------------------------------------------------------------------------- /ExternalProjects/WebRTCPeerConnectionServerExe/peerconnection_server.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRTCPeerConnectionServerExe/peerconnection_server.exe -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # MSTest test Results 33 | [Tt]est[Rr]esult*/ 34 | [Bb]uild[Ll]og.* 35 | 36 | # NUNIT 37 | *.VisualState.xml 38 | TestResult.xml 39 | 40 | # Build Results of an ATL Project 41 | [Dd]ebugPS/ 42 | [Rr]eleasePS/ 43 | dlldata.c 44 | 45 | # .NET Core 46 | project.lock.json 47 | project.fragment.lock.json 48 | artifacts/ 49 | **/Properties/launchSettings.json 50 | 51 | *_i.c 52 | *_p.c 53 | *_i.h 54 | *.ilk 55 | *.meta 56 | *.obj 57 | *.pch 58 | *.pdb 59 | *.pgc 60 | *.pgd 61 | *.rsp 62 | *.sbr 63 | *.tlb 64 | *.tli 65 | *.tlh 66 | *.tmp 67 | *.tmp_proj 68 | *.log 69 | *.vspscc 70 | *.vssscc 71 | .builds 72 | *.pidb 73 | *.svclog 74 | *.scc 75 | 76 | # Chutzpah Test files 77 | _Chutzpah* 78 | 79 | # Visual C++ cache files 80 | ipch/ 81 | *.aps 82 | *.ncb 83 | *.opendb 84 | *.opensdf 85 | *.sdf 86 | *.cachefile 87 | *.VC.db 88 | *.VC.VC.opendb 89 | 90 | # Visual Studio profiler 91 | *.psess 92 | *.vsp 93 | *.vspx 94 | *.sap 95 | 96 | # TFS 2012 Local Workspace 97 | $tf/ 98 | 99 | # Guidance Automation Toolkit 100 | *.gpState 101 | 102 | # ReSharper is a .NET coding add-in 103 | _ReSharper*/ 104 | *.[Rr]e[Ss]harper 105 | *.DotSettings.user 106 | 107 | # JustCode is a .NET coding add-in 108 | .JustCode 109 | 110 | # TeamCity is a build add-in 111 | _TeamCity* 112 | 113 | # DotCover is a Code Coverage Tool 114 | *.dotCover 115 | 116 | # Visual Studio code coverage results 117 | *.coverage 118 | *.coveragexml 119 | 120 | # NCrunch 121 | _NCrunch_* 122 | .*crunch*.local.xml 123 | nCrunchTemp_* 124 | 125 | # MightyMoose 126 | *.mm.* 127 | AutoTest.Net/ 128 | 129 | # Web workbench (sass) 130 | .sass-cache/ 131 | 132 | # Installshield output folder 133 | [Ee]xpress/ 134 | 135 | # DocProject is a documentation generator add-in 136 | DocProject/buildhelp/ 137 | DocProject/Help/*.HxT 138 | DocProject/Help/*.HxC 139 | DocProject/Help/*.hhc 140 | DocProject/Help/*.hhk 141 | DocProject/Help/*.hhp 142 | DocProject/Help/Html2 143 | DocProject/Help/html 144 | 145 | # Click-Once directory 146 | publish/ 147 | 148 | # Publish Web Output 149 | *.[Pp]ublish.xml 150 | *.azurePubxml 151 | # TODO: Comment the next line if you want to checkin your web deploy settings 152 | # but database connection strings (with potential passwords) will be unencrypted 153 | *.pubxml 154 | *.publishproj 155 | 156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 157 | # checkin your Azure Web App publish settings, but sensitive information contained 158 | # in these scripts will be unencrypted 159 | PublishScripts/ 160 | 161 | # NuGet Packages 162 | *.nupkg 163 | # The packages folder can be ignored because of Package Restore 164 | **/packages/* 165 | # except build/, which is used as an MSBuild target. 166 | !**/packages/build/ 167 | # Uncomment if necessary however generally it will be regenerated when needed 168 | #!**/packages/repositories.config 169 | # NuGet v3's project.json files produces more ignorable files 170 | *.nuget.props 171 | *.nuget.targets 172 | 173 | # Microsoft Azure Build Output 174 | csx/ 175 | *.build.csdef 176 | 177 | # Microsoft Azure Emulator 178 | ecf/ 179 | rcf/ 180 | 181 | # Windows Store app package directories and files 182 | AppPackages/ 183 | BundleArtifacts/ 184 | Package.StoreAssociation.xml 185 | _pkginfo.txt 186 | 187 | # Visual Studio cache files 188 | # files ending in .cache can be ignored 189 | *.[Cc]ache 190 | # but keep track of directories ending in .cache 191 | !*.[Cc]ache/ 192 | 193 | # Others 194 | ClientBin/ 195 | ~$* 196 | *~ 197 | *.dbmdl 198 | *.dbproj.schemaview 199 | *.jfm 200 | *.pfx 201 | *.publishsettings 202 | orleans.codegen.cs 203 | 204 | # Since there are multiple workflows, uncomment next line to ignore bower_components 205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 206 | #bower_components/ 207 | 208 | # RIA/Silverlight projects 209 | Generated_Code/ 210 | 211 | # Backup & report files from converting an old project file 212 | # to a newer Visual Studio version. Backup files are not needed, 213 | # because we have git ;-) 214 | _UpgradeReport_Files/ 215 | Backup*/ 216 | UpgradeLog*.XML 217 | UpgradeLog*.htm 218 | 219 | # SQL Server files 220 | *.mdf 221 | *.ldf 222 | *.ndf 223 | 224 | # Business Intelligence projects 225 | *.rdl.data 226 | *.bim.layout 227 | *.bim_*.settings 228 | 229 | # Microsoft Fakes 230 | FakesAssemblies/ 231 | 232 | # GhostDoc plugin setting file 233 | *.GhostDoc.xml 234 | 235 | # Node.js Tools for Visual Studio 236 | .ntvs_analysis.dat 237 | node_modules/ 238 | 239 | # Typescript v1 declaration files 240 | typings/ 241 | 242 | # Visual Studio 6 build log 243 | *.plg 244 | 245 | # Visual Studio 6 workspace options file 246 | *.opt 247 | 248 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 249 | *.vbw 250 | 251 | # Visual Studio LightSwitch build output 252 | **/*.HTMLClient/GeneratedArtifacts 253 | **/*.DesktopClient/GeneratedArtifacts 254 | **/*.DesktopClient/ModelManifest.xml 255 | **/*.Server/GeneratedArtifacts 256 | **/*.Server/ModelManifest.xml 257 | _Pvt_Extensions 258 | 259 | # Paket dependency manager 260 | .paket/paket.exe 261 | paket-files/ 262 | 263 | # FAKE - F# Make 264 | .fake/ 265 | 266 | # JetBrains Rider 267 | .idea/ 268 | *.sln.iml 269 | 270 | # CodeRush 271 | .cr/ 272 | 273 | # Python Tools for Visual Studio (PTVS) 274 | __pycache__/ 275 | *.pyc 276 | 277 | # Cake - Uncomment if you are using it 278 | # tools/** 279 | # !tools/packages.config 280 | 281 | # Telerik's JustMock configuration file 282 | *.jmconfig 283 | 284 | # BizTalk build output 285 | *.btp.cs 286 | *.btm.cs 287 | *.odx.cs 288 | *.xsd.cs -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/TexturesUWP.def: -------------------------------------------------------------------------------- 1 | ; file used by Visual Studio plugin builds, mostly for 32-bit 2 | ; to stop mangling our exported function names 3 | 4 | LIBRARY 5 | 6 | EXPORTS 7 | UnityPluginLoad 8 | UnityPluginUnload 9 | SetTextureFromUnity 10 | GetRenderEventFunc 11 | SetPluginMode -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/TexturesUWP.h: -------------------------------------------------------------------------------- 1 | #pragma once -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/TexturesUWP.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 6 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/UnityPluginAPI/IUnityGraphics.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "IUnityInterface.h" 3 | 4 | typedef enum UnityGfxRenderer 5 | { 6 | //kUnityGfxRendererOpenGL = 0, // Legacy OpenGL, removed 7 | kUnityGfxRendererD3D9 = 1, // Direct3D 9 8 | kUnityGfxRendererD3D11 = 2, // Direct3D 11 9 | kUnityGfxRendererGCM = 3, // PlayStation 3 10 | kUnityGfxRendererNull = 4, // "null" device (used in batch mode) 11 | kUnityGfxRendererOpenGLES20 = 8, // OpenGL ES 2.0 12 | kUnityGfxRendererOpenGLES30 = 11, // OpenGL ES 3.0 13 | kUnityGfxRendererGXM = 12, // PlayStation Vita 14 | kUnityGfxRendererPS4 = 13, // PlayStation 4 15 | kUnityGfxRendererXboxOne = 14, // Xbox One 16 | kUnityGfxRendererMetal = 16, // iOS Metal 17 | kUnityGfxRendererOpenGLCore = 17, // OpenGL core 18 | kUnityGfxRendererD3D12 = 18, // Direct3D 12 19 | kUnityGfxRendererVulkan = 21, // Vulkan 20 | } UnityGfxRenderer; 21 | 22 | typedef enum UnityGfxDeviceEventType 23 | { 24 | kUnityGfxDeviceEventInitialize = 0, 25 | kUnityGfxDeviceEventShutdown = 1, 26 | kUnityGfxDeviceEventBeforeReset = 2, 27 | kUnityGfxDeviceEventAfterReset = 3, 28 | } UnityGfxDeviceEventType; 29 | 30 | typedef void (UNITY_INTERFACE_API * IUnityGraphicsDeviceEventCallback)(UnityGfxDeviceEventType eventType); 31 | 32 | // Should only be used on the rendering thread unless noted otherwise. 33 | UNITY_DECLARE_INTERFACE(IUnityGraphics) 34 | { 35 | UnityGfxRenderer(UNITY_INTERFACE_API * GetRenderer)(); // Thread safe 36 | 37 | // This callback will be called when graphics device is created, destroyed, reset, etc. 38 | // It is possible to miss the kUnityGfxDeviceEventInitialize event in case plugin is loaded at a later time, 39 | // when the graphics device is already created. 40 | void(UNITY_INTERFACE_API * RegisterDeviceEventCallback)(IUnityGraphicsDeviceEventCallback callback); 41 | void(UNITY_INTERFACE_API * UnregisterDeviceEventCallback)(IUnityGraphicsDeviceEventCallback callback); 42 | }; 43 | UNITY_REGISTER_INTERFACE_GUID(0x7CBA0A9CA4DDB544ULL, 0x8C5AD4926EB17B11ULL, IUnityGraphics) 44 | 45 | 46 | // Certain Unity APIs (GL.IssuePluginEvent, CommandBuffer.IssuePluginEvent) can callback into native plugins. 47 | // Provide them with an address to a function of this signature. 48 | typedef void (UNITY_INTERFACE_API * UnityRenderingEvent)(int eventId); 49 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/UnityPluginAPI/IUnityGraphicsD3D11.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "IUnityInterface.h" 3 | 4 | struct RenderSurfaceBase; 5 | typedef struct RenderSurfaceBase* UnityRenderBuffer; 6 | 7 | // Should only be used on the rendering thread unless noted otherwise. 8 | UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D11) 9 | { 10 | ID3D11Device* (UNITY_INTERFACE_API * GetDevice)(); 11 | 12 | ID3D11Resource* (UNITY_INTERFACE_API * TextureFromRenderBuffer)(UnityRenderBuffer buffer); 13 | }; 14 | UNITY_REGISTER_INTERFACE_GUID(0xAAB37EF87A87D748ULL, 0xBF76967F07EFB177ULL, IUnityGraphicsD3D11) 15 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/UnityPluginAPI/IUnityGraphicsD3D12.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "IUnityInterface.h" 3 | #ifndef __cplusplus 4 | #include 5 | #endif 6 | 7 | typedef struct UnityGraphicsD3D12ResourceState UnityGraphicsD3D12ResourceState; 8 | struct UnityGraphicsD3D12ResourceState 9 | { 10 | ID3D12Resource* resource; // Resource to barrier. 11 | D3D12_RESOURCE_STATES expected; // Expected resource state before this command list is executed. 12 | D3D12_RESOURCE_STATES current; // State this resource will be in after this command list is executed. 13 | }; 14 | 15 | typedef struct UnityGraphicsD3D12PhysicalVideoMemoryControlValues UnityGraphicsD3D12PhysicalVideoMemoryControlValues; 16 | struct UnityGraphicsD3D12PhysicalVideoMemoryControlValues // all values in bytes 17 | { 18 | UINT64 reservation; // Minimum required physical memory for an application [default = 64MB]. 19 | UINT64 systemMemoryThreshold; // If free physical video memory drops below this threshold, resources will be allocated in system memory. [default = 64MB] 20 | UINT64 residencyThreshold; // Minimum free physical video memory needed to start bringing evicted resources back after shrunken video memory budget expands again. [default = 128MB] 21 | }; 22 | 23 | // Should only be used on the rendering/submission thread. 24 | UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v4) 25 | { 26 | ID3D12Device* (UNITY_INTERFACE_API * GetDevice)(); 27 | 28 | ID3D12Fence* (UNITY_INTERFACE_API * GetFrameFence)(); 29 | // Returns the value set on the frame fence once the current frame completes or the GPU is flushed 30 | UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); 31 | 32 | // Executes a given command list on a worker thread. 33 | // [Optional] Declares expected and post-execution resource states. 34 | // Returns the fence value. 35 | UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); 36 | 37 | void(UNITY_INTERFACE_API * SetPhysicalVideoMemoryControlValues)(const UnityGraphicsD3D12PhysicalVideoMemoryControlValues * memInfo); 38 | 39 | ID3D12CommandQueue* (UNITY_INTERFACE_API * GetCommandQueue)(); 40 | }; 41 | UNITY_REGISTER_INTERFACE_GUID(0X498FFCC13EC94006ULL, 0XB18F8B0FF67778C8ULL, IUnityGraphicsD3D12v4) 42 | 43 | // Should only be used on the rendering/submission thread. 44 | UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v3) 45 | { 46 | ID3D12Device* (UNITY_INTERFACE_API * GetDevice)(); 47 | 48 | ID3D12Fence* (UNITY_INTERFACE_API * GetFrameFence)(); 49 | // Returns the value set on the frame fence once the current frame completes or the GPU is flushed 50 | UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); 51 | 52 | // Executes a given command list on a worker thread. 53 | // [Optional] Declares expected and post-execution resource states. 54 | // Returns the fence value. 55 | UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); 56 | 57 | void(UNITY_INTERFACE_API * SetPhysicalVideoMemoryControlValues)(const UnityGraphicsD3D12PhysicalVideoMemoryControlValues * memInfo); 58 | }; 59 | UNITY_REGISTER_INTERFACE_GUID(0x57C3FAFE59E5E843ULL, 0xBF4F5998474BB600ULL, IUnityGraphicsD3D12v3) 60 | 61 | // Should only be used on the rendering/submission thread. 62 | UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v2) 63 | { 64 | ID3D12Device* (UNITY_INTERFACE_API * GetDevice)(); 65 | 66 | ID3D12Fence* (UNITY_INTERFACE_API * GetFrameFence)(); 67 | // Returns the value set on the frame fence once the current frame completes or the GPU is flushed 68 | UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); 69 | 70 | // Executes a given command list on a worker thread. 71 | // [Optional] Declares expected and post-execution resource states. 72 | // Returns the fence value. 73 | UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); 74 | }; 75 | UNITY_REGISTER_INTERFACE_GUID(0xEC39D2F18446C745ULL, 0xB1A2626641D6B11FULL, IUnityGraphicsD3D12v2) 76 | 77 | 78 | // Obsolete 79 | UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12) 80 | { 81 | ID3D12Device* (UNITY_INTERFACE_API * GetDevice)(); 82 | ID3D12CommandQueue* (UNITY_INTERFACE_API * GetCommandQueue)(); 83 | 84 | ID3D12Fence* (UNITY_INTERFACE_API * GetFrameFence)(); 85 | // Returns the value set on the frame fence once the current frame completes or the GPU is flushed 86 | UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); 87 | 88 | // Returns the state a resource will be in after the last command list is executed 89 | bool(UNITY_INTERFACE_API * GetResourceState)(ID3D12Resource * resource, D3D12_RESOURCE_STATES * outState); 90 | // Specifies the state a resource will be in after a plugin command list with resource barriers is executed 91 | void(UNITY_INTERFACE_API * SetResourceState)(ID3D12Resource * resource, D3D12_RESOURCE_STATES state); 92 | }; 93 | UNITY_REGISTER_INTERFACE_GUID(0xEF4CEC88A45F4C4CULL, 0xBD295B6F2A38D9DEULL, IUnityGraphicsD3D12) 94 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/UnityPluginAPI/IUnityGraphicsD3D9.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "IUnityInterface.h" 3 | 4 | // Should only be used on the rendering thread unless noted otherwise. 5 | UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D9) 6 | { 7 | IDirect3D9* (UNITY_INTERFACE_API * GetD3D)(); 8 | IDirect3DDevice9* (UNITY_INTERFACE_API * GetDevice)(); 9 | }; 10 | UNITY_REGISTER_INTERFACE_GUID(0xE90746A523D53C4CULL, 0xAC825B19B6F82AC3ULL, IUnityGraphicsD3D9) 11 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/UnityPluginAPI/IUnityGraphicsMetal.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "IUnityInterface.h" 3 | 4 | #ifndef __OBJC__ 5 | #error metal plugin is objc code. 6 | #endif 7 | #ifndef __clang__ 8 | #error only clang compiler is supported. 9 | #endif 10 | 11 | @class NSBundle; 12 | @protocol MTLDevice; 13 | @protocol MTLCommandBuffer; 14 | @protocol MTLCommandEncoder; 15 | @protocol MTLTexture; 16 | 17 | struct RenderSurfaceBase; 18 | typedef struct RenderSurfaceBase* UnityRenderBuffer; 19 | 20 | // Should only be used on the rendering thread unless noted otherwise. 21 | UNITY_DECLARE_INTERFACE(IUnityGraphicsMetal) 22 | { 23 | NSBundle* (UNITY_INTERFACE_API * MetalBundle)(); 24 | id(UNITY_INTERFACE_API * MetalDevice)(); 25 | 26 | id(UNITY_INTERFACE_API * CurrentCommandBuffer)(); 27 | 28 | // for custom rendering support there are two scenarios: 29 | // you want to use current in-flight MTLCommandEncoder (NB: it might be nil) 30 | id(UNITY_INTERFACE_API * CurrentCommandEncoder)(); 31 | // or you might want to create your own encoder. 32 | // In that case you should end unity's encoder before creating your own and end yours before returning control to unity 33 | void(UNITY_INTERFACE_API * EndCurrentCommandEncoder)(); 34 | 35 | // converting trampoline UnityRenderBufferHandle into native RenderBuffer 36 | UnityRenderBuffer(UNITY_INTERFACE_API * RenderBufferFromHandle)(void* bufferHandle); 37 | 38 | // access to RenderBuffer's texure 39 | // NB: you pass here *native* RenderBuffer, acquired by calling (C#) RenderBuffer.GetNativeRenderBufferPtr 40 | // AAResolvedTextureFromRenderBuffer will return nil in case of non-AA RenderBuffer or if called for depth RenderBuffer 41 | // StencilTextureFromRenderBuffer will return nil in case of no-stencil RenderBuffer or if called for color RenderBuffer 42 | id(UNITY_INTERFACE_API * TextureFromRenderBuffer)(UnityRenderBuffer buffer); 43 | id(UNITY_INTERFACE_API * AAResolvedTextureFromRenderBuffer)(UnityRenderBuffer buffer); 44 | id(UNITY_INTERFACE_API * StencilTextureFromRenderBuffer)(UnityRenderBuffer buffer); 45 | }; 46 | UNITY_REGISTER_INTERFACE_GUID(0x992C8EAEA95811E5ULL, 0x9A62C4B5B9876117ULL, IUnityGraphicsMetal) 47 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/VideoDecoder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include "macros.h" 16 | #include "defs.h" 17 | 18 | namespace WebRTCDirectXClientComponent 19 | { 20 | class VideoDecoder 21 | { 22 | private: 23 | IMFSourceResolver* m_pSourceResolver; 24 | IUnknown* m_pSource; 25 | IMFMediaSource* m_pMediaFileSource; 26 | IMFAttributes* m_pVideoReaderAttributes; 27 | IMFSourceReader* m_pSourceReader; 28 | MF_OBJECT_TYPE m_objectType; 29 | IMFMediaType* m_pFileVideoMediaType; 30 | 31 | IUnknown* m_pDecTransformUnk; 32 | IMFTransform* m_pDecoderTransform; 33 | IMFMediaType* m_pDecInputMediaType; 34 | IMFMediaType* m_pDecOutputMediaType; 35 | DWORD m_mftStatus; 36 | 37 | // Ready to start processing frames. 38 | MFT_OUTPUT_DATA_BUFFER m_outputDataBuffer; 39 | DWORD m_processOutputStatus; 40 | IMFSample* m_pVideoSample; 41 | DWORD m_streamIndex; 42 | DWORD m_flags; 43 | DWORD m_bufferCount; 44 | LONGLONG m_llVideoTimeStamp; 45 | LONGLONG m_llSampleDuration; 46 | LONGLONG m_yuvVideoTimeStamp; 47 | LONGLONG m_yuvSampleDuration; 48 | HRESULT m_mftProcessInput; 49 | HRESULT m_mftProcessOutput; 50 | MFT_OUTPUT_STREAM_INFO m_streamInfo; 51 | IMFSample* m_pOutSample; 52 | IMFMediaBuffer* m_pBuffer; 53 | IMFMediaBuffer* m_pReConstructedBuffer; 54 | int m_sampleCount; 55 | DWORD m_mftOutFlags; 56 | DWORD m_sampleFlags; 57 | LONGLONG m_reconVideoTimeStamp; 58 | LONGLONG m_reconSampleDuration; 59 | DWORD m_reconSampleFlags; 60 | 61 | IMFMediaBuffer* m_pInBuffer; 62 | char* m_pInputBuffer; 63 | int m_iOffset; 64 | 65 | public: 66 | VideoDecoder(); 67 | 68 | ~VideoDecoder(); 69 | 70 | void Initialize(int width, int height); 71 | 72 | void Deinitialize(); 73 | 74 | int DecodeH264VideoFrame( 75 | const uint8_t* h264FrameData, 76 | const int h264FrameLength, 77 | int width, 78 | int height, 79 | uint8_t** i420FrameData, 80 | int* i420FrameLength); 81 | }; 82 | } 83 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/defs.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define INPUT_BUFFER_SIZE 1024 * 1024 4 | #define FRAME_RATE 30 -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/dllmain.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | 3 | BOOL APIENTRY DllMain(HMODULE /* hModule */, DWORD ul_reason_for_call, LPVOID /* lpReserved */) 4 | { 5 | switch (ul_reason_for_call) 6 | { 7 | case DLL_PROCESS_ATTACH: 8 | case DLL_THREAD_ATTACH: 9 | case DLL_THREAD_DETACH: 10 | case DLL_PROCESS_DETACH: 11 | break; 12 | } 13 | return TRUE; 14 | } 15 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/basic_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_BASIC_TYPES_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_BASIC_TYPES_H_ 13 | 14 | #include // for NULL, size_t 15 | 16 | #if defined(__ANDROID__) || (defined(_MSC_VER) && (_MSC_VER < 1600)) 17 | #include // for uintptr_t on x86 18 | #else 19 | #include // for uintptr_t 20 | #endif 21 | 22 | #ifndef GG_LONGLONG 23 | #ifndef INT_TYPES_DEFINED 24 | #define INT_TYPES_DEFINED 25 | #ifdef COMPILER_MSVC 26 | typedef unsigned __int64 uint64; 27 | typedef __int64 int64; 28 | #ifndef INT64_C 29 | #define INT64_C(x) x ## I64 30 | #endif 31 | #ifndef UINT64_C 32 | #define UINT64_C(x) x ## UI64 33 | #endif 34 | #define INT64_F "I64" 35 | #else // COMPILER_MSVC 36 | #if defined(__LP64__) && !defined(__OpenBSD__) && !defined(__APPLE__) 37 | typedef unsigned long uint64; // NOLINT 38 | typedef long int64; // NOLINT 39 | #ifndef INT64_C 40 | #define INT64_C(x) x ## L 41 | #endif 42 | #ifndef UINT64_C 43 | #define UINT64_C(x) x ## UL 44 | #endif 45 | #define INT64_F "l" 46 | #else // defined(__LP64__) && !defined(__OpenBSD__) && !defined(__APPLE__) 47 | typedef unsigned long long uint64; // NOLINT 48 | typedef long long int64; // NOLINT 49 | #ifndef INT64_C 50 | #define INT64_C(x) x ## LL 51 | #endif 52 | #ifndef UINT64_C 53 | #define UINT64_C(x) x ## ULL 54 | #endif 55 | #define INT64_F "ll" 56 | #endif // __LP64__ 57 | #endif // COMPILER_MSVC 58 | typedef unsigned int uint32; 59 | typedef int int32; 60 | typedef unsigned short uint16; // NOLINT 61 | typedef short int16; // NOLINT 62 | typedef unsigned char uint8; 63 | typedef signed char int8; 64 | #endif // INT_TYPES_DEFINED 65 | #endif // GG_LONGLONG 66 | 67 | // Detect compiler is for x86 or x64. 68 | #if defined(__x86_64__) || defined(_M_X64) || \ 69 | defined(__i386__) || defined(_M_IX86) 70 | #define CPU_X86 1 71 | #endif 72 | // Detect compiler is for ARM. 73 | #if defined(__arm__) || defined(_M_ARM) 74 | #define CPU_ARM 1 75 | #endif 76 | 77 | #ifndef ALIGNP 78 | #ifdef __cplusplus 79 | #define ALIGNP(p, t) \ 80 | (reinterpret_cast(((reinterpret_cast(p) + \ 81 | ((t) - 1)) & ~((t) - 1)))) 82 | #else 83 | #define ALIGNP(p, t) \ 84 | ((uint8*)((((uintptr_t)(p) + ((t) - 1)) & ~((t) - 1)))) /* NOLINT */ 85 | #endif 86 | #endif 87 | 88 | #if !defined(LIBYUV_API) 89 | #if defined(_WIN32) || defined(__CYGWIN__) 90 | #if defined(LIBYUV_BUILDING_SHARED_LIBRARY) 91 | #define LIBYUV_API __declspec(dllexport) 92 | #elif defined(LIBYUV_USING_SHARED_LIBRARY) 93 | #define LIBYUV_API __declspec(dllimport) 94 | #else 95 | #define LIBYUV_API 96 | #endif // LIBYUV_BUILDING_SHARED_LIBRARY 97 | #elif defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__APPLE__) && \ 98 | (defined(LIBYUV_BUILDING_SHARED_LIBRARY) || \ 99 | defined(LIBYUV_USING_SHARED_LIBRARY)) 100 | #define LIBYUV_API __attribute__ ((visibility ("default"))) 101 | #else 102 | #define LIBYUV_API 103 | #endif // __GNUC__ 104 | #endif // LIBYUV_API 105 | 106 | #define LIBYUV_BOOL int 107 | #define LIBYUV_FALSE 0 108 | #define LIBYUV_TRUE 1 109 | 110 | // Visual C x86 or GCC little endian. 111 | #if defined(__x86_64__) || defined(_M_X64) || \ 112 | defined(__i386__) || defined(_M_IX86) || \ 113 | defined(__arm__) || defined(_M_ARM) || \ 114 | (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) 115 | #define LIBYUV_LITTLE_ENDIAN 116 | #endif 117 | 118 | #endif // INCLUDE_LIBYUV_BASIC_TYPES_H_ NOLINT 119 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/compare.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_COMPARE_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_COMPARE_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | namespace libyuv { 18 | extern "C" { 19 | #endif 20 | 21 | // Compute a hash for specified memory. Seed of 5381 recommended. 22 | LIBYUV_API 23 | uint32 HashDjb2(const uint8* src, uint64 count, uint32 seed); 24 | 25 | // Scan an opaque argb image and return fourcc based on alpha offset. 26 | // Returns FOURCC_ARGB, FOURCC_BGRA, or 0 if unknown. 27 | LIBYUV_API 28 | uint32 ARGBDetect(const uint8* argb, int stride_argb, int width, int height); 29 | 30 | // Sum Square Error - used to compute Mean Square Error or PSNR. 31 | LIBYUV_API 32 | uint64 ComputeSumSquareError(const uint8* src_a, 33 | const uint8* src_b, int count); 34 | 35 | LIBYUV_API 36 | uint64 ComputeSumSquareErrorPlane(const uint8* src_a, int stride_a, 37 | const uint8* src_b, int stride_b, 38 | int width, int height); 39 | 40 | static const int kMaxPsnr = 128; 41 | 42 | LIBYUV_API 43 | double SumSquareErrorToPsnr(uint64 sse, uint64 count); 44 | 45 | LIBYUV_API 46 | double CalcFramePsnr(const uint8* src_a, int stride_a, 47 | const uint8* src_b, int stride_b, 48 | int width, int height); 49 | 50 | LIBYUV_API 51 | double I420Psnr(const uint8* src_y_a, int stride_y_a, 52 | const uint8* src_u_a, int stride_u_a, 53 | const uint8* src_v_a, int stride_v_a, 54 | const uint8* src_y_b, int stride_y_b, 55 | const uint8* src_u_b, int stride_u_b, 56 | const uint8* src_v_b, int stride_v_b, 57 | int width, int height); 58 | 59 | LIBYUV_API 60 | double CalcFrameSsim(const uint8* src_a, int stride_a, 61 | const uint8* src_b, int stride_b, 62 | int width, int height); 63 | 64 | LIBYUV_API 65 | double I420Ssim(const uint8* src_y_a, int stride_y_a, 66 | const uint8* src_u_a, int stride_u_a, 67 | const uint8* src_v_a, int stride_v_a, 68 | const uint8* src_y_b, int stride_y_b, 69 | const uint8* src_u_b, int stride_u_b, 70 | const uint8* src_v_b, int stride_v_b, 71 | int width, int height); 72 | 73 | #ifdef __cplusplus 74 | } // extern "C" 75 | } // namespace libyuv 76 | #endif 77 | 78 | #endif // INCLUDE_LIBYUV_COMPARE_H_ NOLINT 79 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/compare_row.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_COMPARE_ROW_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_COMPARE_ROW_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | namespace libyuv { 18 | extern "C" { 19 | #endif 20 | 21 | #if defined(__pnacl__) || defined(__CLR_VER) || \ 22 | (defined(__i386__) && !defined(__SSE2__)) 23 | #define LIBYUV_DISABLE_X86 24 | #endif 25 | // MemorySanitizer does not support assembly code yet. http://crbug.com/344505 26 | #if defined(__has_feature) 27 | #if __has_feature(memory_sanitizer) 28 | #define LIBYUV_DISABLE_X86 29 | #endif 30 | #endif 31 | 32 | // Visual C 2012 required for AVX2. 33 | #if defined(_M_IX86) && !defined(__clang__) && \ 34 | defined(_MSC_VER) && _MSC_VER >= 1700 35 | #define VISUALC_HAS_AVX2 1 36 | #endif // VisualStudio >= 2012 37 | 38 | // clang >= 3.4.0 required for AVX2. 39 | #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) 40 | #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4)) 41 | #define CLANG_HAS_AVX2 1 42 | #endif // clang >= 3.4 43 | #endif // __clang__ 44 | 45 | #if !defined(LIBYUV_DISABLE_X86) && \ 46 | defined(_M_IX86) && (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2)) 47 | #define HAS_HASHDJB2_AVX2 48 | #endif 49 | 50 | // The following are available for Visual C and GCC: 51 | #if !defined(LIBYUV_DISABLE_X86) && \ 52 | (defined(__x86_64__) || (defined(__i386__) || defined(_M_IX86))) 53 | #define HAS_HASHDJB2_SSE41 54 | #define HAS_SUMSQUAREERROR_SSE2 55 | #endif 56 | 57 | // The following are available for Visual C and clangcl 32 bit: 58 | #if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && \ 59 | (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2)) 60 | #define HAS_HASHDJB2_AVX2 61 | #define HAS_SUMSQUAREERROR_AVX2 62 | #endif 63 | 64 | // The following are available for Neon: 65 | #if !defined(LIBYUV_DISABLE_NEON) && \ 66 | (defined(__ARM_NEON__) || defined(LIBYUV_NEON) || defined(__aarch64__)) 67 | #define HAS_SUMSQUAREERROR_NEON 68 | #endif 69 | 70 | uint32 SumSquareError_C(const uint8* src_a, const uint8* src_b, int count); 71 | uint32 SumSquareError_SSE2(const uint8* src_a, const uint8* src_b, int count); 72 | uint32 SumSquareError_AVX2(const uint8* src_a, const uint8* src_b, int count); 73 | uint32 SumSquareError_NEON(const uint8* src_a, const uint8* src_b, int count); 74 | 75 | uint32 HashDjb2_C(const uint8* src, int count, uint32 seed); 76 | uint32 HashDjb2_SSE41(const uint8* src, int count, uint32 seed); 77 | uint32 HashDjb2_AVX2(const uint8* src, int count, uint32 seed); 78 | 79 | #ifdef __cplusplus 80 | } // extern "C" 81 | } // namespace libyuv 82 | #endif 83 | 84 | #endif // INCLUDE_LIBYUV_COMPARE_ROW_H_ NOLINT 85 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/convert_from.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_CONVERT_FROM_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_CONVERT_FROM_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/rotate.h" 16 | 17 | #ifdef __cplusplus 18 | namespace libyuv { 19 | extern "C" { 20 | #endif 21 | 22 | // See Also convert.h for conversions from formats to I420. 23 | 24 | // I420Copy in convert to I420ToI420. 25 | 26 | LIBYUV_API 27 | int I420ToI422(const uint8* src_y, int src_stride_y, 28 | const uint8* src_u, int src_stride_u, 29 | const uint8* src_v, int src_stride_v, 30 | uint8* dst_y, int dst_stride_y, 31 | uint8* dst_u, int dst_stride_u, 32 | uint8* dst_v, int dst_stride_v, 33 | int width, int height); 34 | 35 | LIBYUV_API 36 | int I420ToI444(const uint8* src_y, int src_stride_y, 37 | const uint8* src_u, int src_stride_u, 38 | const uint8* src_v, int src_stride_v, 39 | uint8* dst_y, int dst_stride_y, 40 | uint8* dst_u, int dst_stride_u, 41 | uint8* dst_v, int dst_stride_v, 42 | int width, int height); 43 | 44 | LIBYUV_API 45 | int I420ToI411(const uint8* src_y, int src_stride_y, 46 | const uint8* src_u, int src_stride_u, 47 | const uint8* src_v, int src_stride_v, 48 | uint8* dst_y, int dst_stride_y, 49 | uint8* dst_u, int dst_stride_u, 50 | uint8* dst_v, int dst_stride_v, 51 | int width, int height); 52 | 53 | // Copy to I400. Source can be I420, I422, I444, I400, NV12 or NV21. 54 | LIBYUV_API 55 | int I400Copy(const uint8* src_y, int src_stride_y, 56 | uint8* dst_y, int dst_stride_y, 57 | int width, int height); 58 | 59 | LIBYUV_API 60 | int I420ToNV12(const uint8* src_y, int src_stride_y, 61 | const uint8* src_u, int src_stride_u, 62 | const uint8* src_v, int src_stride_v, 63 | uint8* dst_y, int dst_stride_y, 64 | uint8* dst_uv, int dst_stride_uv, 65 | int width, int height); 66 | 67 | LIBYUV_API 68 | int I420ToNV21(const uint8* src_y, int src_stride_y, 69 | const uint8* src_u, int src_stride_u, 70 | const uint8* src_v, int src_stride_v, 71 | uint8* dst_y, int dst_stride_y, 72 | uint8* dst_vu, int dst_stride_vu, 73 | int width, int height); 74 | 75 | LIBYUV_API 76 | int I420ToYUY2(const uint8* src_y, int src_stride_y, 77 | const uint8* src_u, int src_stride_u, 78 | const uint8* src_v, int src_stride_v, 79 | uint8* dst_frame, int dst_stride_frame, 80 | int width, int height); 81 | 82 | LIBYUV_API 83 | int I420ToUYVY(const uint8* src_y, int src_stride_y, 84 | const uint8* src_u, int src_stride_u, 85 | const uint8* src_v, int src_stride_v, 86 | uint8* dst_frame, int dst_stride_frame, 87 | int width, int height); 88 | 89 | LIBYUV_API 90 | int I420ToARGB(const uint8* src_y, int src_stride_y, 91 | const uint8* src_u, int src_stride_u, 92 | const uint8* src_v, int src_stride_v, 93 | uint8* dst_argb, int dst_stride_argb, 94 | int width, int height); 95 | 96 | LIBYUV_API 97 | int I420ToBGRA(const uint8* src_y, int src_stride_y, 98 | const uint8* src_u, int src_stride_u, 99 | const uint8* src_v, int src_stride_v, 100 | uint8* dst_argb, int dst_stride_argb, 101 | int width, int height); 102 | 103 | LIBYUV_API 104 | int I420ToABGR(const uint8* src_y, int src_stride_y, 105 | const uint8* src_u, int src_stride_u, 106 | const uint8* src_v, int src_stride_v, 107 | uint8* dst_argb, int dst_stride_argb, 108 | int width, int height); 109 | 110 | LIBYUV_API 111 | int I420ToRGBA(const uint8* src_y, int src_stride_y, 112 | const uint8* src_u, int src_stride_u, 113 | const uint8* src_v, int src_stride_v, 114 | uint8* dst_rgba, int dst_stride_rgba, 115 | int width, int height); 116 | 117 | LIBYUV_API 118 | int I420ToRGB24(const uint8* src_y, int src_stride_y, 119 | const uint8* src_u, int src_stride_u, 120 | const uint8* src_v, int src_stride_v, 121 | uint8* dst_frame, int dst_stride_frame, 122 | int width, int height); 123 | 124 | LIBYUV_API 125 | int I420ToRAW(const uint8* src_y, int src_stride_y, 126 | const uint8* src_u, int src_stride_u, 127 | const uint8* src_v, int src_stride_v, 128 | uint8* dst_frame, int dst_stride_frame, 129 | int width, int height); 130 | 131 | LIBYUV_API 132 | int I420ToRGB565(const uint8* src_y, int src_stride_y, 133 | const uint8* src_u, int src_stride_u, 134 | const uint8* src_v, int src_stride_v, 135 | uint8* dst_frame, int dst_stride_frame, 136 | int width, int height); 137 | 138 | // Convert I420 To RGB565 with 4x4 dither matrix (16 bytes). 139 | // Values in dither matrix from 0 to 7 recommended. 140 | // The order of the dither matrix is first byte is upper left. 141 | 142 | LIBYUV_API 143 | int I420ToRGB565Dither(const uint8* src_y, int src_stride_y, 144 | const uint8* src_u, int src_stride_u, 145 | const uint8* src_v, int src_stride_v, 146 | uint8* dst_frame, int dst_stride_frame, 147 | const uint8* dither4x4, int width, int height); 148 | 149 | LIBYUV_API 150 | int I420ToARGB1555(const uint8* src_y, int src_stride_y, 151 | const uint8* src_u, int src_stride_u, 152 | const uint8* src_v, int src_stride_v, 153 | uint8* dst_frame, int dst_stride_frame, 154 | int width, int height); 155 | 156 | LIBYUV_API 157 | int I420ToARGB4444(const uint8* src_y, int src_stride_y, 158 | const uint8* src_u, int src_stride_u, 159 | const uint8* src_v, int src_stride_v, 160 | uint8* dst_frame, int dst_stride_frame, 161 | int width, int height); 162 | 163 | // Convert I420 to specified format. 164 | // "dst_sample_stride" is bytes in a row for the destination. Pass 0 if the 165 | // buffer has contiguous rows. Can be negative. A multiple of 16 is optimal. 166 | LIBYUV_API 167 | int ConvertFromI420(const uint8* y, int y_stride, 168 | const uint8* u, int u_stride, 169 | const uint8* v, int v_stride, 170 | uint8* dst_sample, int dst_sample_stride, 171 | int width, int height, 172 | uint32 format); 173 | 174 | #ifdef __cplusplus 175 | } // extern "C" 176 | } // namespace libyuv 177 | #endif 178 | 179 | #endif // INCLUDE_LIBYUV_CONVERT_FROM_H_ NOLINT 180 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/convert_from_argb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | namespace libyuv { 18 | extern "C" { 19 | #endif 20 | 21 | // Copy ARGB to ARGB. 22 | #define ARGBToARGB ARGBCopy 23 | LIBYUV_API 24 | int ARGBCopy(const uint8* src_argb, int src_stride_argb, 25 | uint8* dst_argb, int dst_stride_argb, 26 | int width, int height); 27 | 28 | // Convert ARGB To BGRA. 29 | LIBYUV_API 30 | int ARGBToBGRA(const uint8* src_argb, int src_stride_argb, 31 | uint8* dst_bgra, int dst_stride_bgra, 32 | int width, int height); 33 | 34 | // Convert ARGB To ABGR. 35 | LIBYUV_API 36 | int ARGBToABGR(const uint8* src_argb, int src_stride_argb, 37 | uint8* dst_abgr, int dst_stride_abgr, 38 | int width, int height); 39 | 40 | // Convert ARGB To RGBA. 41 | LIBYUV_API 42 | int ARGBToRGBA(const uint8* src_argb, int src_stride_argb, 43 | uint8* dst_rgba, int dst_stride_rgba, 44 | int width, int height); 45 | 46 | // Convert ARGB To RGB24. 47 | LIBYUV_API 48 | int ARGBToRGB24(const uint8* src_argb, int src_stride_argb, 49 | uint8* dst_rgb24, int dst_stride_rgb24, 50 | int width, int height); 51 | 52 | // Convert ARGB To RAW. 53 | LIBYUV_API 54 | int ARGBToRAW(const uint8* src_argb, int src_stride_argb, 55 | uint8* dst_rgb, int dst_stride_rgb, 56 | int width, int height); 57 | 58 | // Convert ARGB To RGB565. 59 | LIBYUV_API 60 | int ARGBToRGB565(const uint8* src_argb, int src_stride_argb, 61 | uint8* dst_rgb565, int dst_stride_rgb565, 62 | int width, int height); 63 | 64 | // Convert ARGB To RGB565 with 4x4 dither matrix (16 bytes). 65 | // Values in dither matrix from 0 to 7 recommended. 66 | // The order of the dither matrix is first byte is upper left. 67 | // TODO(fbarchard): Consider pointer to 2d array for dither4x4. 68 | // const uint8(*dither)[4][4]; 69 | LIBYUV_API 70 | int ARGBToRGB565Dither(const uint8* src_argb, int src_stride_argb, 71 | uint8* dst_rgb565, int dst_stride_rgb565, 72 | const uint8* dither4x4, int width, int height); 73 | 74 | // Convert ARGB To ARGB1555. 75 | LIBYUV_API 76 | int ARGBToARGB1555(const uint8* src_argb, int src_stride_argb, 77 | uint8* dst_argb1555, int dst_stride_argb1555, 78 | int width, int height); 79 | 80 | // Convert ARGB To ARGB4444. 81 | LIBYUV_API 82 | int ARGBToARGB4444(const uint8* src_argb, int src_stride_argb, 83 | uint8* dst_argb4444, int dst_stride_argb4444, 84 | int width, int height); 85 | 86 | // Convert ARGB To I444. 87 | LIBYUV_API 88 | int ARGBToI444(const uint8* src_argb, int src_stride_argb, 89 | uint8* dst_y, int dst_stride_y, 90 | uint8* dst_u, int dst_stride_u, 91 | uint8* dst_v, int dst_stride_v, 92 | int width, int height); 93 | 94 | // Convert ARGB To I422. 95 | LIBYUV_API 96 | int ARGBToI422(const uint8* src_argb, int src_stride_argb, 97 | uint8* dst_y, int dst_stride_y, 98 | uint8* dst_u, int dst_stride_u, 99 | uint8* dst_v, int dst_stride_v, 100 | int width, int height); 101 | 102 | // Convert ARGB To I420. (also in convert.h) 103 | LIBYUV_API 104 | int ARGBToI420(const uint8* src_argb, int src_stride_argb, 105 | uint8* dst_y, int dst_stride_y, 106 | uint8* dst_u, int dst_stride_u, 107 | uint8* dst_v, int dst_stride_v, 108 | int width, int height); 109 | 110 | // Convert ARGB to J420. (JPeg full range I420). 111 | LIBYUV_API 112 | int ARGBToJ420(const uint8* src_argb, int src_stride_argb, 113 | uint8* dst_yj, int dst_stride_yj, 114 | uint8* dst_u, int dst_stride_u, 115 | uint8* dst_v, int dst_stride_v, 116 | int width, int height); 117 | 118 | // Convert ARGB to J422. 119 | LIBYUV_API 120 | int ARGBToJ422(const uint8* src_argb, int src_stride_argb, 121 | uint8* dst_yj, int dst_stride_yj, 122 | uint8* dst_u, int dst_stride_u, 123 | uint8* dst_v, int dst_stride_v, 124 | int width, int height); 125 | 126 | // Convert ARGB To I411. 127 | LIBYUV_API 128 | int ARGBToI411(const uint8* src_argb, int src_stride_argb, 129 | uint8* dst_y, int dst_stride_y, 130 | uint8* dst_u, int dst_stride_u, 131 | uint8* dst_v, int dst_stride_v, 132 | int width, int height); 133 | 134 | // Convert ARGB to J400. (JPeg full range). 135 | LIBYUV_API 136 | int ARGBToJ400(const uint8* src_argb, int src_stride_argb, 137 | uint8* dst_yj, int dst_stride_yj, 138 | int width, int height); 139 | 140 | // Convert ARGB to I400. 141 | LIBYUV_API 142 | int ARGBToI400(const uint8* src_argb, int src_stride_argb, 143 | uint8* dst_y, int dst_stride_y, 144 | int width, int height); 145 | 146 | // Convert ARGB to G. (Reverse of J400toARGB, which replicates G back to ARGB) 147 | LIBYUV_API 148 | int ARGBToG(const uint8* src_argb, int src_stride_argb, 149 | uint8* dst_g, int dst_stride_g, 150 | int width, int height); 151 | 152 | // Convert ARGB To NV12. 153 | LIBYUV_API 154 | int ARGBToNV12(const uint8* src_argb, int src_stride_argb, 155 | uint8* dst_y, int dst_stride_y, 156 | uint8* dst_uv, int dst_stride_uv, 157 | int width, int height); 158 | 159 | // Convert ARGB To NV21. 160 | LIBYUV_API 161 | int ARGBToNV21(const uint8* src_argb, int src_stride_argb, 162 | uint8* dst_y, int dst_stride_y, 163 | uint8* dst_vu, int dst_stride_vu, 164 | int width, int height); 165 | 166 | // Convert ARGB To NV21. 167 | LIBYUV_API 168 | int ARGBToNV21(const uint8* src_argb, int src_stride_argb, 169 | uint8* dst_y, int dst_stride_y, 170 | uint8* dst_vu, int dst_stride_vu, 171 | int width, int height); 172 | 173 | // Convert ARGB To YUY2. 174 | LIBYUV_API 175 | int ARGBToYUY2(const uint8* src_argb, int src_stride_argb, 176 | uint8* dst_yuy2, int dst_stride_yuy2, 177 | int width, int height); 178 | 179 | // Convert ARGB To UYVY. 180 | LIBYUV_API 181 | int ARGBToUYVY(const uint8* src_argb, int src_stride_argb, 182 | uint8* dst_uyvy, int dst_stride_uyvy, 183 | int width, int height); 184 | 185 | #ifdef __cplusplus 186 | } // extern "C" 187 | } // namespace libyuv 188 | #endif 189 | 190 | #endif // INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_ NOLINT 191 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/cpu_id.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_CPU_ID_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_CPU_ID_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | namespace libyuv { 18 | extern "C" { 19 | #endif 20 | 21 | // Internal flag to indicate cpuid requires initialization. 22 | static const int kCpuInitialized = 0x1; 23 | 24 | // These flags are only valid on ARM processors. 25 | static const int kCpuHasARM = 0x2; 26 | static const int kCpuHasNEON = 0x4; 27 | // 0x8 reserved for future ARM flag. 28 | 29 | // These flags are only valid on x86 processors. 30 | static const int kCpuHasX86 = 0x10; 31 | static const int kCpuHasSSE2 = 0x20; 32 | static const int kCpuHasSSSE3 = 0x40; 33 | static const int kCpuHasSSE41 = 0x80; 34 | static const int kCpuHasSSE42 = 0x100; 35 | static const int kCpuHasAVX = 0x200; 36 | static const int kCpuHasAVX2 = 0x400; 37 | static const int kCpuHasERMS = 0x800; 38 | static const int kCpuHasFMA3 = 0x1000; 39 | static const int kCpuHasAVX3 = 0x2000; 40 | // 0x2000, 0x4000, 0x8000 reserved for future X86 flags. 41 | 42 | // These flags are only valid on MIPS processors. 43 | static const int kCpuHasMIPS = 0x10000; 44 | static const int kCpuHasDSPR2 = 0x20000; 45 | 46 | // Internal function used to auto-init. 47 | LIBYUV_API 48 | int InitCpuFlags(void); 49 | 50 | // Internal function for parsing /proc/cpuinfo. 51 | LIBYUV_API 52 | int ArmCpuCaps(const char* cpuinfo_name); 53 | 54 | // Detect CPU has SSE2 etc. 55 | // Test_flag parameter should be one of kCpuHas constants above. 56 | // returns non-zero if instruction set is detected 57 | static __inline int TestCpuFlag(int test_flag) { 58 | LIBYUV_API extern int cpu_info_; 59 | return (!cpu_info_ ? InitCpuFlags() : cpu_info_) & test_flag; 60 | } 61 | 62 | // For testing, allow CPU flags to be disabled. 63 | // ie MaskCpuFlags(~kCpuHasSSSE3) to disable SSSE3. 64 | // MaskCpuFlags(-1) to enable all cpu specific optimizations. 65 | // MaskCpuFlags(1) to disable all cpu specific optimizations. 66 | LIBYUV_API 67 | void MaskCpuFlags(int enable_flags); 68 | 69 | // Low level cpuid for X86. Returns zeros on other CPUs. 70 | // eax is the info type that you want. 71 | // ecx is typically the cpu number, and should normally be zero. 72 | LIBYUV_API 73 | void CpuId(uint32 eax, uint32 ecx, uint32* cpu_info); 74 | 75 | #ifdef __cplusplus 76 | } // extern "C" 77 | } // namespace libyuv 78 | #endif 79 | 80 | #endif // INCLUDE_LIBYUV_CPU_ID_H_ NOLINT 81 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs.zip -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Debug/libyuv_win10_x64.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Debug/libyuv_win10_x64.lib -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Debug/libyuv_win10_x86.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Debug/libyuv_win10_x86.lib -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Release/libyuv_win10_x64.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Release/libyuv_win10_x64.lib -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Release/libyuv_win10_x86.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libs/Release/libyuv_win10_x86.lib -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/libyuv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/compare.h" 16 | #include "libyuv/convert.h" 17 | #include "libyuv/convert_argb.h" 18 | #include "libyuv/convert_from.h" 19 | #include "libyuv/convert_from_argb.h" 20 | #include "libyuv/cpu_id.h" 21 | #include "libyuv/mjpeg_decoder.h" 22 | #include "libyuv/planar_functions.h" 23 | #include "libyuv/rotate.h" 24 | #include "libyuv/rotate_argb.h" 25 | #include "libyuv/row.h" 26 | #include "libyuv/scale.h" 27 | #include "libyuv/scale_argb.h" 28 | #include "libyuv/scale_row.h" 29 | #include "libyuv/version.h" 30 | #include "libyuv/video_common.h" 31 | 32 | #endif // INCLUDE_LIBYUV_H_ NOLINT 33 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/mjpeg_decoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_MJPEG_DECODER_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_MJPEG_DECODER_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | // NOTE: For a simplified public API use convert.h MJPGToI420(). 18 | 19 | struct jpeg_common_struct; 20 | struct jpeg_decompress_struct; 21 | struct jpeg_source_mgr; 22 | 23 | namespace libyuv { 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | LIBYUV_BOOL ValidateJpeg(const uint8* sample, size_t sample_size); 30 | 31 | #ifdef __cplusplus 32 | } // extern "C" 33 | #endif 34 | 35 | static const uint32 kUnknownDataSize = 0xFFFFFFFF; 36 | 37 | enum JpegSubsamplingType { 38 | kJpegYuv420, 39 | kJpegYuv422, 40 | kJpegYuv411, 41 | kJpegYuv444, 42 | kJpegYuv400, 43 | kJpegUnknown 44 | }; 45 | 46 | struct Buffer { 47 | const uint8* data; 48 | int len; 49 | }; 50 | 51 | struct BufferVector { 52 | Buffer* buffers; 53 | int len; 54 | int pos; 55 | }; 56 | 57 | struct SetJmpErrorMgr; 58 | 59 | // MJPEG ("Motion JPEG") is a pseudo-standard video codec where the frames are 60 | // simply independent JPEG images with a fixed huffman table (which is omitted). 61 | // It is rarely used in video transmission, but is common as a camera capture 62 | // format, especially in Logitech devices. This class implements a decoder for 63 | // MJPEG frames. 64 | // 65 | // See http://tools.ietf.org/html/rfc2435 66 | class LIBYUV_API MJpegDecoder { 67 | public: 68 | typedef void (*CallbackFunction)(void* opaque, 69 | const uint8* const* data, 70 | const int* strides, 71 | int rows); 72 | 73 | static const int kColorSpaceUnknown; 74 | static const int kColorSpaceGrayscale; 75 | static const int kColorSpaceRgb; 76 | static const int kColorSpaceYCbCr; 77 | static const int kColorSpaceCMYK; 78 | static const int kColorSpaceYCCK; 79 | 80 | MJpegDecoder(); 81 | ~MJpegDecoder(); 82 | 83 | // Loads a new frame, reads its headers, and determines the uncompressed 84 | // image format. 85 | // Returns LIBYUV_TRUE if image looks valid and format is supported. 86 | // If return value is LIBYUV_TRUE, then the values for all the following 87 | // getters are populated. 88 | // src_len is the size of the compressed mjpeg frame in bytes. 89 | LIBYUV_BOOL LoadFrame(const uint8* src, size_t src_len); 90 | 91 | // Returns width of the last loaded frame in pixels. 92 | int GetWidth(); 93 | 94 | // Returns height of the last loaded frame in pixels. 95 | int GetHeight(); 96 | 97 | // Returns format of the last loaded frame. The return value is one of the 98 | // kColorSpace* constants. 99 | int GetColorSpace(); 100 | 101 | // Number of color components in the color space. 102 | int GetNumComponents(); 103 | 104 | // Sample factors of the n-th component. 105 | int GetHorizSampFactor(int component); 106 | 107 | int GetVertSampFactor(int component); 108 | 109 | int GetHorizSubSampFactor(int component); 110 | 111 | int GetVertSubSampFactor(int component); 112 | 113 | // Public for testability. 114 | int GetImageScanlinesPerImcuRow(); 115 | 116 | // Public for testability. 117 | int GetComponentScanlinesPerImcuRow(int component); 118 | 119 | // Width of a component in bytes. 120 | int GetComponentWidth(int component); 121 | 122 | // Height of a component. 123 | int GetComponentHeight(int component); 124 | 125 | // Width of a component in bytes with padding for DCTSIZE. Public for testing. 126 | int GetComponentStride(int component); 127 | 128 | // Size of a component in bytes. 129 | int GetComponentSize(int component); 130 | 131 | // Call this after LoadFrame() if you decide you don't want to decode it 132 | // after all. 133 | LIBYUV_BOOL UnloadFrame(); 134 | 135 | // Decodes the entire image into a one-buffer-per-color-component format. 136 | // dst_width must match exactly. dst_height must be <= to image height; if 137 | // less, the image is cropped. "planes" must have size equal to at least 138 | // GetNumComponents() and they must point to non-overlapping buffers of size 139 | // at least GetComponentSize(i). The pointers in planes are incremented 140 | // to point to after the end of the written data. 141 | // TODO(fbarchard): Add dst_x, dst_y to allow specific rect to be decoded. 142 | LIBYUV_BOOL DecodeToBuffers(uint8** planes, int dst_width, int dst_height); 143 | 144 | // Decodes the entire image and passes the data via repeated calls to a 145 | // callback function. Each call will get the data for a whole number of 146 | // image scanlines. 147 | // TODO(fbarchard): Add dst_x, dst_y to allow specific rect to be decoded. 148 | LIBYUV_BOOL DecodeToCallback(CallbackFunction fn, void* opaque, 149 | int dst_width, int dst_height); 150 | 151 | // The helper function which recognizes the jpeg sub-sampling type. 152 | static JpegSubsamplingType JpegSubsamplingTypeHelper( 153 | int* subsample_x, int* subsample_y, int number_of_components); 154 | 155 | private: 156 | void AllocOutputBuffers(int num_outbufs); 157 | void DestroyOutputBuffers(); 158 | 159 | LIBYUV_BOOL StartDecode(); 160 | LIBYUV_BOOL FinishDecode(); 161 | 162 | void SetScanlinePointers(uint8** data); 163 | LIBYUV_BOOL DecodeImcuRow(); 164 | 165 | int GetComponentScanlinePadding(int component); 166 | 167 | // A buffer holding the input data for a frame. 168 | Buffer buf_; 169 | BufferVector buf_vec_; 170 | 171 | jpeg_decompress_struct* decompress_struct_; 172 | jpeg_source_mgr* source_mgr_; 173 | SetJmpErrorMgr* error_mgr_; 174 | 175 | // LIBYUV_TRUE iff at least one component has scanline padding. (i.e., 176 | // GetComponentScanlinePadding() != 0.) 177 | LIBYUV_BOOL has_scanline_padding_; 178 | 179 | // Temporaries used to point to scanline outputs. 180 | int num_outbufs_; // Outermost size of all arrays below. 181 | uint8*** scanlines_; 182 | int* scanlines_sizes_; 183 | // Temporary buffer used for decoding when we can't decode directly to the 184 | // output buffers. Large enough for just one iMCU row. 185 | uint8** databuf_; 186 | int* databuf_strides_; 187 | }; 188 | 189 | } // namespace libyuv 190 | 191 | #endif // __cplusplus 192 | #endif // INCLUDE_LIBYUV_MJPEG_DECODER_H_ NOLINT 193 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/rotate.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_ROTATE_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_ROTATE_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | namespace libyuv { 18 | extern "C" { 19 | #endif 20 | 21 | // Supported rotation. 22 | typedef enum RotationMode { 23 | kRotate0 = 0, // No rotation. 24 | kRotate90 = 90, // Rotate 90 degrees clockwise. 25 | kRotate180 = 180, // Rotate 180 degrees. 26 | kRotate270 = 270, // Rotate 270 degrees clockwise. 27 | 28 | // Deprecated. 29 | kRotateNone = 0, 30 | kRotateClockwise = 90, 31 | kRotateCounterClockwise = 270, 32 | } RotationModeEnum; 33 | 34 | // Rotate I420 frame. 35 | LIBYUV_API 36 | int I420Rotate(const uint8* src_y, int src_stride_y, 37 | const uint8* src_u, int src_stride_u, 38 | const uint8* src_v, int src_stride_v, 39 | uint8* dst_y, int dst_stride_y, 40 | uint8* dst_u, int dst_stride_u, 41 | uint8* dst_v, int dst_stride_v, 42 | int src_width, int src_height, enum RotationMode mode); 43 | 44 | // Rotate NV12 input and store in I420. 45 | LIBYUV_API 46 | int NV12ToI420Rotate(const uint8* src_y, int src_stride_y, 47 | const uint8* src_uv, int src_stride_uv, 48 | uint8* dst_y, int dst_stride_y, 49 | uint8* dst_u, int dst_stride_u, 50 | uint8* dst_v, int dst_stride_v, 51 | int src_width, int src_height, enum RotationMode mode); 52 | 53 | // Rotate a plane by 0, 90, 180, or 270. 54 | LIBYUV_API 55 | int RotatePlane(const uint8* src, int src_stride, 56 | uint8* dst, int dst_stride, 57 | int src_width, int src_height, enum RotationMode mode); 58 | 59 | // Rotate planes by 90, 180, 270. Deprecated. 60 | LIBYUV_API 61 | void RotatePlane90(const uint8* src, int src_stride, 62 | uint8* dst, int dst_stride, 63 | int width, int height); 64 | 65 | LIBYUV_API 66 | void RotatePlane180(const uint8* src, int src_stride, 67 | uint8* dst, int dst_stride, 68 | int width, int height); 69 | 70 | LIBYUV_API 71 | void RotatePlane270(const uint8* src, int src_stride, 72 | uint8* dst, int dst_stride, 73 | int width, int height); 74 | 75 | LIBYUV_API 76 | void RotateUV90(const uint8* src, int src_stride, 77 | uint8* dst_a, int dst_stride_a, 78 | uint8* dst_b, int dst_stride_b, 79 | int width, int height); 80 | 81 | // Rotations for when U and V are interleaved. 82 | // These functions take one input pointer and 83 | // split the data into two buffers while 84 | // rotating them. Deprecated. 85 | LIBYUV_API 86 | void RotateUV180(const uint8* src, int src_stride, 87 | uint8* dst_a, int dst_stride_a, 88 | uint8* dst_b, int dst_stride_b, 89 | int width, int height); 90 | 91 | LIBYUV_API 92 | void RotateUV270(const uint8* src, int src_stride, 93 | uint8* dst_a, int dst_stride_a, 94 | uint8* dst_b, int dst_stride_b, 95 | int width, int height); 96 | 97 | // The 90 and 270 functions are based on transposes. 98 | // Doing a transpose with reversing the read/write 99 | // order will result in a rotation by +- 90 degrees. 100 | // Deprecated. 101 | LIBYUV_API 102 | void TransposePlane(const uint8* src, int src_stride, 103 | uint8* dst, int dst_stride, 104 | int width, int height); 105 | 106 | LIBYUV_API 107 | void TransposeUV(const uint8* src, int src_stride, 108 | uint8* dst_a, int dst_stride_a, 109 | uint8* dst_b, int dst_stride_b, 110 | int width, int height); 111 | 112 | #ifdef __cplusplus 113 | } // extern "C" 114 | } // namespace libyuv 115 | #endif 116 | 117 | #endif // INCLUDE_LIBYUV_ROTATE_H_ NOLINT 118 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/rotate_argb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_ROTATE_ARGB_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_ROTATE_ARGB_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/rotate.h" // For RotationMode. 16 | 17 | #ifdef __cplusplus 18 | namespace libyuv { 19 | extern "C" { 20 | #endif 21 | 22 | // Rotate ARGB frame 23 | LIBYUV_API 24 | int ARGBRotate(const uint8* src_argb, int src_stride_argb, 25 | uint8* dst_argb, int dst_stride_argb, 26 | int src_width, int src_height, enum RotationMode mode); 27 | 28 | #ifdef __cplusplus 29 | } // extern "C" 30 | } // namespace libyuv 31 | #endif 32 | 33 | #endif // INCLUDE_LIBYUV_ROTATE_ARGB_H_ NOLINT 34 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/rotate_row.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_ROTATE_ROW_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_ROTATE_ROW_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | namespace libyuv { 18 | extern "C" { 19 | #endif 20 | 21 | #if defined(__pnacl__) || defined(__CLR_VER) || \ 22 | (defined(__i386__) && !defined(__SSE2__)) 23 | #define LIBYUV_DISABLE_X86 24 | #endif 25 | // MemorySanitizer does not support assembly code yet. http://crbug.com/344505 26 | #if defined(__has_feature) 27 | #if __has_feature(memory_sanitizer) 28 | #define LIBYUV_DISABLE_X86 29 | #endif 30 | #endif 31 | // The following are available for Visual C and clangcl 32 bit: 32 | #if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) 33 | #define HAS_TRANSPOSEWX8_SSSE3 34 | #define HAS_TRANSPOSEUVWX8_SSE2 35 | #endif 36 | 37 | // The following are available for GCC 32 or 64 bit but not NaCL for 64 bit: 38 | #if !defined(LIBYUV_DISABLE_X86) && \ 39 | (defined(__i386__) || (defined(__x86_64__) && !defined(__native_client__))) 40 | #define HAS_TRANSPOSEWX8_SSSE3 41 | #endif 42 | 43 | // The following are available for 64 bit GCC but not NaCL: 44 | #if !defined(LIBYUV_DISABLE_X86) && !defined(__native_client__) && \ 45 | defined(__x86_64__) 46 | #define HAS_TRANSPOSEWX8_FAST_SSSE3 47 | #define HAS_TRANSPOSEUVWX8_SSE2 48 | #endif 49 | 50 | #if !defined(LIBYUV_DISABLE_NEON) && !defined(__native_client__) && \ 51 | (defined(__ARM_NEON__) || defined(LIBYUV_NEON) || defined(__aarch64__)) 52 | #define HAS_TRANSPOSEWX8_NEON 53 | #define HAS_TRANSPOSEUVWX8_NEON 54 | #endif 55 | 56 | #if !defined(LIBYUV_DISABLE_MIPS) && !defined(__native_client__) && \ 57 | defined(__mips__) && \ 58 | defined(__mips_dsp) && (__mips_dsp_rev >= 2) 59 | #define HAS_TRANSPOSEWX8_DSPR2 60 | #define HAS_TRANSPOSEUVWX8_DSPR2 61 | #endif // defined(__mips__) 62 | 63 | void TransposeWxH_C(const uint8* src, int src_stride, 64 | uint8* dst, int dst_stride, int width, int height); 65 | 66 | void TransposeWx8_C(const uint8* src, int src_stride, 67 | uint8* dst, int dst_stride, int width); 68 | void TransposeWx8_NEON(const uint8* src, int src_stride, 69 | uint8* dst, int dst_stride, int width); 70 | void TransposeWx8_SSSE3(const uint8* src, int src_stride, 71 | uint8* dst, int dst_stride, int width); 72 | void TransposeWx8_Fast_SSSE3(const uint8* src, int src_stride, 73 | uint8* dst, int dst_stride, int width); 74 | void TransposeWx8_DSPR2(const uint8* src, int src_stride, 75 | uint8* dst, int dst_stride, int width); 76 | void TransposeWx8_Fast_DSPR2(const uint8* src, int src_stride, 77 | uint8* dst, int dst_stride, int width); 78 | 79 | void TransposeWx8_Any_NEON(const uint8* src, int src_stride, 80 | uint8* dst, int dst_stride, int width); 81 | void TransposeWx8_Any_SSSE3(const uint8* src, int src_stride, 82 | uint8* dst, int dst_stride, int width); 83 | void TransposeWx8_Fast_Any_SSSE3(const uint8* src, int src_stride, 84 | uint8* dst, int dst_stride, int width); 85 | void TransposeWx8_Any_DSPR2(const uint8* src, int src_stride, 86 | uint8* dst, int dst_stride, int width); 87 | 88 | void TransposeUVWxH_C(const uint8* src, int src_stride, 89 | uint8* dst_a, int dst_stride_a, 90 | uint8* dst_b, int dst_stride_b, 91 | int width, int height); 92 | 93 | void TransposeUVWx8_C(const uint8* src, int src_stride, 94 | uint8* dst_a, int dst_stride_a, 95 | uint8* dst_b, int dst_stride_b, int width); 96 | void TransposeUVWx8_SSE2(const uint8* src, int src_stride, 97 | uint8* dst_a, int dst_stride_a, 98 | uint8* dst_b, int dst_stride_b, int width); 99 | void TransposeUVWx8_NEON(const uint8* src, int src_stride, 100 | uint8* dst_a, int dst_stride_a, 101 | uint8* dst_b, int dst_stride_b, int width); 102 | void TransposeUVWx8_DSPR2(const uint8* src, int src_stride, 103 | uint8* dst_a, int dst_stride_a, 104 | uint8* dst_b, int dst_stride_b, int width); 105 | 106 | void TransposeUVWx8_Any_SSE2(const uint8* src, int src_stride, 107 | uint8* dst_a, int dst_stride_a, 108 | uint8* dst_b, int dst_stride_b, int width); 109 | void TransposeUVWx8_Any_NEON(const uint8* src, int src_stride, 110 | uint8* dst_a, int dst_stride_a, 111 | uint8* dst_b, int dst_stride_b, int width); 112 | void TransposeUVWx8_Any_DSPR2(const uint8* src, int src_stride, 113 | uint8* dst_a, int dst_stride_a, 114 | uint8* dst_b, int dst_stride_b, int width); 115 | 116 | #ifdef __cplusplus 117 | } // extern "C" 118 | } // namespace libyuv 119 | #endif 120 | 121 | #endif // INCLUDE_LIBYUV_ROTATE_ROW_H_ NOLINT 122 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/scale.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_SCALE_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_SCALE_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | 16 | #ifdef __cplusplus 17 | namespace libyuv { 18 | extern "C" { 19 | #endif 20 | 21 | // Supported filtering. 22 | typedef enum FilterMode { 23 | kFilterNone = 0, // Point sample; Fastest. 24 | kFilterLinear = 1, // Filter horizontally only. 25 | kFilterBilinear = 2, // Faster than box, but lower quality scaling down. 26 | kFilterBox = 3 // Highest quality. 27 | } FilterModeEnum; 28 | 29 | // Scale a YUV plane. 30 | LIBYUV_API 31 | void ScalePlane(const uint8* src, int src_stride, 32 | int src_width, int src_height, 33 | uint8* dst, int dst_stride, 34 | int dst_width, int dst_height, 35 | enum FilterMode filtering); 36 | 37 | LIBYUV_API 38 | void ScalePlane_16(const uint16* src, int src_stride, 39 | int src_width, int src_height, 40 | uint16* dst, int dst_stride, 41 | int dst_width, int dst_height, 42 | enum FilterMode filtering); 43 | 44 | // Scales a YUV 4:2:0 image from the src width and height to the 45 | // dst width and height. 46 | // If filtering is kFilterNone, a simple nearest-neighbor algorithm is 47 | // used. This produces basic (blocky) quality at the fastest speed. 48 | // If filtering is kFilterBilinear, interpolation is used to produce a better 49 | // quality image, at the expense of speed. 50 | // If filtering is kFilterBox, averaging is used to produce ever better 51 | // quality image, at further expense of speed. 52 | // Returns 0 if successful. 53 | 54 | LIBYUV_API 55 | int I420Scale(const uint8* src_y, int src_stride_y, 56 | const uint8* src_u, int src_stride_u, 57 | const uint8* src_v, int src_stride_v, 58 | int src_width, int src_height, 59 | uint8* dst_y, int dst_stride_y, 60 | uint8* dst_u, int dst_stride_u, 61 | uint8* dst_v, int dst_stride_v, 62 | int dst_width, int dst_height, 63 | enum FilterMode filtering); 64 | 65 | LIBYUV_API 66 | int I420Scale_16(const uint16* src_y, int src_stride_y, 67 | const uint16* src_u, int src_stride_u, 68 | const uint16* src_v, int src_stride_v, 69 | int src_width, int src_height, 70 | uint16* dst_y, int dst_stride_y, 71 | uint16* dst_u, int dst_stride_u, 72 | uint16* dst_v, int dst_stride_v, 73 | int dst_width, int dst_height, 74 | enum FilterMode filtering); 75 | 76 | #ifdef __cplusplus 77 | // Legacy API. Deprecated. 78 | LIBYUV_API 79 | int Scale(const uint8* src_y, const uint8* src_u, const uint8* src_v, 80 | int src_stride_y, int src_stride_u, int src_stride_v, 81 | int src_width, int src_height, 82 | uint8* dst_y, uint8* dst_u, uint8* dst_v, 83 | int dst_stride_y, int dst_stride_u, int dst_stride_v, 84 | int dst_width, int dst_height, 85 | LIBYUV_BOOL interpolate); 86 | 87 | // Legacy API. Deprecated. 88 | LIBYUV_API 89 | int ScaleOffset(const uint8* src_i420, int src_width, int src_height, 90 | uint8* dst_i420, int dst_width, int dst_height, int dst_yoffset, 91 | LIBYUV_BOOL interpolate); 92 | 93 | // For testing, allow disabling of specialized scalers. 94 | LIBYUV_API 95 | void SetUseReferenceImpl(LIBYUV_BOOL use); 96 | #endif // __cplusplus 97 | 98 | #ifdef __cplusplus 99 | } // extern "C" 100 | } // namespace libyuv 101 | #endif 102 | 103 | #endif // INCLUDE_LIBYUV_SCALE_H_ NOLINT 104 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/scale_argb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_SCALE_ARGB_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_SCALE_ARGB_H_ 13 | 14 | #include "libyuv/basic_types.h" 15 | #include "libyuv/scale.h" // For FilterMode 16 | 17 | #ifdef __cplusplus 18 | namespace libyuv { 19 | extern "C" { 20 | #endif 21 | 22 | LIBYUV_API 23 | int ARGBScale(const uint8* src_argb, int src_stride_argb, 24 | int src_width, int src_height, 25 | uint8* dst_argb, int dst_stride_argb, 26 | int dst_width, int dst_height, 27 | enum FilterMode filtering); 28 | 29 | // Clipped scale takes destination rectangle coordinates for clip values. 30 | LIBYUV_API 31 | int ARGBScaleClip(const uint8* src_argb, int src_stride_argb, 32 | int src_width, int src_height, 33 | uint8* dst_argb, int dst_stride_argb, 34 | int dst_width, int dst_height, 35 | int clip_x, int clip_y, int clip_width, int clip_height, 36 | enum FilterMode filtering); 37 | 38 | // Scale with YUV conversion to ARGB and clipping. 39 | LIBYUV_API 40 | int YUVToARGBScaleClip(const uint8* src_y, int src_stride_y, 41 | const uint8* src_u, int src_stride_u, 42 | const uint8* src_v, int src_stride_v, 43 | uint32 src_fourcc, 44 | int src_width, int src_height, 45 | uint8* dst_argb, int dst_stride_argb, 46 | uint32 dst_fourcc, 47 | int dst_width, int dst_height, 48 | int clip_x, int clip_y, int clip_width, int clip_height, 49 | enum FilterMode filtering); 50 | 51 | #ifdef __cplusplus 52 | } // extern "C" 53 | } // namespace libyuv 54 | #endif 55 | 56 | #endif // INCLUDE_LIBYUV_SCALE_ARGB_H_ NOLINT 57 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | #ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT 12 | #define INCLUDE_LIBYUV_VERSION_H_ 13 | 14 | #define LIBYUV_VERSION 1609 15 | 16 | #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT 17 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/libyuv/video_common.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 | * 4 | * Use of this source code is governed by a BSD-style license 5 | * that can be found in the LICENSE file in the root of the source 6 | * tree. An additional intellectual property rights grant can be found 7 | * in the file PATENTS. All contributing project authors may 8 | * be found in the AUTHORS file in the root of the source tree. 9 | */ 10 | 11 | // Common definitions for video, including fourcc and VideoFormat. 12 | 13 | #ifndef INCLUDE_LIBYUV_VIDEO_COMMON_H_ // NOLINT 14 | #define INCLUDE_LIBYUV_VIDEO_COMMON_H_ 15 | 16 | #include "libyuv/basic_types.h" 17 | 18 | #ifdef __cplusplus 19 | namespace libyuv { 20 | extern "C" { 21 | #endif 22 | 23 | ////////////////////////////////////////////////////////////////////////////// 24 | // Definition of FourCC codes 25 | ////////////////////////////////////////////////////////////////////////////// 26 | 27 | // Convert four characters to a FourCC code. 28 | // Needs to be a macro otherwise the OS X compiler complains when the kFormat* 29 | // constants are used in a switch. 30 | #ifdef __cplusplus 31 | #define FOURCC(a, b, c, d) ( \ 32 | (static_cast(a)) | (static_cast(b) << 8) | \ 33 | (static_cast(c) << 16) | (static_cast(d) << 24)) 34 | #else 35 | #define FOURCC(a, b, c, d) ( \ 36 | ((uint32)(a)) | ((uint32)(b) << 8) | /* NOLINT */ \ 37 | ((uint32)(c) << 16) | ((uint32)(d) << 24)) /* NOLINT */ 38 | #endif 39 | 40 | // Some pages discussing FourCC codes: 41 | // http://www.fourcc.org/yuv.php 42 | // http://v4l2spec.bytesex.org/spec/book1.htm 43 | // http://developer.apple.com/quicktime/icefloe/dispatch020.html 44 | // http://msdn.microsoft.com/library/windows/desktop/dd206750.aspx#nv12 45 | // http://people.xiph.org/~xiphmont/containers/nut/nut4cc.txt 46 | 47 | // FourCC codes grouped according to implementation efficiency. 48 | // Primary formats should convert in 1 efficient step. 49 | // Secondary formats are converted in 2 steps. 50 | // Auxilliary formats call primary converters. 51 | enum FourCC { 52 | // 9 Primary YUV formats: 5 planar, 2 biplanar, 2 packed. 53 | FOURCC_I420 = FOURCC('I', '4', '2', '0'), 54 | FOURCC_I422 = FOURCC('I', '4', '2', '2'), 55 | FOURCC_I444 = FOURCC('I', '4', '4', '4'), 56 | FOURCC_I411 = FOURCC('I', '4', '1', '1'), 57 | FOURCC_I400 = FOURCC('I', '4', '0', '0'), 58 | FOURCC_NV21 = FOURCC('N', 'V', '2', '1'), 59 | FOURCC_NV12 = FOURCC('N', 'V', '1', '2'), 60 | FOURCC_YUY2 = FOURCC('Y', 'U', 'Y', '2'), 61 | FOURCC_UYVY = FOURCC('U', 'Y', 'V', 'Y'), 62 | 63 | // 2 Secondary YUV formats: row biplanar. 64 | FOURCC_M420 = FOURCC('M', '4', '2', '0'), 65 | FOURCC_Q420 = FOURCC('Q', '4', '2', '0'), // deprecated. 66 | 67 | // 9 Primary RGB formats: 4 32 bpp, 2 24 bpp, 3 16 bpp. 68 | FOURCC_ARGB = FOURCC('A', 'R', 'G', 'B'), 69 | FOURCC_BGRA = FOURCC('B', 'G', 'R', 'A'), 70 | FOURCC_ABGR = FOURCC('A', 'B', 'G', 'R'), 71 | FOURCC_24BG = FOURCC('2', '4', 'B', 'G'), 72 | FOURCC_RAW = FOURCC('r', 'a', 'w', ' '), 73 | FOURCC_RGBA = FOURCC('R', 'G', 'B', 'A'), 74 | FOURCC_RGBP = FOURCC('R', 'G', 'B', 'P'), // rgb565 LE. 75 | FOURCC_RGBO = FOURCC('R', 'G', 'B', 'O'), // argb1555 LE. 76 | FOURCC_R444 = FOURCC('R', '4', '4', '4'), // argb4444 LE. 77 | 78 | // 4 Secondary RGB formats: 4 Bayer Patterns. deprecated. 79 | FOURCC_RGGB = FOURCC('R', 'G', 'G', 'B'), 80 | FOURCC_BGGR = FOURCC('B', 'G', 'G', 'R'), 81 | FOURCC_GRBG = FOURCC('G', 'R', 'B', 'G'), 82 | FOURCC_GBRG = FOURCC('G', 'B', 'R', 'G'), 83 | 84 | // 1 Primary Compressed YUV format. 85 | FOURCC_MJPG = FOURCC('M', 'J', 'P', 'G'), 86 | 87 | // 5 Auxiliary YUV variations: 3 with U and V planes are swapped, 1 Alias. 88 | FOURCC_YV12 = FOURCC('Y', 'V', '1', '2'), 89 | FOURCC_YV16 = FOURCC('Y', 'V', '1', '6'), 90 | FOURCC_YV24 = FOURCC('Y', 'V', '2', '4'), 91 | FOURCC_YU12 = FOURCC('Y', 'U', '1', '2'), // Linux version of I420. 92 | FOURCC_J420 = FOURCC('J', '4', '2', '0'), 93 | FOURCC_J400 = FOURCC('J', '4', '0', '0'), // unofficial fourcc 94 | FOURCC_H420 = FOURCC('H', '4', '2', '0'), // unofficial fourcc 95 | 96 | // 14 Auxiliary aliases. CanonicalFourCC() maps these to canonical fourcc. 97 | FOURCC_IYUV = FOURCC('I', 'Y', 'U', 'V'), // Alias for I420. 98 | FOURCC_YU16 = FOURCC('Y', 'U', '1', '6'), // Alias for I422. 99 | FOURCC_YU24 = FOURCC('Y', 'U', '2', '4'), // Alias for I444. 100 | FOURCC_YUYV = FOURCC('Y', 'U', 'Y', 'V'), // Alias for YUY2. 101 | FOURCC_YUVS = FOURCC('y', 'u', 'v', 's'), // Alias for YUY2 on Mac. 102 | FOURCC_HDYC = FOURCC('H', 'D', 'Y', 'C'), // Alias for UYVY. 103 | FOURCC_2VUY = FOURCC('2', 'v', 'u', 'y'), // Alias for UYVY on Mac. 104 | FOURCC_JPEG = FOURCC('J', 'P', 'E', 'G'), // Alias for MJPG. 105 | FOURCC_DMB1 = FOURCC('d', 'm', 'b', '1'), // Alias for MJPG on Mac. 106 | FOURCC_BA81 = FOURCC('B', 'A', '8', '1'), // Alias for BGGR. 107 | FOURCC_RGB3 = FOURCC('R', 'G', 'B', '3'), // Alias for RAW. 108 | FOURCC_BGR3 = FOURCC('B', 'G', 'R', '3'), // Alias for 24BG. 109 | FOURCC_CM32 = FOURCC(0, 0, 0, 32), // Alias for BGRA kCMPixelFormat_32ARGB 110 | FOURCC_CM24 = FOURCC(0, 0, 0, 24), // Alias for RAW kCMPixelFormat_24RGB 111 | FOURCC_L555 = FOURCC('L', '5', '5', '5'), // Alias for RGBO. 112 | FOURCC_L565 = FOURCC('L', '5', '6', '5'), // Alias for RGBP. 113 | FOURCC_5551 = FOURCC('5', '5', '5', '1'), // Alias for RGBO. 114 | 115 | // 1 Auxiliary compressed YUV format set aside for capturer. 116 | FOURCC_H264 = FOURCC('H', '2', '6', '4'), 117 | 118 | // Match any fourcc. 119 | FOURCC_ANY = -1, 120 | }; 121 | 122 | enum FourCCBpp { 123 | // Canonical fourcc codes used in our code. 124 | FOURCC_BPP_I420 = 12, 125 | FOURCC_BPP_I422 = 16, 126 | FOURCC_BPP_I444 = 24, 127 | FOURCC_BPP_I411 = 12, 128 | FOURCC_BPP_I400 = 8, 129 | FOURCC_BPP_NV21 = 12, 130 | FOURCC_BPP_NV12 = 12, 131 | FOURCC_BPP_YUY2 = 16, 132 | FOURCC_BPP_UYVY = 16, 133 | FOURCC_BPP_M420 = 12, 134 | FOURCC_BPP_Q420 = 12, 135 | FOURCC_BPP_ARGB = 32, 136 | FOURCC_BPP_BGRA = 32, 137 | FOURCC_BPP_ABGR = 32, 138 | FOURCC_BPP_RGBA = 32, 139 | FOURCC_BPP_24BG = 24, 140 | FOURCC_BPP_RAW = 24, 141 | FOURCC_BPP_RGBP = 16, 142 | FOURCC_BPP_RGBO = 16, 143 | FOURCC_BPP_R444 = 16, 144 | FOURCC_BPP_RGGB = 8, 145 | FOURCC_BPP_BGGR = 8, 146 | FOURCC_BPP_GRBG = 8, 147 | FOURCC_BPP_GBRG = 8, 148 | FOURCC_BPP_YV12 = 12, 149 | FOURCC_BPP_YV16 = 16, 150 | FOURCC_BPP_YV24 = 24, 151 | FOURCC_BPP_YU12 = 12, 152 | FOURCC_BPP_J420 = 12, 153 | FOURCC_BPP_J400 = 8, 154 | FOURCC_BPP_H420 = 12, 155 | FOURCC_BPP_MJPG = 0, // 0 means unknown. 156 | FOURCC_BPP_H264 = 0, 157 | FOURCC_BPP_IYUV = 12, 158 | FOURCC_BPP_YU16 = 16, 159 | FOURCC_BPP_YU24 = 24, 160 | FOURCC_BPP_YUYV = 16, 161 | FOURCC_BPP_YUVS = 16, 162 | FOURCC_BPP_HDYC = 16, 163 | FOURCC_BPP_2VUY = 16, 164 | FOURCC_BPP_JPEG = 1, 165 | FOURCC_BPP_DMB1 = 1, 166 | FOURCC_BPP_BA81 = 8, 167 | FOURCC_BPP_RGB3 = 24, 168 | FOURCC_BPP_BGR3 = 24, 169 | FOURCC_BPP_CM32 = 32, 170 | FOURCC_BPP_CM24 = 24, 171 | 172 | // Match any fourcc. 173 | FOURCC_BPP_ANY = 0, // 0 means unknown. 174 | }; 175 | 176 | // Converts fourcc aliases into canonical ones. 177 | LIBYUV_API uint32 CanonicalFourCC(uint32 fourcc); 178 | 179 | #ifdef __cplusplus 180 | } // extern "C" 181 | } // namespace libyuv 182 | #endif 183 | 184 | #endif // INCLUDE_LIBYUV_VIDEO_COMMON_H_ NOLINT 185 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/macros.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define CHECK_HR(hr, msg) \ 4 | if (hr != S_OK) \ 5 | { \ 6 | printf(msg); \ 7 | printf("Error: %.2X.\n", hr); \ 8 | } 9 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/pch.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/pch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "targetver.h" 4 | 5 | #ifndef WIN32_LEAN_AND_MEAN 6 | #define WIN32_LEAN_AND_MEAN 7 | #endif 8 | 9 | #include 10 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/TexturesUWP/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcIntegration.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26430.6 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebRtcWrapper", "WebRtcWrapper\WebRtcWrapper.csproj", "{1857162F-96CC-451F-A4E2-3616207943AB}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlTestApp", "XamlTestApp\XamlTestApp.csproj", "{D01FEAF5-8747-49D7-A7D1-19DBED5840BE}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TexturesUWP", "TexturesUWP\TexturesUWP.vcxproj", "{CD55C6F2-DE59-415F-A843-8F413D9A60B0}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Debug|ARM = Debug|ARM 16 | Debug|x64 = Debug|x64 17 | Debug|x86 = Debug|x86 18 | Release|Any CPU = Release|Any CPU 19 | Release|ARM = Release|ARM 20 | Release|x64 = Release|x64 21 | Release|x86 = Release|x86 22 | EndGlobalSection 23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 24 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|ARM.ActiveCfg = Debug|ARM 27 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|ARM.Build.0 = Debug|ARM 28 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|x64.ActiveCfg = Debug|x64 29 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|x64.Build.0 = Debug|x64 30 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|x86.ActiveCfg = Debug|x86 31 | {1857162F-96CC-451F-A4E2-3616207943AB}.Debug|x86.Build.0 = Debug|x86 32 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|Any CPU.ActiveCfg = Release|Any CPU 33 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|Any CPU.Build.0 = Release|Any CPU 34 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|ARM.ActiveCfg = Release|ARM 35 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|ARM.Build.0 = Release|ARM 36 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|x64.ActiveCfg = Release|x64 37 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|x64.Build.0 = Release|x64 38 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|x86.ActiveCfg = Release|x86 39 | {1857162F-96CC-451F-A4E2-3616207943AB}.Release|x86.Build.0 = Release|x86 40 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|Any CPU.ActiveCfg = Debug|x86 41 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|ARM.ActiveCfg = Debug|ARM 42 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|ARM.Build.0 = Debug|ARM 43 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|ARM.Deploy.0 = Debug|ARM 44 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|x64.ActiveCfg = Debug|x64 45 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|x64.Build.0 = Debug|x64 46 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|x64.Deploy.0 = Debug|x64 47 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|x86.ActiveCfg = Debug|x86 48 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|x86.Build.0 = Debug|x86 49 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Debug|x86.Deploy.0 = Debug|x86 50 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|Any CPU.ActiveCfg = Release|x86 51 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|ARM.ActiveCfg = Release|ARM 52 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|ARM.Build.0 = Release|ARM 53 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|ARM.Deploy.0 = Release|ARM 54 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|x64.ActiveCfg = Release|x64 55 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|x64.Build.0 = Release|x64 56 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|x64.Deploy.0 = Release|x64 57 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|x86.ActiveCfg = Release|x86 58 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|x86.Build.0 = Release|x86 59 | {D01FEAF5-8747-49D7-A7D1-19DBED5840BE}.Release|x86.Deploy.0 = Release|x86 60 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Debug|Any CPU.ActiveCfg = Debug|Win32 61 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Debug|ARM.ActiveCfg = Debug|ARM 62 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Debug|ARM.Build.0 = Debug|ARM 63 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Debug|x64.ActiveCfg = Debug|x64 64 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Debug|x64.Build.0 = Debug|x64 65 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Debug|x86.ActiveCfg = Debug|Win32 66 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Debug|x86.Build.0 = Debug|Win32 67 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Release|Any CPU.ActiveCfg = Release|Win32 68 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Release|ARM.ActiveCfg = Release|ARM 69 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Release|ARM.Build.0 = Release|ARM 70 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Release|x64.ActiveCfg = Release|x64 71 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Release|x64.Build.0 = Release|x64 72 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Release|x86.ActiveCfg = Release|Win32 73 | {CD55C6F2-DE59-415F-A843-8F413D9A60B0}.Release|x86.Build.0 = Release|Win32 74 | EndGlobalSection 75 | GlobalSection(SolutionProperties) = preSolution 76 | HideSolutionNode = FALSE 77 | EndGlobalSection 78 | EndGlobal 79 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Model/IceServer.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using System.Collections.Generic; 14 | using System.ComponentModel; 15 | using System.Linq; 16 | using System.Xml.Serialization; 17 | using PeerConnectionClient.Utilities; 18 | 19 | namespace PeerConnectionClient.Model 20 | { 21 | /// 22 | /// Class represents an Ice server 23 | /// 24 | //public class IceServer : BindableBase 25 | public class IceServer 26 | { 27 | /// 28 | /// Default constructor for Ice server. 29 | /// 30 | public IceServer() : this(string.Empty, ServerType.STUN) 31 | { 32 | } 33 | 34 | /// 35 | /// Creates an Ice server with specified host, port and server type. 36 | /// 37 | /// The host name of the Ice server. 38 | /// The type of the Ice server. 39 | public IceServer(string host, ServerType type) 40 | { 41 | //Host.PropertyChanged += ValidableProperties_PropertyChanged; 42 | // TODO: validate host values 43 | Host.Value = host; 44 | Type = type; 45 | } 46 | 47 | public enum ServerType { STUN, TURN }; 48 | 49 | /// 50 | /// Make the enumerable available in XAML. 51 | /// 52 | [XmlIgnore] 53 | public IEnumerable Types 54 | { 55 | get 56 | { 57 | return Enum.GetValues(typeof(ServerType)).Cast(); 58 | } 59 | } 60 | 61 | protected ServerType _type; 62 | 63 | /// 64 | /// Ice server type property. 65 | /// 66 | public ServerType Type 67 | { 68 | get 69 | { 70 | return _type; 71 | } 72 | set 73 | { 74 | switch (value) 75 | { 76 | case ServerType.STUN: 77 | _typeStr = "stun"; 78 | break; 79 | case ServerType.TURN: 80 | _typeStr = "turn"; 81 | break; 82 | default: 83 | _typeStr = "unknown"; 84 | break; 85 | } 86 | _type = value; 87 | } 88 | } 89 | 90 | protected string _typeStr; 91 | 92 | /// 93 | /// Ice server type string property. 94 | /// 95 | public string TypeStr 96 | { 97 | get { return _typeStr; } 98 | } 99 | 100 | /// 101 | /// Ice server's host and port. 102 | /// 103 | [XmlIgnore] 104 | public string HostAndPort 105 | { 106 | get { return string.Format("{0}", Host.Value); } 107 | } 108 | 109 | private ValidableIntegerString _port = new ValidableIntegerString(0, 65535); 110 | 111 | /// 112 | /// The Ice server's password. 113 | /// Used with the Username below to connect to the Ice server. 114 | /// 115 | public string Credential { get; set; } 116 | 117 | protected ValidableNonEmptyString _host = new ValidableNonEmptyString(); 118 | 119 | /// 120 | /// Ice server's host (IP). 121 | /// 122 | public ValidableNonEmptyString Host 123 | { 124 | get { return _host; } 125 | set { _host = value; } 126 | } 127 | 128 | /// 129 | /// Username for the Ice server. 130 | /// 131 | public string Username { get; set; } 132 | 133 | [XmlIgnore] 134 | protected bool _valid; 135 | 136 | /// 137 | /// Property to check the validity of Ice server information. 138 | /// 139 | [XmlIgnore] 140 | public bool Valid 141 | { 142 | get { return _valid; } 143 | set { _valid = value; } 144 | } 145 | 146 | 147 | /// 148 | /// Invokes when a property of an Ice server is changed and 149 | /// the new information needs validation. 150 | /// 151 | /// Information about event sender. 152 | /// Details about Property changed event. 153 | void ValidableProperties_PropertyChanged(object sender, PropertyChangedEventArgs e) 154 | { 155 | if (e.PropertyName == "Valid") 156 | { 157 | Valid = Host.Valid; 158 | } 159 | } 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Model/Peer.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using System.Collections.Generic; 14 | using System.Text; 15 | 16 | namespace PeerConnectionClient.Model 17 | { 18 | public class Peer 19 | { 20 | public int Id { get; set; } 21 | public string Name { get; set; } 22 | 23 | public override string ToString() 24 | { 25 | return Id + ": " + Name; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("WebRtcWrapper")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("WebRtcWrapper")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Properties/WebRtcWrapper.rd.xml: -------------------------------------------------------------------------------- 1 | 2 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/ActionCommand.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using System.Windows.Input; 14 | 15 | namespace PeerConnectionClient.Utilities 16 | { 17 | /// 18 | /// Defines an action command. 19 | /// 20 | public class ActionCommand : ICommand 21 | { 22 | public delegate bool CanExecuteDelegate(object parameter); 23 | 24 | private readonly Action _actionExecute; 25 | private readonly CanExecuteDelegate _actionCanExecute; 26 | 27 | /// 28 | /// Constructor. 29 | /// 30 | /// The action to execute. 31 | /// Parameter indicating if the action can be executed. 32 | public ActionCommand(Action actionExecute, CanExecuteDelegate actionCanExecute = null) 33 | { 34 | _actionExecute = actionExecute; 35 | _actionCanExecute = actionCanExecute; 36 | } 37 | 38 | /// 39 | /// Defines the method that determines whether the command can be executed 40 | // in the given context. 41 | /// 42 | /// Data used by the command. 43 | /// True if the action can be executed in the given context. 44 | public bool CanExecute(object parameter) 45 | { 46 | return _actionCanExecute == null || _actionCanExecute(parameter); 47 | } 48 | 49 | /// 50 | /// Defines the method to be called when the command is invoked. 51 | /// 52 | /// Data used by the command. 53 | public void Execute(object parameter) 54 | { 55 | _actionExecute(parameter); 56 | } 57 | 58 | /// 59 | /// Called when the current state of the application is changed 60 | /// and the condition of executing a command could be changed. 61 | /// 62 | public void RaiseCanExecuteChanged() 63 | { 64 | if (CanExecuteChanged != null) 65 | { 66 | CanExecuteChanged(this, null); 67 | } 68 | } 69 | 70 | public event EventHandler CanExecuteChanged; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/BoolToVisConverter.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using Windows.UI.Xaml; 14 | using Windows.UI.Xaml.Data; 15 | 16 | namespace PeerConnectionClient.Utilities 17 | { 18 | /// 19 | /// Class provides functionality to convert from boolean to Visibility. 20 | /// Implements the IValueConverter interface. 21 | /// 22 | public class BoolToVisConverter : IValueConverter 23 | { 24 | /// 25 | /// Converts a boolean to it's negated value. 26 | /// 27 | public bool Negated { get; set; } 28 | 29 | /// 30 | /// See the IValueConverter.Convert(). 31 | /// 32 | public object Convert(object value, Type targetType, object parameter, string language) 33 | { 34 | var result = (bool)value; 35 | result = Negated ? !result : result; 36 | return result ? Visibility.Visible : Visibility.Collapsed; 37 | } 38 | 39 | /// 40 | /// See the IValueConverter.ConvertBack(). 41 | /// 42 | public object ConvertBack(object value, Type targetType, object parameter, string language) 43 | { 44 | if (Negated) 45 | { 46 | return (bool)value ? Visibility.Collapsed : Visibility.Visible; 47 | } 48 | return (bool)value ? Visibility.Visible : Visibility.Collapsed; 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/InvertedBooleanConverter.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using Windows.UI.Xaml.Data; 14 | 15 | namespace PeerConnectionClient.Utilities 16 | { 17 | /// 18 | /// Class to invert the boolean value. 19 | /// 20 | public class InvertedBooleanConverter : IValueConverter 21 | { 22 | /// 23 | /// See IValueConverter.Convert(). 24 | /// 25 | public object Convert(object value, Type targetType, object parameter, string language) 26 | { 27 | return !(bool)value; 28 | } 29 | 30 | /// 31 | /// See IValueConverter.ConvertBack(). 32 | /// 33 | public object ConvertBack(object value, Type targetType, object parameter, string language) 34 | { 35 | return !(bool)value; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/NullToVisibleConverter.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using Windows.UI.Xaml; 14 | using Windows.UI.Xaml.Data; 15 | 16 | namespace PeerConnectionClient.Utilities 17 | { 18 | /// 19 | /// Class to convert a null to a Visibility type. 20 | /// Implements the IValueConverter. 21 | /// 22 | class NullToVisibleConverter : IValueConverter 23 | { 24 | public bool Negated { get; set; } 25 | 26 | /// 27 | /// See IValueConverter.Convert(). 28 | /// 29 | public object Convert(object value, Type targetType, object parameter, string language) 30 | { 31 | return value == null ? Visibility.Collapsed : Visibility.Visible; 32 | } 33 | 34 | /// 35 | /// See IValueConverter.ConvertBack(). 36 | /// 37 | public object ConvertBack(object value, Type targetType, object parameter, string language) 38 | { 39 | return null; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/SdpUtils.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using System.Collections.Generic; 14 | using System.Text.RegularExpressions; 15 | #if ORTCLIB 16 | using Org.Ortc; 17 | using CodecInfo= Org.Ortc.RTCRtpCodecCapability; 18 | #else 19 | using Org.WebRtc; 20 | #endif 21 | 22 | namespace PeerConnectionClient.Utilities 23 | { 24 | /// 25 | /// Utility class to organize SDP negotiation. 26 | /// 27 | class SdpUtils 28 | { 29 | /// 30 | /// Forces the SDP to use the selected audio and video codecs. 31 | /// 32 | /// Session description. 33 | /// Audio codec. 34 | /// Video codec. 35 | /// True if succeeds to force to use the selected audio/video codecs. 36 | public static bool SelectCodecs(ref string sdp, CodecInfo audioCodec, CodecInfo videoCodec) 37 | { 38 | Regex mfdRegex = new Regex("\r\nm=audio.*RTP.*?( .\\d*)+\r\n"); 39 | Match mfdMatch = mfdRegex.Match(sdp); 40 | List mfdListToErase = new List(); //mdf = media format descriptor 41 | bool audioMediaDescFound = mfdMatch.Groups.Count > 1; //Group 0 is whole match 42 | #if ORTCLIB 43 | byte audioCodecId=audioCodec?.PreferredPayloadType ?? 0; 44 | byte videoCodecId=videoCodec?.PreferredPayloadType ?? 0; 45 | #else 46 | int audioCodecId = audioCodec?.Id ?? 0; 47 | int videoCodecId = videoCodec?.Id ?? 0; 48 | #endif 49 | if (audioMediaDescFound) 50 | { 51 | if (audioCodec == null) 52 | { 53 | return false; 54 | } 55 | for (int groupCtr = 1/*Group 0 is whole match*/; groupCtr < mfdMatch.Groups.Count; groupCtr++) 56 | { 57 | for (int captureCtr = 0; captureCtr < mfdMatch.Groups[groupCtr].Captures.Count; captureCtr++) 58 | { 59 | mfdListToErase.Add(mfdMatch.Groups[groupCtr].Captures[captureCtr].Value.TrimStart()); 60 | } 61 | } 62 | if (!mfdListToErase.Remove(audioCodecId.ToString())) 63 | { 64 | return false; 65 | } 66 | } 67 | 68 | mfdRegex = new Regex("\r\nm=video.*RTP.*?( .\\d*)+\r\n"); 69 | mfdMatch = mfdRegex.Match(sdp); 70 | bool videoMediaDescFound = mfdMatch.Groups.Count > 1; //Group 0 is whole match 71 | if (videoMediaDescFound) 72 | { 73 | if (videoCodec == null) 74 | { 75 | return false; 76 | } 77 | for (int groupCtr = 1/*Group 0 is whole match*/; groupCtr < mfdMatch.Groups.Count; groupCtr++) 78 | { 79 | for (int captureCtr = 0; captureCtr < mfdMatch.Groups[groupCtr].Captures.Count; captureCtr++) 80 | { 81 | mfdListToErase.Add(mfdMatch.Groups[groupCtr].Captures[captureCtr].Value.TrimStart()); 82 | } 83 | } 84 | if (!mfdListToErase.Remove(videoCodecId.ToString())) 85 | { 86 | return false; 87 | } 88 | } 89 | 90 | if (audioMediaDescFound) 91 | { 92 | // Alter audio entry 93 | Regex audioRegex = new Regex("\r\n(m=audio.*RTP.*?)( .\\d*)+"); 94 | sdp = audioRegex.Replace(sdp, "\r\n$1 " + audioCodecId); 95 | } 96 | 97 | if (videoMediaDescFound) 98 | { 99 | // Alter video entry 100 | Regex videoRegex = new Regex("\r\n(m=video.*RTP.*?)( .\\d*)+"); 101 | sdp = videoRegex.Replace(sdp, "\r\n$1 " + videoCodecId); 102 | } 103 | 104 | // Remove associated rtp mapping, format parameters, feedback parameters 105 | Regex removeOtherMdfs = new Regex("a=(rtpmap|fmtp|rtcp-fb):(" + String.Join("|", mfdListToErase) + ") .*\r\n"); 106 | sdp = removeOtherMdfs.Replace(sdp, ""); 107 | 108 | return true; 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/ToggleImageConverter.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using System.Diagnostics; 14 | using Windows.UI.Xaml.Data; 15 | 16 | namespace PeerConnectionClient.Utilities 17 | { 18 | public class ToggleImageConverter : IValueConverter 19 | { 20 | public object Convert(object value, Type targetType, object parameter, string language) 21 | { 22 | var isChecked = value as bool?; 23 | var imageName = parameter as string; 24 | Debug.Assert(isChecked != null); 25 | Debug.Assert(imageName != null); 26 | string noPrefix = (isChecked == true) ? "" : "No "; 27 | string pathBeginning = "/Assets/"; 28 | #if WINDOWS_PHONE_APP 29 | pathBeginning = "ms-appx:///Assets/"; 30 | #endif 31 | return string.Format("{0}{1}{2}", pathBeginning, noPrefix, imageName); 32 | } 33 | 34 | public object ConvertBack(object value, Type targetType, object parameter, string language) 35 | { 36 | throw new NotImplementedException(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/UI/ErrorControl.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | 17 | 18 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/UI/ErrorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using Windows.UI.Xaml; 13 | 14 | namespace PeerConnectionClient.Controls 15 | { 16 | public sealed partial class ErrorControl 17 | { 18 | /// 19 | /// Creates an ErrorControl instance. 20 | /// 21 | public ErrorControl() 22 | { 23 | InitializeComponent(); 24 | } 25 | 26 | /// 27 | /// Inner content property for error control element. 28 | /// 29 | public UIElement InnerContent 30 | { 31 | get { return (UIElement)GetValue(InnerContentProperty); } 32 | set { SetValue(InnerContentProperty, value); } 33 | } 34 | 35 | public static readonly DependencyProperty InnerContentProperty = 36 | DependencyProperty.Register("InnerContent", typeof(UIElement), 37 | typeof(ErrorControl), new PropertyMetadata(null, InnerContentChanged)); 38 | 39 | /// 40 | /// Property changed event handler. 41 | /// 42 | /// Dependency object. 43 | /// Details about DependencyPropertyChanged event. 44 | private static void InnerContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 45 | { 46 | ((ErrorControl)d).MyPresenter.Content = e.NewValue as UIElement; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/ValidableBase.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System.Xml.Serialization; 13 | 14 | namespace PeerConnectionClient.Utilities 15 | { 16 | /// 17 | /// A base class for validable values. 18 | /// 19 | /// The type of the value. 20 | //public abstract class ValidableBase : BindableBase 21 | public abstract class ValidableBase 22 | { 23 | private T _value; 24 | 25 | /// 26 | /// The value to validate. 27 | /// 28 | public T Value 29 | { 30 | get { return _value; } 31 | set 32 | { 33 | _value = value; 34 | Validate(); 35 | } 36 | } 37 | 38 | [XmlIgnore] 39 | bool _valid = true; 40 | 41 | /// 42 | /// Property to indicate if the value is valid. 43 | /// 44 | [XmlIgnore] 45 | public bool Valid 46 | { 47 | get { return _valid; } 48 | protected set 49 | { 50 | _valid = value; 51 | } 52 | } 53 | 54 | /// 55 | /// Validate that the value meets the requirements for the 56 | /// specific validable classes. 57 | /// 58 | abstract protected void Validate(); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/ValidableIntegerString.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | 14 | namespace PeerConnectionClient.Utilities 15 | { 16 | /// 17 | /// Class to validate that the string member variable can be converted 18 | /// to an integer in range [minValue, maxValue]. 19 | /// 20 | public class ValidableIntegerString : ValidableBase 21 | { 22 | // Minimum allowed value for the integer 23 | private readonly int _minValue; 24 | 25 | // Maximum allowed value for the integer 26 | private readonly int _maxValue; 27 | 28 | /// 29 | /// Default constructor to set minimum and maximum integer default values. 30 | /// 31 | public ValidableIntegerString() 32 | { 33 | _minValue = 0; 34 | _maxValue = 100; 35 | } 36 | 37 | /// 38 | /// Constructor 39 | /// 40 | /// Minimum allowed value for the integer. 41 | /// Maximum allowed value for the integer. 42 | public ValidableIntegerString(int minValue = 0, int maxValue = 100) 43 | { 44 | _minValue = minValue; 45 | _maxValue = maxValue; 46 | } 47 | 48 | /// 49 | /// Constructor. 50 | /// 51 | /// Default integer value. 52 | /// Minimum allowed value for the integer. 53 | /// Maximum allowed value for the integer. 54 | public ValidableIntegerString(int defaultValue, int minValue = 0, int maxValue = 100) 55 | : this(minValue, maxValue) 56 | { 57 | Value = defaultValue.ToString(); 58 | } 59 | 60 | /// 61 | /// Constructor 62 | /// 63 | /// Default integer value. 64 | public ValidableIntegerString(string defaultValue) 65 | { 66 | Value = defaultValue; 67 | } 68 | 69 | /// 70 | /// Validates that the string value can be converted to an integer 71 | /// and the intereger will be in range [minValue, maxValue]. 72 | /// 73 | override protected void Validate() 74 | { 75 | try 76 | { 77 | var intVal = Convert.ToInt32(Value); 78 | if (intVal >= _minValue && intVal <= _maxValue) 79 | { 80 | Valid = true; 81 | } 82 | else 83 | { 84 | Valid = false; 85 | } 86 | } 87 | catch (Exception) 88 | { 89 | Valid = false; 90 | } 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/ValidableNonEmptyString.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | namespace PeerConnectionClient.Utilities 13 | { 14 | /// 15 | /// Class to validate that the string member variable is not empty. 16 | /// 17 | public class ValidableNonEmptyString : ValidableBase 18 | { 19 | /// 20 | /// Default constructor initializes Value with an empty string. 21 | /// 22 | public ValidableNonEmptyString() 23 | { 24 | Value = ""; 25 | } 26 | 27 | /// 28 | /// Constructor initializes the Value with the string value. 29 | /// 30 | /// String value 31 | public ValidableNonEmptyString(string value = "") 32 | { 33 | Value = value; 34 | } 35 | 36 | /// 37 | /// Overrides the ValidableBase.Validate() method. 38 | /// Validates the string is not empty. 39 | /// 40 | override protected void Validate() 41 | { 42 | Valid = !string.IsNullOrEmpty(Value); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/VideoCaptureFormat.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | namespace PeerConnectionClient.Utilities 13 | { 14 | /// 15 | /// Enumerable representing video capture resolution. 16 | /// 17 | public enum CapRes 18 | { 19 | Default = 0, 20 | _640_480 = 1, 21 | _320_240 = 2, 22 | }; 23 | 24 | /// 25 | /// Enumerable representing video frames per second. 26 | /// 27 | public enum CapFPS 28 | { 29 | Default = 0, 30 | _5 = 1, 31 | _15 = 2, 32 | _30 = 3 33 | }; 34 | 35 | /// 36 | /// Class representing a combo box item with 37 | /// video capture enumerable value. 38 | /// 39 | public class ComboBoxItemCapRes 40 | { 41 | public CapRes ValueCapResEnum { get; set; } 42 | public string ValueCapResString { get; set; } 43 | } 44 | 45 | /// 46 | /// Class representing a combo box item with 47 | /// video frames per second enumerable value. 48 | /// 49 | public class ComboBoxItemCapFPS 50 | { 51 | public CapFPS ValueCapFPSEnum { get; set; } 52 | public string ValueCapFPSString { get; set; } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/Utilities/XmlSerializer.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System.IO; 13 | using System.Text; 14 | using System.Xml; 15 | using System.Xml.Serialization; 16 | 17 | namespace PeerConnectionClient.Utilities 18 | { 19 | internal static class XmlSerializer 20 | { 21 | /// 22 | /// Serialize to xml. 23 | /// 24 | public static string ToXml(T value) 25 | { 26 | XmlSerializer serializer = new XmlSerializer(typeof(T)); 27 | StringBuilder stringBuilder = new StringBuilder(); 28 | XmlWriterSettings settings = new XmlWriterSettings 29 | { 30 | Indent = true, 31 | OmitXmlDeclaration = true, 32 | }; 33 | 34 | using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, settings)) 35 | { 36 | serializer.Serialize(xmlWriter, value); 37 | } 38 | return stringBuilder.ToString(); 39 | } 40 | 41 | /// 42 | /// Deserialize from xml. 43 | /// 44 | public static T FromXml(string xml) 45 | { 46 | XmlSerializer serializer = new XmlSerializer(typeof(T)); 47 | T value; 48 | using (StringReader stringReader = new StringReader(xml)) 49 | { 50 | object deserialized = serializer.Deserialize(stringReader); 51 | value = (T)deserialized; 52 | } 53 | 54 | return value; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/WebRtcWrapper.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1857162F-96CC-451F-A4E2-3616207943AB} 8 | Library 9 | Properties 10 | WebRtcWrapper 11 | WebRtcWrapper 12 | en-US 13 | UAP 14 | 10.0.14393.0 15 | 10.0.14393.0 16 | 14 17 | 512 18 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 19 | 20 | 21 | AnyCPU 22 | true 23 | full 24 | false 25 | bin\Debug\ 26 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 27 | prompt 28 | 4 29 | 30 | 31 | AnyCPU 32 | pdbonly 33 | true 34 | bin\Release\ 35 | TRACE;NETFX_CORE;WINDOWS_UWP 36 | prompt 37 | 4 38 | 39 | 40 | x86 41 | true 42 | bin\x86\Debug\ 43 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 44 | ;2008 45 | full 46 | x86 47 | false 48 | prompt 49 | 50 | 51 | x86 52 | bin\x86\Release\ 53 | TRACE;NETFX_CORE;WINDOWS_UWP 54 | true 55 | ;2008 56 | pdbonly 57 | x86 58 | false 59 | prompt 60 | 61 | 62 | ARM 63 | true 64 | bin\ARM\Debug\ 65 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 66 | ;2008 67 | full 68 | ARM 69 | false 70 | prompt 71 | 72 | 73 | ARM 74 | bin\ARM\Release\ 75 | TRACE;NETFX_CORE;WINDOWS_UWP 76 | true 77 | ;2008 78 | pdbonly 79 | ARM 80 | false 81 | prompt 82 | 83 | 84 | x64 85 | true 86 | bin\x64\Debug\ 87 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 88 | ;2008 89 | full 90 | x64 91 | false 92 | prompt 93 | 94 | 95 | x64 96 | bin\x64\Release\ 97 | TRACE;NETFX_CORE;WINDOWS_UWP 98 | true 99 | ;2008 100 | pdbonly 101 | x64 102 | false 103 | prompt 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 14.0 133 | 134 | 135 | 136 | xcopy /F /R /I /Y $(TargetDir)$(TargetName)$(TargetExt) $(SolutionDir)..\..\Assets\Plugins\WebRtcWrapper\ 137 | xcopy /F /R /I /Y $(TargetDir)$(TargetName).pdb $(SolutionDir)..\..\Assets\Plugins\WebRtcWrapper\ 138 | 139 | xcopy /F /R /I /Y $(TargetDir)$(TargetName)$(TargetExt) $(SolutionDir)..\..\Build\UWP\UnityWithWebRTC\Unprocessed\ 140 | xcopy /F /R /I /Y $(TargetDir)$(TargetName).pdb $(SolutionDir)..\..\Build\UWP\UnityWithWebRTC\Unprocessed\ 141 | 142 | 149 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/WebRtcWrapper/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.3.3", 4 | "WebRtc": "1.54.2" 5 | }, 6 | "frameworks": { 7 | "uap10.0": {} 8 | }, 9 | "runtimes": { 10 | "win10-arm": {}, 11 | "win10-arm-aot": {}, 12 | "win10-x86": {}, 13 | "win10-x86-aot": {}, 14 | "win10-x64": {}, 15 | "win10-x64-aot": {} 16 | } 17 | } -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/App.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // This code is licensed under the MIT License (MIT). 5 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 6 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 7 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 8 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 9 | // 10 | //********************************************************* 11 | 12 | using System; 13 | using System.Collections.Generic; 14 | using System.IO; 15 | using System.Linq; 16 | using System.Runtime.InteropServices.WindowsRuntime; 17 | using Windows.ApplicationModel; 18 | using Windows.ApplicationModel.Activation; 19 | using Windows.Foundation; 20 | using Windows.Foundation.Collections; 21 | using Windows.UI.Xaml; 22 | using Windows.UI.Xaml.Controls; 23 | using Windows.UI.Xaml.Controls.Primitives; 24 | using Windows.UI.Xaml.Data; 25 | using Windows.UI.Xaml.Input; 26 | using Windows.UI.Xaml.Media; 27 | using Windows.UI.Xaml.Navigation; 28 | 29 | namespace XamlTestApp 30 | { 31 | /// 32 | /// Provides application-specific behavior to supplement the default Application class. 33 | /// 34 | sealed partial class App : Application 35 | { 36 | /// 37 | /// Initializes the singleton application object. This is the first line of authored code 38 | /// executed, and as such is the logical equivalent of main() or WinMain(). 39 | /// 40 | public App() 41 | { 42 | this.InitializeComponent(); 43 | this.Suspending += OnSuspending; 44 | } 45 | 46 | /// 47 | /// Invoked when the application is launched normally by the end user. Other entry points 48 | /// will be used such as when the application is launched to open a specific file. 49 | /// 50 | /// Details about the launch request and process. 51 | protected override void OnLaunched(LaunchActivatedEventArgs e) 52 | { 53 | Frame rootFrame = Window.Current.Content as Frame; 54 | 55 | // Do not repeat app initialization when the Window already has content, 56 | // just ensure that the window is active 57 | if (rootFrame == null) 58 | { 59 | // Create a Frame to act as the navigation context and navigate to the first page 60 | rootFrame = new Frame(); 61 | 62 | rootFrame.NavigationFailed += OnNavigationFailed; 63 | 64 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 65 | { 66 | //TODO: Load state from previously suspended application 67 | } 68 | 69 | // Place the frame in the current Window 70 | Window.Current.Content = rootFrame; 71 | } 72 | 73 | if (e.PrelaunchActivated == false) 74 | { 75 | if (rootFrame.Content == null) 76 | { 77 | // When the navigation stack isn't restored navigate to the first page, 78 | // configuring the new page by passing required information as a navigation 79 | // parameter 80 | rootFrame.Navigate(typeof(MainPage), e.Arguments); 81 | } 82 | // Ensure the current window is active 83 | Window.Current.Activate(); 84 | } 85 | } 86 | 87 | /// 88 | /// Invoked when Navigation to a certain page fails 89 | /// 90 | /// The Frame which failed navigation 91 | /// Details about the navigation failure 92 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e) 93 | { 94 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName); 95 | } 96 | 97 | /// 98 | /// Invoked when application execution is being suspended. Application state is saved 99 | /// without knowing whether the application will be terminated or resumed with the contents 100 | /// of memory still intact. 101 | /// 102 | /// The source of the suspend request. 103 | /// Details about the suspend request. 104 | private void OnSuspending(object sender, SuspendingEventArgs e) 105 | { 106 | var deferral = e.SuspendingOperation.GetDeferral(); 107 | //TODO: Save application state and stop any background activity 108 | deferral.Complete(); 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/StoreLogo.png -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ritchielozada/UnityWithWebRTC/6b46a994c4ddabc8d952c68359ce6ff057690862/ExternalProjects/WebRtcIntegration/XamlTestApp/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /ExternalProjects/WebRtcIntegration/XamlTestApp/MainPage.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |